Для введення та виведення значень елементів табличної величини в середовищі Lazarus можна скористатися багаторядковим текстовим полем (компонент (елемент керування) TMemo на вкладці Standard), яке можна розмістити на формі так само, як й інші компоненти (мал. 1.).
Мал. 1. Багаторядкове текстове поле і його властивості
Основне призначення компонента TMemo — робота з великою кількістю рядків (введення, відображення і редагування текстового матеріалу).
Для роботи з буфером обміну можна використовувати загальноприйняті гарячі клавіші: Ctrl + X — вирізати, Ctrl + C — копіювати; Ctrl + V — вставити.
Розглянемо властивості багаторядкового текстового поля:
Таблиця 1. Властивості елемента TMemo
Властивість
Опис
Name
Ім’я компонента. Використовується в програмі для доступу до компонента і його властивостей, зокрема для доступу до тексту, введеного в поле.
Text
Текст, що знаходиться в полі TMemo. Розглядається як єдине ціле.
Lines
Масив рядків, відповідний вмісту поля. Доступ до рядка здійснюється за номером. Рядки нумеруються з нуля.
Lines.Count
Кількість рядків тексту в поле TMemo.
Left
Відстань від лівої межі поля до лівої межі форми.
Top
Відстань від верхньої межі поля до верхньої межі форми.
Width
Ширина поля.
Height
Висота поля.
Font
Шрифт, що використовується для відображення тексту.
ParentFont
Ознака успадкування властивостей шрифту батьківського елемента.
WantReturns
Клавіша для введення кінця рядка: TRUE — клавіша ENTER; FALSE — поєднання клавіш CTRL + ENTER.
WordWrap
Перехід в початок наступного рядка при введенні довгих рядків: TRUE — проводиться автоматично; FALSE — не проводиться. Прі ввімкненій горизонтальній смузі прокрутки ця властивість ігнорується.
ScrollBar
Використання смуги прокрутки, якщо текст великий і не поміщається в компоненті TMemo:
ssNone — смуги прокрутки відсутні;
ssHorizontal — встановлено горизонтальна прокрутка;
ssVertical — встановлено вертикальна прокрутка;
ssBoth — встановлені дві смуги прокрутки.
ReadOnly
Дозволяє або забороняє редагування тексту. (Програмно все одно текст можна додавати).
Введення даних за допомогою поля TMemo зводиться до циклу, в якому, за допомогою властивості Lines, зчитуються рядки тексту. Наприклад:
Для поля TMemo із ім'ям Memo1
procedure TForml.ButtonlClick(Sender: TObject);
var a: array [0..9] of real; i: integer;
begin
for i := 0 to 9 do
a[i] := Memol.Lines[i]; // дані з рядків багаторядкового текстового поля присвоїти відповідним елементам табличної величини a
end;
Для введення числових величин дані з рядків переводять у числа за допомогою функції StrToFloat. Наприклад:
Для поля TMemo із ім'ям Memo1
procedure TForml.ButtonlClick(Sender: TObject);
var a: array [0..9] of real; i: integer;
begin
for i := 0 to 9 do
a[i] := StrToFloat(Memol.Lines[i]); // дані з рядків багаторядкового текстового поля перевести в числа та присвоїти відповідним елементам табличної величини a
end;
Для виведення табличної величини за допомогою поля TMemo використовують метод Lines.Append. Цей метод дозволяє додавати до тексту в багаторядковому полі новий рядок. Тому застосовуючи цей метод в циклі можна вивести табличну величину в текстове поле TMemo. Перед виведенням в багаторядкове текстове поле його слід очистити за допомогою методу Clear. Наприклад:
Для поля TMemo із ім'ям Memo1
procedure TForml.ButtonlClick(Sender: TObject);
var a: = ["один","два","три","чотири","п'ять","шість","сім","вісім","дев'ять"]; i: integer;
begin
Memo1.Clear; //очистити багаторядкове текстове поле
for i := 0 to 9 do
Memo1.Lines.Append(a[i]); // вивести значення елементів табличної величини в рядки другого багаторядкового текстового поля
end;
Для виведення числових величин дані з чисел переводять у рядки за допомогою функції FloatToStr. Наприклад:
Для поля TMemo із ім'ям Memo1
procedure TForml.ButtonlClick(Sender: TObject);
var a: = [1,2,3,4,5,6,7,8,9]; i: integer;
begin
Memo1.Clear; //очистити багаторядкове текстове поле
for i := 0 to 9 do
Memo1.Lines.Append(FloatToStr(a[i])); // вивести значення елементів табличної величини в рядки другого багаторядкового текстового поля
end;
Завдання 1. Ввести значення елементів табличної величини з 10 чисел, що містяться в рядках багаторядкового текстового поля, піднести ці числа до квадрата і вивести їх в інше багаторядкове текстове поле.
Рішення
Побудова форми.
Розмістимо на формі два багаторядкових текстових поля з іменами Memo1 і Memo2 та встановимо для них значення властивостей Height = 180, ScrollBars = ssVertical. Розмістимо на формі також кнопку, установимо для неї Caption = ‘До квадрата’ (мал. 2).
Мал. 2. Вікно виконання проекту
Написання коду.
Створимо обробник події Click для кнопки.
procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of real; i: integer;
begin
for i := 0 to 9 do
a[i] := StrToFloat(Memo1.Lines[i]); // дані з рядків першого багаторядкового текстового поля перевести в числа і присвоїти відповідним елементам табличної величини
for i := 0 to 9 do
a[i] := a[i] * a[i]; // піднести значення елементів табличної величини до квадрата
Memo2.Clear; // очистити друге багаторядкове текстове поле
for i := 0 to 9 do
Memo2.Lines.Append(FloatToStr(a[i])); // вивести значення елементів табличної величини в рядки другого багаторядкового текстового поля
end;