Многострочное поле ввода (TMemo) Delphi

Итак, добавьте на форму пока только одну кнопку. Измените ее свойство caption на очистить и имя на ciearButton. Кстати, давайте изменим имя компо­нента Memo1 на MainMemo.Создайте для кнопки обработчик событияonclickВ нем напишите следующее:

 

В этом программном коде вызывается метод clear объекта Lines, который в свою очередь принадлежит объекту MainMemo. Немного запутано, но со време­нем вы поймете, что это очень даже удобно. У компонента MainMemo есть свой­ство Lines, значит, чтобы получить к нему доступ, мы должны написать MainMemo.Lines. Свойство Lines — это целый объект, и у него есть метод Clear, который очищает содержимое строк редактора.

 

Попробуйте запустить программу и написать внутри компонента Memo какой- нибудь текст. Потом нажмите кнопку Очистить, чтобы уничтожить все, что вы ввели.

 

Теперь давайте усложним наш пример, добавив возможность сохранения вве­денного текста и загрузки его обратно.

Создайте обработчик события Onshow (срабатывает, когда отображается окно) для формы и напишите в нем следующее:

 

Здесь вызывается метод LoadFromFile объекта Lines. Ему нужно передать толь­ко один параметр — имя файла, откуда будет происходить загрузка данных. Есть только один недостаток — если вы сейчас попытаетесь запустить программу, то во время загрузки произойдет ошибка, потому что файла memo.txt нет. Тут есть два выхода:

  • заранее создать файл;
  •  при старте программы проверять, есть ли файл, и только если он существует, производить загрузку текста.

С первым способом все понятно. А вот для реализации второго способа можно воспользоваться функцией FileExists. Ей нужно передать имя файла, существо­вание которого надо проверить, и если такой файл существует, функция вернет true. Давайте изменим обработчик события Onshow следующим образом:

 

Теперь создадим обработчик события OnClose (срабатывает на закрытие окна).

В нем напишем процедуру сохранения содержимого MainMemo.

 

Здесь используется метод SaveToFile, который работает так же, как и LoadFromFile, только сохраняет данные.

 

Теперь осталось только научиться программно добавлять, удалять и изменять строки в компоненте Tmemo, и можно считать, что мы досконально изучили этот компонент.

В этом компоненте текст хранится как простая последовательность строк — массив. Используя предыдущий пример, наберите текст и после закрытия про­граммы посмотрите, как он выглядит в файле. Вот содержимое моего примера memo.txt: 

DelphiComponent.ru

Многострочное поле ввода (TMemo) DelphiКак видите, в файле четыре строки (вторая пустая). Точно так же строки распо­ложены и в файле.

 

Для доступа к каждой строке можно воспользоваться свойством strings свой­ства Lines. На рис. 7.6 наглядно показано, как получить доступ к строкам. Чтобы получить нулевую строку, нужно написать MainMemo.Lines.strings[0], для пер­вой строки — MainMemo. Lines . Strings [ 1 ] И Т. Д.

 

Давайте напишем пример, кото­рый будет получать доступ к стро­кам, чтобы увидеть все это на практике. Добавьте к предыдуще­му примеру три кнопки.

  • Добавить. Дадим этой кнопке ИМЯ-- AddButton.
  • Удалить. Дадим этой кнопке ИМЯ — DelButton.
  • Изменить. Дадим этой кнопке ИМЯ — ChangeButton.

 

Давайте изменим обработчик события Onshow следующим образом:

 

Теперь создадим обработчик события OnClose (срабатывает на закрытие окна). В нем напишем процедуру сохранения содержимого MainMemo.

 

Здесь используется метод SaveToFile, который работает так же, как и LoadFromFile, только сохраняет данные.

Можете расположить их, как показано на рис. 7.7. Теперь созда­дим обработчик события onclick для кнопки Добавить. Здесь мы будем про­граммно добавлять новую строку В MainMemo.Для ЭТОГО У объекта Lines есть метод Add,у которого только один параметр — текст новой строки:

 

Теперь создадим обработчик событияonclickдля кнопки Удалить. По этому событию мы должны удалить строку, в которой находится сейчас курсор. Для это­го напишите в обработчике следующий текст:

В первой строке кода проверяется, сколько строк в компоненте MainMemo. Для этого есть свойство Lines, count. Если оно не равно нулю (MainMemo.Lines .count<>o), значит, строки есть, и мы можем удалить текущую строку.

 

Для удаления используется метод Delete объекта Lines. В качестве единствен­ного параметра нужно передать номер строки для удаления. Но как узнать, какая строка сейчас является текущей? Для этого у MainMemo есть свойство CaretPos, которое указывает на текущую позицию курсора.

 

CaretPos— это переменная типаTPoint.Этот тип определяется как запись. С таким типом мы подробно познакомимся немного позже. Единственное, что сей­час необходимо знать, так это то, что данный тип похож на объект, только у него нет методов, а только свойства. У TPoint есть два свойства х и y:

х указывает на текущую колонку,

y— на текущую строку.

Таким образом можно узнать теку­щую строку С ПОМОЩЬЮ MainMemo.CaretPos.y.

Итак,MainMemo.Lines.Delete удаляет указанную строку. Указание текущей строки происходит С ПОМОЩЬЮ MainMemo.CaretPos.Y.

Теперь осталось только написать обработчик события onclick для кнопки Изменить. В нем напишите следующий код:

В первой строке мы изменяем текущую строку на "Horrific". Второй строкой ко­да я изменяю первую строку мапмето на "Текст изменен".

Здесь вам уже все должно быть знакомым. Так что теперь можно считать, что мы изучили основные возможности компонента TMemo.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: