Компонент Memo
є вікном редагування багаторядкового тексту. Ви вже працювали з властивістю Text компонента Memo, яка дозволяє отримати доступ до тексту як до цілого:
Memol.Text := 'Це текстовий рядок у вікні редагування';
Ознайомимось із властивостями компонента Memo, які дозволяють працювати з масивами рядків.
Властивості компонента Memo
Назва |
Призначення |
Lines |
Містить список наявних елементів |
Lines.Count |
Визначає кількість елементів у списку Lines. Елементи мають номери від 0 до Lines.Count - 1 |
ScrollBars |
Визначає наявність смуг прокручування |
Текст у полі Memo розміщується по рядках. Рядки в списку Memo утворюють масив Lines типу TString.
Щоб увести в поле Memo рядки в режимі розробки, потрібно:
1) виділити на формі елемент керування Memo (рис. 33.1);
2) у вікні Інспектор об'єктів клацнути кнопку
праворуч від властивості Lines;
3) у вікні Редактор рядків увести рядки (рис. 33.2);
4) клацнути кнопку ОК.
Після клацання кнопки ОК вміст вікна відобразиться в полі Memo.
Тепер до i-го рядка можна звернутися за його індексом Memo1.Lines[i].
У вікні Редактор рядків можна впорядкувати рядки за зростанням або спаданням (рис. 33.3, а). Результат упорядкування рядків за зростанням наведено на рис. 33.3, б.
Упорядкування елементів списку Memol.Lines відбувається у лексикографічному порядку, оскільки вони мають тип String.
Додавання рядків під час виконання програми
Додавати елементи до списку Memol.Lines можна в ході виконання програми. Значення кожного елемента списку слід уводити в окремому рядку поля Memo і після введення кожного рядка натискати клавішу Enter.
На етапі розробки інтерфейсу за допомогою Редактора рядків до поля Memol додано 4 рядки (рис. 33.4, а). У процедурі обробки події onclick для кнопки у поле Editi виводиться значення властивості Memol.Lines.Count. Якщо в ході виконання програми в поле Memol з клаватури додати новий рядок, значення властивості Memol.Lines.Count збільшиться на одиницю (рис. 33.4, б).
Значення Ьіпєб[і] доступні як для читання, так і для запису. Тому текст у полі Мето можна редагувати не тільки за допомогою клавіатури, а й програмним способом.
Задати значення нульовому елементу масиву МетоІ.ипеБ (рис. 33.5):
Мето1.ипе$[0] := 'Перший рядок';
Методи компонента Memo
Назва |
Виклик методу |
Призначення |
Add() |
Memo1 .Lines.Add(Text) |
Додавання нового рядка Text у кінець списку |
Insert() |
Memo1.Lines.Insert(N, Text) |
Вставка рядка Text перед рядком з індексом N |
Delete() |
Memo1 .Lines.Delete(N) |
Вилучення рядка з індексом N |
Clear |
Memo1.Clear |
Очищення вмісту поля Memo |
Додати елементи до масиву Memol.Lines:
Memo1.Lines.Add(^e буде останній рядок');
Memo1.Lines.Insert(2, 'Цей рядок буде третім'); // Відлік від нуля!
Вилучити рядок з індексом і:
Memol.Lines.Delete(i);
Вивести значення елементів масиву words до поля Memol. var words: array[1..5] of String; i: Integer; begin {...}
Memol.Clear;
For i := 1 to 5 do
Memol.Lines. Add(words[i]);
end;
Знайти суму цілих чисел, які вводяться з клавіатури у поле Memo. Кількість чисел не перевищує 100 (рис. 33.6).
var Posl: array[1..100] of Integer; { масив для збереження чисел }
N, i, Sum: Integer; begin
N := Memol.Lines.Count; // кількість рядків { знаходження суми }
For i := 1 to N do Posl[i] := StrToInt(Memo1.Lines[i - 1]); Sum := 0;
For i :=1 to N do Sum := Sum + Posl[i];
Edit1.Text := IntToStr(Sum); end;
Знайти рядок '32' в масиві Memo1.Lines (рис. 33.7): var i: Integer; begin
For i := 0 to Memo1.Lines.Count - 1 do begin
If Memo1.Lines[i] = '32' Then Edit1.Text := 'Знайдено в рядку ' + IntToStr(i); end;
end;
Таким чином, компонент Memo є зручним інструментом для введення і виведення значень елементів одновимірного масиву.
Питання для самоперевірки
1. Яка властивість компонента Memo містить список наявних елементів?
2. Як визначити кількість елементів у списку Memol. Lines?
3. Як запрограмувати додавання елемента в кінець списку поля Memol?
4. Як запрограмувати вставляння елемента перед п’ятим рядком у списку поля Memol?
5. Запишіть оператор, призначений для виведення п’ятого рядка зі списку Memol у текстове поле Editi.
6. Складіть програму для розв’язання задачі: «Масив Numbers[1..10] заповнити випадковими цілими числами в межах від 1 до 100 і вивести значення елементів масиву в поле Memol. Визначити, в якому рядку списку Memol знаходиться елемент, що дорівнює цілому числу К (значення К уводиться в поле Editi).»
Вправа 33
Створити програму-перекладач з української мови на англійську.
1) Створіть новий проект. Змініть значення властивості Caption форми і розмістіть на формі два компоненти Memo згідно з рисунком. Властивості ScrollBars елементів Memol, Memo2 надайте значення ssVertical для появи вертикальних смуг прокручування. За допомогою Редактора рядків масив Memol.Lines заповніть українськими словами, масив Memo2.Lines — їхніми англійськими відповідниками.
Розмістіть на формі компоненти Label, Button, Edit і налаштуйте їхні властивості згідно з рисунком.
2) Опишіть глобальні змінні для збереження масивів слів: var Forml: TForml;
Eng_words, Ukr_words: array[0..100] of String;
3) Створіть процедуру обробки події onclick для кнопки Заповнити масиви слів. Запишіть оператори для заповнення масивів Ukr_words і Eng_words масивами
Memo1.Lines і Memo2.Lines:
var i: Integer;
begin
For i := 0 to Memo1.Lines.Count – 1 do
begin
Ukr_words[i] := Memo1.Lines[i];
Eng_words[i] := Memo2.Lines[i];
end;
end;
4) Створіть процедуру обробки події onclick для кнопки Перекласти англійською. Запишіть оператори для перекладу українського слова на англійську мову:
var i: Integer; S: String;
begin
S := Edit1.Text; // вводимо слово, яке бажаємо перекласти
i := –1;
Repeat i := i + 1; // збільшуємо індекс елемента
Until Ukr_words[i] = S; // поки не знайдемо слово S
Edit2.Text := Eng_words[i]; { виводимо елемент із масиву англійських
слів із таким індексом, як у слова S у масиві українських слів }
end;
5) Створіть процедуру обробки події Onйick для кнопки Перекласти українською.
6) Перевірте роботу програми. Збережіть проект у папці Вправа 33. Завершіть роботу за комп’ютером.
Комп'ютерне тестування
Виконайте тестове завдання 33 із автоматичною перевіркою на сайті «Інтерактивне навчання».
Це матеріал з підручника Інформатика 9 клас Бондаренко