Уроки 57–58 · 2 урока · Н. И. Тайлаков (общий редактор), А. Б. Ахмедов, М. Д. Пардаева, А. А. Абдуганиев, У. М. Мирсанов. Информатика и информационные технологии, 10 класс, 1-е издание. «Extremum-Press», Ташкент, 2017
57
Управляющий объект Memo
Учебник: с. 127–131
ЦельИспользует объект Memo: различает свойства Text и Lines, применяет Lines.Add, Clear, Count, Insert, Delete, SaveToFile и LoadFromFile и показывает многострочный результат в Memo.
Новые слова
Memo: элемент управления для многих строк текста · MemoLines: список строк текста в Memo, счёт с 0 · LinesLines.Add: метод, добавляющий новую строку в конец · Lines.AddSaveToFile: метод, записывающий строки в текстовый файл · SaveToFile
Объяснение
Edit предназначен для одной строки текста, а для многострочных данных используют Memo (вкладка Standard): он работает как простой текстовый редактор, а если длинный текст не помещается, появляются полосы прокрутки (ScrollBars). Если пользователь не должен его менять, установите ReadOnly = True. К тексту обращаются через два свойства: Text – весь текст как одна строка (строки разделены sLineBreak) и Lines – список строк, пронумерованных с 0. Методы Lines: Add('text') – добавляет строку в конец, Insert(i, 'text') – вставляет перед строкой i, Delete(i) – удаляет её, Clear – очищает всё; Lines.Count – количество строк. SaveToFile('natija.txt') записывает текст в файл, а LoadFromFile('natija.txt') читает его; указывайте только простое имя файла в папке вашего проекта, потому что существующий файл перезаписывается и старый теряется, а LoadFromFile выдаёт ошибку, если файла нет. Предел размера текста в Memo зависит от версии Windows, поэтому не загружайте очень большие файлы.
Примеры
Делители числа n: procedure TForm1.Button1Click(Sender: TObject); ⏎ var i, n: Integer; ⏎ begin ⏎ n := StrToInt(Edit1.Text); ⏎ Memo1.Lines.Clear; ⏎ for i := 1 to n do ⏎ if n mod i = 0 then ⏎ Memo1.Lines.Add(IntToStr(i)); ⏎ Label1.Caption := 'Soni: ' + IntToStr(Memo1.Lines.Count); ⏎ end; При n = 36 строки равны 1, 2, 3, 4, 6, 9, 12, 18, 36 – всего 9 строк.
Memo1.Lines.Insert(0, 'Boluvchilar:'); помещает заголовок в начало: число строк становится 9+1 = 10, а прежняя первая строка (1) теперь находится в Lines[1]. Memo1.Lines.Delete(0); снова удаляет заголовок. Memo1.Text := 'a' + sLineBreak + 'b'; создаёт две строки: Count = 2.
Работа в классе
«Карта делителей»: пара создаёт приложение с Memo, заранее вычисляет количество строк для трёх значений n (12, 36, 49) и проверяет результат с помощью приложения.
Упражнения
1
С какого числа считаются строки Memo?
0
2
Сколько делителей у n = 12 (1, 2, 3, 4, 6, 12)?
6
3
В Memo 9 строк. Сколько строк станет после Lines.Insert(0, ...)?
10
4
Почему рискованно указывать в SaveToFile имя существующего файла?
Существующий файл перезаписывается, и старые данные теряются навсегда.