|
<< Нажмите, чтобы показать Содержание >> TCustomRichViewEdit.OnStyleConversion |
Происходит во время выполнения метода ApplyStyleConversion.
type
TRVStyleConversionEvent =
procedure (Sender: TCustomRichViewEdit;
StyleNo, UserData: Integer; AppliedToText: Boolean;
var NewStyleNo: Integer) of object;
property OnStyleConversion:TRVStyleConversionEvent;
Это событие позволяет создать собственную процедуру преобразования стилей выделенного текста. Оно вызывается для всех выделенных элементов, для которых можно изменить стиль текста.
Это может быть полезно для реализации команд вроде «сделать полужирным», «изменить шрифт» и т. п.
Более простой способ реализации операций редактирования свойств текста предоставляет компонент TRVEditHelper.
Параметры:
StyleNo – текущий стиль текста (номер в коллекции Style.TextStyles).
UserData – значение, переданное как параметр в ApplyStyleConversion.
AppliedToText – True, если событие вызывается для элемента документа; False, если для текущего стиля текста (CurTextStyleNo).
NewStyleNo – изначально равно StyleNo; присвойте этому параметру новое значение, чтобы изменить стиль текста.
Пример 1
procedure TMyForm.MyRichViewEditStyleConversion(
Sender: TCustomRichViewEdit;
StyleNo, UserData: Integer; AppliedToText: Boolean;
var NewStyleNo: Integer);
begin
if not (AppliedToText and
(rvprStyleProtect in Style.TextStyles[StyleNo].Protection)) then
NewStyleNo := UserData;
end;
Этот пример делает точно ту же работу, что и метод ApplyTextStyle, т.е. вызов MyRichViewEdit.ApplyStyleConversion(StyleNo) будет эквивалентен вызову MyRichViewEdit.ApplyTextStyle(StyleNo).
Как видно, ApplyStyleConversion игнорирует защиту стилей. Если вы хотите учитывать защиту, необходимо проверять её самостоятельно и не изменять защищённые стили, как в приведённом выше примере.
Пример 2
procedure TMyForm.MyRichViewEditStyleConversion(
Sender: TCustomRichViewEdit;
StyleNo, UserData: Integer; AppliedToText: Boolean;
var NewStyleNo: Integer);
var FontInfo: TFontInfo;
begin
// создание текстового стиля с нужными свойствами
FontInfo := TFontInfo.Create(nil);
try
FontInfo.Assign(RVStyle1.TextStyles[StyleNo]);
case UserData of
TEXT_BOLD:
if btnBold.Down then
FontInfo.Style := FontInfo.Style+[fsBold]
else
FontInfo.Style := FontInfo.Style-[fsBold];
TEXT_ITALIC:
if btnItalic.Down then
FontInfo.Style := FontInfo.Style+[fsItalic]
else
FontInfo.Style := FontInfo.Style-[fsItalic];
TEXT_UNDERLINE:
if btnUnderline.Down then
FontInfo.Style := FontInfo.Style+[fsUnderline]
else
FontInfo.Style := FontInfo.Style-[fsUnderline];
TEXT_APPLYFONTNAME:
FontInfo.FontName := FontName;
TEXT_APPLYFONTSIZE:
FontInfo.Size := FontSize;
TEXT_APPLYFONT:
FontInfo.Assign(FontDialog1.Font);
TEXT_COLOR:
FontInfo.Color := ColorDialog1.Color;
TEXT_BACKCOLOR:
FontInfo.BackColor := ColorDialog1.Color;
// вставьте свой код сюда ....
end;
// поиск такого стиля (и создание, если необходимо)
NewStyleNo := RVStyle1.FindTextStyle(FontInfo);
finally
FontInfo.Free;
end;
end;
В этом примере показано, как реализовать следующие команды:
•включение/отключение полужирного начертания;
•включение/отключение курсива;
•включение/отключение подчёркивания;
•изменение имени шрифта;
•изменение размера шрифта;
•применение шрифта;
•изменение цвета текста;
•изменение цвета фона текста.
В этом коде:
•TEXT_*** – заданные пользователем целочисленные константы с уникальными значениями; эти константы определяют команды и передаются в ApplyStyleConversion как UserData.
•RVStyle1 – компонент TRVStyle, связанный с редактором RichView.
•ColorDialog1: TColorDialog.
•FontDialog1: TFontDialog.
•btnBold, btnItalic, btnUnderline: TSpeedButton.
•FontName: String.
•FontSize: Integer.
См. демо-проекты:
▪Demos\*\Editors\Editor 2\
См. также:
См. также методы: