Теорія:

Компонент Memo 5.PNG є вікном редагування багаторядкового тексту. Піктограма компоненту знаходиться на вкладці Standard.
m4.PNG
Властивості компонента Memo
Назва
Призначення
TextЗберігає значення текстового рядка, що уведений у вікно. Дозволяє працювати з текстом у вікні як єдиним цілим
LinesМістить у вигляді масиву список наявних елементів, нумерація яких
починається з 0
Lines.CountВизначає кількість елементів у масиві Lines
ScrollBarsВизначає наявність смуги прокручування
Приклад:
Властивість Text дозволяє працювати з текстом у вікні Memo як єдиним цілим:
Memo1.Text := ‘Це текстовий рядок у вікні редагування’;
Створення масиву рядків
Текст у компоненті Memo розміщується по рядках. Рядки в редакторі Memo є об’єктами Lines[i] типу String, де i — номер рядка, відлік починається з нуля.
Для створення масиву рядків треба:
1)  виділити на формі елемент керування Memo;
2)  у вікні Інспектор об’єктів клацнути кнопку 8.PNGправоруч від властивості Lines;
3)  у вікні Редактор рядків ввести рядки;
4) натиснути кнопку ОК.
Редактор рядків надає можливість упорядкування рядків (елементів масиву Lines) за зростанням або спаданням. 7.PNG
Таким чином, створюється масив рядків, що відобразиться в полі Memo. Звернутися до і­—го рядка можна як до індексованої змінної Memo1.Lines[і].
9.PNG
Редагування масиву рядків у ході виконання програми
Додавати елементи до масиву Memo1.Lines можна в ході виконання програми. Значення кожного елемента масиву слід уводити в окремому рядку і після введення кожного рядка натискати клавішу Enter.
Приклад:
На етапі розробки інтерфейсу за допомогою Редактора рядків у поле Memo1 додано 5 рядків. У процедурі обробки події OnClick для кнопки у поле Еdit1 виводиться значення властивості Memo1.Lines.Count.
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=IntToStr(Memo1.Lines.Count);
end; 
Якщо додати з клаватури в поле Memo1 новий рядок, значення властивості Memo1.Lines.Count збільшується на одиницю.
10.PNG
Текст у вікні Memo можна редагувати програмним способом.
Приклад:
Задати значення нульовому елементу масиву Memo1.Lines:
Memo1.Lines[0] := ‘Перший рядок’;

11.PNG
Методи компонента Memo
Для створення нових рядків слугують методи Add() і Insert():
Memo1.Lines.Add() — додавання нового рядка в кінець списку;
Memo1.Lines.Insert(N, Text) — вставка рядка Text перед рядком з індексом N.
Приклад:
Додати елементи до масиву Memo1.Lines:
Memo1.Lines.Add(‘Це буде останній рядок’);
Memo1.Lines.Insert(2, ‘Цей рядок буде третій’); // Відлік від нуля!
Для вилучення рядка призначений метод Delete() :
Memo1.Lines.Delete(i); // Вилучення рядка з індексом i
Для очищення всього вмісту поля Memo призначений метод Сlear:
Мemo1.Сlear;