Компоненты Memo и RichEdit являются окнами редактирования многострочного текста.
В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font.
Компонент RichEdit работает с текстом в обогащенном формате RTF. При желании изменить атрибуты вновь вводимого фрагмента текста вы можете задать свойство SelAttributes. Это свойство типа TTextAttributes, которое в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других.
В компоненте имеется также свойство DefAttributes, содержащее атрибуты по умолчанию. Эти атрибуты действуют до того момента, когда изменяются атрибуты в свойстве SelAttributes.
Но значения атрибутов в DefAttributes сохраняются и в любой момент эти значения могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.
Свойство DefAttributes доступно только во время выполнения. Поэтому его атрибуты при необходимости можно задавать, например, в обработчике события OnCreate.
За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств:
Alignment | Определяет выравнивание текста. Может принимать значения taLeftJustify (влево), taCenter (по центру) или taRightJustify (вправо). |
FirstIndent | Число пикселей отступа красной строки. |
Numbering | Управляет вставкой маркеров, как в списках. Может принимать значения nsNone — отсутствие маркеров, nsBullet — маркеры ставятся. |
LeftIndent | Отступ в пикселях от левого поля. |
RightIndent | Отступ в пикселях от правого поля. |
TabCount | Количество позиций табуляции. |
Tab | Значения позиций табуляции в пикселях. |
Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения, например, в событии создания формы или при нажатии какой-нибудь кнопки. Значения подсвойств свойства Paragraph относятся к тому абзацу, в котором находится курсор. Например, каждый из следующих операторов осуществит соответственное выравнивание текущего абзаца:
RichEdit1.Paragraph.Alignment:=taLeftJustify; // Влево RichEdit1.Paragraph.Alignment:=taCenter; // По центру RichEdit1.Paragraph.Alignment:=taRightJustify;// ВправоСледующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами:
RichEdit 1. Paragraph . Numbering := nsBullet ;Уничтожение списка в текущем абзаце осуществляется оператором
RichEdit 1. Paragraph . Numbering := nsNone ;Свойства TabCount и Tab имеют смысл при вводе текста только при значении свойства компонента WantTabs = true. Это свойство разрешает пользователю вводить в текст символ табуляции. Если WantTabs = false, то нажатие пользователем клавиши табуляции просто переключит фокус на очередной компонент и символ табуляции в текст не введется.
Остановимся на общих свойствах окон редактирования Memo и RichEdit.
Свойство ScrollBars определяет наличие полос прокрутка текста в окне. По умолчанию ScrollBars = ssNone, что означает их отсутствие. Пользователь может в этом случае перемещаться по тексту только с помощью курсора. Можно задать свойству ScrollBars значения ssHorizontal, ssVertical или ssBoth, что будет соответственно означать наличие горизонтальной, вертикальной или обеих полос прокрутки.
В качестве примера на рисунке приведен пример текстового редактора, использующего описанные выше свойства компонента RichEdit. Текст в окне редактора частично поясняет атрибуты шрифта, использованные при его написании.
Основное свойство окон Memo и RichEdit — Lines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение текста можно установить в процессе проектирования, нажав кнопку с многоточием около свойства Lines в окне Инспектора Объектов.
Во время выполнения приложения вы можете заносить текст в окно редактирования с помощью методов свойства Lines типа TStrings.
Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.
Доступ к отдельной строке текста вы можете получить с помощью свойства Strings[Index: Integer]. Индексы начинаются с 0. Так что Memo1.Lines.Strings[0] — это текст первой строки.
Свойство только для чтения Count указывает число строк в тексте.
Для очистки текста в окне надо выполнить процедуру Clear. Этот метод относится к самому окну, а не к его свойству Lines.
Для занесения новой строки в конец текста окна редактирования можно воспользоваться методами Add или Append свойства Lines. Для загрузки текста из файла применяется метод LoadFromFile. Сохранение текста в фале осуществляется методом SaveToFile.
Загрузка в окно Memo1 текста из файла может осуществляться командой
Memo1.Lines.LoadFromFile ('text.txt');Сохранение текста в файле может осуществляться командой
Memo1.Lines.SaveToFile('text.txt');Свойство SelStart компонентов Memo и RichEdit указывает позицию курсора в тексте или начало выделенного пользователем текста. Свойство CaretPos указывает на запись, поле X которой содержит индекс символа в строке, перед которым расположен курсор, а поле Y — индекс строки, в которой находится курсор. Учитывая, что индексы начинаются с 0, значения Memo1.CaretPos.Y+1 и Memо1.CaretPos.X+1 определяют соответственно номер строки и символа в ней, перед которым расположен курсор. В редакторе на рисунке именно эти значения (только не для Memo, а для RichEdit) использованы, чтобы отображать в строке состояния позицию курсора.
Содержание отчета:
1. Наименование, тема, цель работы.
2. Краткий конспект базового материала.
3. Скриншоты выполнения практической части.
4. Практическое занятие 3.
5. Выводы по работе.
Контрольные вопросы:
1. Дайте характеристику компонентов отображения.
2. Создание графического интерфейса объекта.
3. Событийные процедуры.
4. Использование кнопок.
5. Изменение свойств компонентов отображения.
6. Свойство Font. Отображение текста в надписях.
7. Однострочные и многострочные окна редактирования.
Цель работы: изучить среду визуального программирования Delphi. Дать понятие визуального конструирования формы с использованием компонентов редактирования и динамическое изменение свойств компонентов
Ход работы
1. На вашей форме после запуска должна появиться следующая информация: Заголовок формы – «Лабораторная работа 15». На форме – ваши ФИО, группа и кнопка Выход.
Заметки:
? – нельзя менять Form1 в параметре Name. Значение свойства Name для любых компонентов является идентификатором и используется для обращения к объекту в коде программы. Вам пока не надо менять стандартные значения.
Close не обязательно писать с заглавной буквы. Delphi понимает команды – английские слова, в любом сочетании, например: заглавная, прописная, заглавная … и т.д.
Сохранение проекта
Возможны как минимум три варианта:
После любого из этих вариантов в первый раз Delphi попросит вас сохранить с начала форму – Unit1 c расширением pas, а затем проект – Project1 c расширением dpr ( D elphi pr oject ). В дальнейшем запросов на ввод имени проекта и формы не будет. Кнопка двух дискет будет недоступной, если не было никаких изменений ни в проекте, ни на/в форме. Если кнопка двух дискет будет доступна, следовательно, перед запуском нужно сохранить изменения – это хороший стиль отладки.
? – Сохраняйте каждый свой проект в отдельной папке.
? – Не переименовывайте пока стандартные названия проекта и форм.
Дата: 2019-05-28, просмотров: 267.