У деяких випадках для введення масиву можна використовувати компонент Memo. Компонент Memo дозволяє вводити текст, що складається з досить великої кількості рядків, тому його зручно використовувати для введення символьного масиву. Компонент Memo додається в форму звичайним чином. Значок компонента знаходиться на вкладці Standard (рис. 5.4).
Рис. 5.4. Компонент Memo
У табл. 5.3 перераховані деякі властивості компоненту Memo.
Таблиця 5.3. Властивості компонента Memo
Властивість | Визначає |
Name | Ім’я компонента. використовується в програмі для доступу до властивостей компонента |
Text | Текст, що знаходиться в полі Memo. Розглядається як єдине ціле |
Lines | Текст, що знаходиться в полі Memo. Розглядається як сукупність рядків. Доступ до рядка здійснюється за номером |
Lines .Count | Кількість рядків тексту в поле Memo |
Left | Відстань від лівої межі поля до лівої межі форми |
Top | Відстань від верхньої межі поля до верхньої межі форми |
Height | Висоту поля |
Width | Ширину поля |
Font | Шрифт, використовуваний для відображення тексту, що вводиться |
ParentFont | Ознака успадкування властивостей шрифту батьківської форми |
ри використанні компонента Memo для введення масиву значення кожного елемента масиву слід вводити в окремій рядку і після введення кожного елемента масиву натискати клавішу “Enter “ .
Отримати доступ до об’єктів в поле Memo рядку тексту можна за допомогою властивості Lines, вказавши в квадратних дужках номер потрібного рядка (рядка нумеруються з нуля).
Наступна програма, текст якої наведений у лістингу 5.5, демонструє використання компонента Memo для введення символьного масиву.
Основний цикл процедури введення символьного масиву з компоненту Memo може виглядати так:
for i: = l to SIZE do a [I]: = Memol.Lines [i];
де:
- SIZE – іменована константа, визначає розмір масиву;
- а – масив;
- Memol – ім’я Memo-компонента;
- Lines – властивість компонента Memo, що представляє собою масив, кожен елемент якого містить один рядок що знаходиться в полі Memo тексту.
Форма програми приведена на рис. 5.5. Крім поля Memo вона містить командну кнопку (Buttonl), при натисканні на якій виконується введення значень елементів масиву з поля Memo.
Рис. 5.5. Діалогове вікно програми Введення масиву
Лістинг 5.5. введення масиву рядків з компонента Memo
unit fr_memo_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls; type TForm1 = Class (TForm) Memo1: TMemo; Button1: TButton; Label1: TLabel; procedure ButtonlClick (Sender: TObject); private { Private declarations} public {Public declarations} end; var Forml: TForm1; implementation ($ R * .DFM} procedure TForml .ButtonlClick (Sender: TObject); const SIZE = 5; // розмір масиву var a: array [l..SIZE] of string [30]; // масив n: integer; // кількість рядків, введених в поле Memo i: integer; // індекс елемента масиву st : string; begin n: = Memo1.Lines.Count; if n = 0 then begin ShowMessage ( 'Вихідні дані не введені! '); Exit; // вихід з процедури обробки події end; // в поле Memo є текст if n > SIZE then begin ShowMessage ( 'Кількість рядків перевищує розмір масиву. '); n: = SIZE; // будемо вводити тільки перші SIZE рядків end; for i: = 1 to n do a [i]: = Form1.Memol.Lines [i-1]; // рядка Memo пронумеровані з нуля // вивід масиву в вікно повідомлення if n > 0 then begin st: = 'Введений масив: '+ # 13; for i: = 1 to n do st: = st + IntToStr (i) + ' '+ A [i] + f13; ShowMessage (st); end; end; end.
Основну роботу виконує процедура TForm1.Button1Click, яка спочатку перевіряє, чи є в полі Memo1 текст. Якщо текст є (в цьому випадку значення властивості Lines.Count більше нуля), то процедура порівнює кількість введених рядків і розмір масиву. Якщо це кількість перевищує розмір масиву, то програма змінює значення п, тим самим готує введення тільки перших SIZE рядків.
На рис. 5.6 наведено вид діалогового вікна програми Введення масиву. Після клацання на командній кнопці Введення з’являється вікно (рис. 5.7), яке містить значення елементів масиву, отримані з Memo-поля.
Рис. 5.6. Вікно програми Введення масиву
Рис. 5.7. Масив, введений з Memo-поля