Табличні величини та алгоритми їх опрацювання > Табличні величини > Уведення та виведення значень табличної величини

Уведення та виведення значень табличної величини

Для введення та виведення значень елементів табличної величини в середовищі Lazarus можна скористатися багаторядковим текстовим полем (компонент (елемент керування) TMemo на вкладці Standard), яке можна розмістити на формі так само, як й інші компоненти (мал. 1.).

TMemo
Мал. 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).

Завдання 1
Мал. 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;