Он находится на палитре компонентов Standart.
Как мы уже успели понять, он представляет собой
поле для отображения и редактирования
неформатированного текста. Текст можно
загрузить из файла, набрать на клавиатуре,
вставить из буфера обмена. Т.е. он имеет многие
доступные свойства для редактирования текста,
что способствует его применению в простейших
текстовых редакторах для просмотра (редактирования)
текста, наподобие того примера, который мы с вами
периодически дописываем вот уже несколько
уроков.
В этом компоненте текст всегда имеет одинаковый
шрифт, задающийся через свойство Font.
Программно для компонента Memo1,
расположенного на форме это делается следующим
образом. Допустим, на форме расположено три
компонента: поле редактирования текста Memo1
(страница Standart), диалог выбора шрифта FontDialog1
(страница Dialogs) и кнопка Button1 (страница
Standart). Реакция на событие нажатия на
кнопку Button1
procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then // если
пользователь выбрал шрифт
Memo1.Font:=FontDialog1.Font; // установить выбранный шрифт
end;
Если необходимо, чтобы в диалоге выбора шрифта
изначально был выбран текущий шрифт,
установленный компоненте Memo1, то перед
вызовом диалога Execite устанавливаем в
диалоге нужный шрифт.
procedure TForm1.Button1Click(Sender: TObject);
begin
FontDialog1.Font:=Memo1.Font; // установить шрифт в диалоге
if FontDialog1.Execute then
Memo1.Font:=FontDialog1.Font;
end;
Можно изменять шрифт для компонента TMemo (и не
только для него) программно. Для этого в свойстве
Font устанавливаются необходимые свойства во
время работы приложения.
Memo1.Font.Name:='Arial'; // установка имени
шрифта
Memo1.Font.Size:=14; // установка размера шрифта
Memo1.Font.Color:=clRed; // цвет шрифта
{ для того, чтобы увидеть полный список
доступных стандартных цветов воспользуйтесь
справочной системой, например, подведя курсор
под clRed и нажав на Ctrl+F1 }
Memo1.Font.Style:=[fsBold]; // установить жирный стиль
Style представляет собой массив свойств
стиля шрифта. Необходимо в квадратных скобках
указывать через запятую необходимые стили.
Пустые кавычки будут означать установку шрифта
без стиля. Список доступный свойств стиля шрифта:
fsBold - жирный;
fsItalic - наклонный;
fsUnderline - подчеркнутый;
fsStrikeout - перечеркнутый.
Свойство WordWrap устанавливает, может или
нет текст автопереносится на следующую строчку,
если он достиг левого края компонента.
Автоперенос работает и когда пользователь во
время работы приложения изменяет размеры
компонента.
Текст в компоноDте доступен через свойство Lines.
Он содержит массив строк, находящихся в
компоненте. Можно получить доступ как к
отдельной строке, так и к всему тексту. Это
свойство можно редактировать и во время работы
приложения, и во время разработки в инспекторе
объектов.
Загрузка строк из файла через процедуру
Memo1.Lines.LoadFromFile('c:\1.txt');
где "c:\1.txt" - загружаемый файл в
компонент. Следует при этом помнить, что
компонент TMemo ограничен в размерах текста.
Сохранение строк в файл.
Memo1.Lines.SaveToFile('c:\1.txt');
Количество строк в компоненте можно узнать через
свойство Memo1.Lines.Count, а доступ к отдельной строчке
через функцию Strings. Например:
ShowMessage(Memo1.Lines.Strings[0]); // Показывает в
окошке первую строчку текста.
Strings - это массив строк, начинающихся с
нулевого знака, заканчивающиеся Count-1. Об этом
следует помнить при написании подобных процедур
доступа, иначе произойдет выход за доступный
предел массива, что вызовет ошибку в программе.
Можно для примера организовать цикл
поочередного отображения строк из компонента
Memo1. Для реакции на нажатия на кнопку Button1 это
выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
Var i:Integer; // объявление целочисленной
переменной
begin
if Memo1.Lines.Count<>0 then // проверка
ненулевого количества строк
for i:=0 to Memo1.Lines.Count-1 do //
задается цикл, равный кол-ву строк
ShowMessage(Memo1.Lines.Strings[i]); // вывод строк в сообщение
end;
Очистить Strings можно одной процедурой Memo1.Lines.Clear.
Добавить строчку:
Memo1.Lines.Add('добавленная строка');
Вставить строчку в заданное место:
Memo1.Lines.Insert(0,'вставленная строка');
Последний пример вставляет текстовую строку в
первую строку (первая строка -1 = 0).
Удалить строчку:
Memo1.Lines.Delete(0); // удаляет первую строку
При применении процедуры удаления строк Delete
помните, что сначала нужно проверять компонент TMemo
на наличие таковых вообще. Проверка через
функцию Count, которая возвращает их
целочисленное значение.
Работа с выделенным текстом программно
аналогична работе пользователя вручную. Если
пользователь выберет процедуру вырезания
выделенного текста в буфер или его удаление, то
он пропадет. Выделение текста производится с
помощью двух процедур.
Memo1.SelStart:=0; // установить начальное
положение выделения
Memo1.SelLength:=15; // установить длину выделенного
текста
Если необходимо всегда видит выделенный текст,
даже при переходе управления на другой элемент
управления, то установите свойство HideSelection в false.
Работа с выделенным фрагментом текста
Memo1.ClearSelection; // удалить выделенный
текст
Memo1.CutToClipboard; // вырезать в буфер обмена
Memo1.CopyToClipboard; // скопировать в буфер обмена
Memo1.PasteFromClipboard; // вставить из буфера обмена
Memo1.SelText; // эта функция возвращает текстовую
строку выделенного текста
Отмена последнего изменения - процедура Memo1.Undo.
Компонент TMemo является оконным
визуальным компонентом, т.е. у него имеются
свойства, характерные множеству компонентов,
таких как Border, Color, Align,
Enabled, Visible.
© www.nmarket.ru - при перепечатке прямая ссылка обязательна