Работа с выделенным текстом
Фрагмент текста форматированного комментария выделяется так же, как и в популярном текстовом процессоре 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;