Використання компонента Memo

У деяких випадках для введення масиву можна використовувати компонент 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-поля