Компоненты Memo и RichEdit являются
окнами редактирования многострочного
текста.
В компоненте Memo формат (шрифт, его
атрибуты, выравнивание) одинаков для всего
текста и определяется свойством Font. Если вы
сохраните в файл текст, введённый или
отредактированный пользователем, то будет
создан текстовый файл, содержащий только
символы и не содержащий элементов
форматирования. При последующим чтении
этого файла в Memo формат будет определятся
текущим состоянием свойства Font компонента Memo, а не тем, в каком формате ранее вводился
текст.
Компонент RichEdit работает с текстом
в обогащённом формате RTF. При желании
изменить атрибуты вновь вводимого
фрагмента текста вы можете задать свойство SelAttributes. Это свойство типа
TTextAttributes, которое
в свою очередь имеет подсвойство: Color (цвет),
Name (имя шрифта), Size (размер), Style (стиль) и ряд
других. Например, введите на форму
компонент Richedit, диалог выбора шрифта FontDialog
(находитяс
на странице палитры Dialog) и кнопку Button,
которая позволит пользователю менять
атрибуты текста. В обработчик щелчка кнопки
можно было бы ввести тескт:
if FontDialog1.Execute
then
with
RichEdit1.SelAttributes do begin
Color:=FontDialog1.Font.Color;
Name:=FontDialog1.Font.Name;
Size:=FontDialog1.Font.Size;
Style:=FontDialog1.Font.Style;
end;
RichEdit1.SetFocus;
В приведённым коде присваивается
поочередно значение каждого свойства. Но
этот текст можно кардинально сократить,
воспользовавшись тем, что объекты SelAttributes и
Font совместимы по типу. Поэтому можно
присвоить сразу все свойства одного
объекта другому:
Запустите приложение нажатием
кнопки F9 и увидите, что вы можете менять
атрибуты текста, выполняя отдельные
фрагменты различными шрифтами, размерами,
цветами, стилями (нажимая на кнопку Button).
В компоненте имеется также
свойство DefAttributes, содержащее атрибуты по
умолчанию. Эти атрибуты действуют до того
момента, когда изменяется атрибуты в
свойстве SelAttributes. Свойство DefAttributes доступно
только во время выполнения. Поэтому его
атрибуты при необходимости можно задавать,
например, в обработчике события OnCreate.
Основное свойство окон Memo и RichEdit -
Lines, содержащее текст окна в виде списка
строк и имеющее тип TStrings. Начальное
значение текста можно установить в
процессе проектирования, нажав кнопку с
многоточием около свойства Lines в окне
Инспектора Объектов.
Доступ к отдельной строке текста
вы можете получить с помощью свойства String[Index:Inyeger].
Индексы, как и везде в Delphi, начинаются с 0.
Так что Memo1.Lines.Strings[0]- это текст первой
строки. Учтите, что если окно
редактирования изменяется в размерах при
работе с приложением и свойство WordWrap=true, то
индекс строк будут изменяться при
переносах строк, так что в этих случаях
индекс мало о чём говорит.
Свойство только для чтения Count
указывает число строк в тексте.
Для очистки текста в окне надо
выполнить процедуру Clear. Этот метод
относится к самому окну, а не к его свойству Lines.
Для занесения новой строки в конец
текста окна редактирования можно
воспользоваться методами Add и Append
свойства Lines. Для загрузки текста из
файла применяется метод LoadFromFile.
Сохранение текста в файле осуществляется
методом SaveToFile.
Пусть, например, в вашем приложении
имеется окно редактирования Edit1, в
котором пользователь вводит имя сотрудника,
и есть кнопка, при щелчке на которой в окно Memo1
должна занестись шапка характеристики
этого сотрудника, после чего пользователь
может заполнить текст характеристики.
Обработчик щелчка на кнопке может
иметь вид:
Memo1.Clear;
Memo1.Lines.Add('Характеристика');
Memo1.Lines.Add('сотрудник'+Edit1.text);
Memo1.SetFocus;
Загрузка в окно Memo1 текста из
файла (например, хранящейся в файле
характеристики сотрудника) может
осуществляться командой
Memo1.Lines.LoadFromFile('text.txt');
Сохранение текста в файле может
осуществляться командой
Memo1.Lines.SaveToFile('text.txt');
Счастливо! До
следующего урока............
Знание-это ваше сила