
10.11.2. Работа с абзацем
Текущим в тексте форматированного комментария считается абзац, на котором находится курсор.
Свойство property Paragraph: TParaAttributes; определяет характеристики параграфа. Рассмотрим свойства компонента TParaAttributes:
• property Alignment: TAlignment; определяет выравнивание параграфа. Значения:
taLeftJustify - влево;
laCenier - по центру;
taRightJustify - вправо.
• property Firstlndent: Longint; определяет в пикселах абзацный отступ (первой строки параграфа) относительно левого края.
• property Leftlndent: Longint; определяет в пикселах отступ всех строк параграфа от левого края.
• property Numbering: TNumberingStyle; определяет отметку параграфов. Значения:
nsNone - отметка не производится.
nsBullet - отметка производится символом '•'.
• property Rightlndent: Longint; указывает в пикселах отступ от правого края.
Пример. Определим кнопку, реализующую выравнивание текущего абзаца и напишем обработчик события нажатия этой кнопки:
procedure TFormI.SpeedButton3Click(Sender: TObject) ;
begin
DBRichEdit1.Paragraph.Alignment := taCenter;
end;
11.10.3. Сохранение комментария в файле и считывание комментария из файла
Форматированный комментарий может быть записан в файл и считан из него. Для этой цели применяются методы свойства Lines, procedure SaveToFUe(const FileName: string); procedure LoadFromFile(const FileName: string);
Свойство property PlainText: Boolean; указывает (True), что нужно игнорировать разметку текста (шрифт, цвет и т.д.) при записи из файла в компонент или из компонента в файл. В этом случае текст представляется в виде обычного текстового файла. Значение False (по умолчанию) указывает на необходимость принимать во внимание разметку текста. Например,
RichEdit1.PlainText := True;
RichEdit1.Lines.LoadFromFile(Path);
RichEdit2.PlainText := False;
11.10.4. Работа с выделенным текстом
Фрагмент текста форматированного комментария выделяется так же, как и в популярном текстовом процессоре WinWord; для выделения необходимо установить указатель мыши на начало выделяемого фрагмента, нажать левую кнопку мыши и, не отпуская кнопки, установить указатель мыши на конец фрагмента, после чего кнопку отпустить. Есть и другой способ (при помощи клавиатуры): следует переместить курсор на начало выделяемого фрагмента, нажать кнопку с изображением стрелки влево (вправо) и одновременно - кнопку Shift; движение курсора следует остановить на конце выделяемого фрагмента.
Следующие свойства позволяют определить параметры выделенного фрагмента в тексте комментария:
property SelLength: Integer; возвращает число выделенных символов. property SelStart: Integer; возвращает номер первого выделенного символа в тексте. property SelText: string; возвращает выделенный текст.
Программное изменение одного из указанных свойств изменяет границы выделенного фрагмента.
Весь текст комментария может быть выделен вручную - нажатием на клавиатуре комбинации Ctrl+A, и программно - путем выполнения метода procedure SelectAll;
Свойство property SelAttributes: TTextAttributes; позволяет установить характеристики выделенного текста. Свойства компонента TTextAttributes: . -
• property Color: TColor; определяет цвет выделенного текста;
• property Height: Integer; определяет высоту в пикселах выделенного текста;
• property Pitch: TFontPitch; определяет, имеют ли литеры выделенного текста одинаковую ширину.
Значения:
fpDefault- определяется используемым шрифтом;
fpFixed - одинаковая ширина;
fp Variable - переменная ширина.
• property Protected: Boolean; определяет (True), что текст защищен от изменения пользователем. В случае, если пользователь пытается изменить защищенный текст, вызывается обработчик события OnProtectChange.
В этом обработчике можно снять защиту. Если обработчик указанного события не определен, защищенный текст доступен только на чтение.
• property Size: Integer; определяет высоту в пикселах выделенного текста.
* property Style: TFontStyles; определяет стиль выделенного шрифта. Множество Style может состоять из одного или нескольких значений:
fsBold - жирный;
fsltalic - наклонный;
fs Underline - подчеркнутый;
fsStrikeout - зачеркнутый.
Пример. Установить шрифт, цвет, размер и стиль выделенного текста аналогичными параметрам шрифта, выбранного посредством компонента TFontDialog:
IF FontDialog1.Execute THEN begin
WITH DBRichEditl.SelAttributes do begin
Color := FontDialogl.Font.Color;
Size := FontDialogl.Font.Size;
Name := FontDialogl.Font.Name;
Style := FontDialogl.Font.Style;
END;//with
END;//if
Пример. Сделать выделенный фрагмент текста защищенным:
DBRichEditI.SelAttributes.Protected := True;
Событие
property OnProtectChange: TRichEditProtectChange;
TRichEditProtectChange = procedure(Sender: TObject; StartPos, EndPos: Integer; var AllowChange: Boolean) of object;
наступает, если пользователь пытается изменить защищенный текст. Параметры StartPos и EndPos содержат границы защищенного текста. Установка в True изменяемого параметра AllowChange разрешает изменять защищенный текст.
Пример. В случае, если пользователь пытается изменить символ, ранее помеченный как защищенный, запрашивается подтверждение; если пользователь подтверждает изменение защищенного символа, тот изменяется; если не подтверждает, изменение символа отвергается.
procedure TForm1.DBRichEdit1ProtectChange(Sender: TObject;
StartPos,
EndPos: Integer; var AllowChange: Boolean);
begin
IF MessageDIg('Изменяемый текст являются защищенным. ' + 'Желаете все-таки его изменить?',mtConfirmation,
[mbYes,mbNo],0) = mrYes THEN AllowChange := True;
end;
Выделенный фрагмент текста может быть удален методом procedure ClearSelection;
Метод procedure CopyToClipboard; копирует выделенный текст в буфер обмена Windows.
Метод procedure CutToClipboard; вырезает выделенный текст и вставляет его в буфер обмена Windows.
Метод procedure PasteFromCUpboard; вставляет содержимое буфера обмена Windows в текст комментария, начиная с текущей позиции курсора.
Пример. Определим кнопки "Копировать в буфер обмена", "Вырезать в буфер обмена", "Вставить из буфера обмена" и напишем обработчики события нажатия этих кнопок:
// кнопка "Копировать в буфер обмена"
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
DBRichEditI.CopyToClipboard;
end;
// кнопка "Вырезать в буфер обмена"
procedure TFormI.SpeedButton7Click(Sender: TObject);
begin
DBRichEditI.CutToClipboard;
end;
// кнопка "Вставить из буфера обмена"
procedure TForm1.SpeedButtonSClick(Sender: TObject);
begin
DBRichEdit1. PasteFromCUpboard;
end;