TRichView更改选择内容字体
方法
TCustomRichViewEdit.ApplyTextStyle
procedure ApplyTextStyle(TextStyleNo: Integer);
将指定的文本样式应用于所选项目( 文本项目、制表符、标签项目)
参数
TextStyleNo 文本样式集合中的索引(Style.TextStyles
)。
如果选择为空,则此方法仅将TCustomRichViewEdit.CurTextStyleNo
设置为TextStyleNo。如果选择不为空, 则该方法会更改所选内容中文本项目的样式。
如果现有文本项的Protection
中的样式为rvprStyleProtect,则此方法不会更改其样式。
如果要实现“加粗”、“更改文本颜色”、“应用字体”等命令,请使用ApplyStyleConversion
而不是此方法。
TCustomRichViewEdit.ApplyStyleConversion
procedure ApplyStyleConversion(UserData: Integer; Recursive: Boolean = True);
将自定义转换过程应用于所选 文本项目、制表符、标签项目(以及从标签项目继承的所有类型的项目)的样式。
参数
UserData 向OnStyleConversion
传递的值
Recursive False,不会为所选表格的单元格调用 OnStyleConversion
(单个表格中的多单元格选择情况除外)。
此方法为每个选定的文本项和 当前文本样式 调用 OnStyleConversion
事件。 使用这种方法,您可以实现诸如“加粗”或“更改字体名称”之类的命令。
此方法忽略任何文本保护,即使rvprStyleProtect 包含在现有文本项的样式的Protection
中,它也可以更改文本样式。 如果要保留文本保护,请在 OnStyleConversion
事件中自行检查此选项。
TCustomRichViewEdit.OnStyleConversion
在执行 ApplyStyleConversion
方法时发生。
type
TRVStyleConversionEvent =
procedure (Sender: TCustomRichViewEdit;
StyleNo, UserData: Integer; AppliedToText: Boolean;
var NewStyleNo: Integer) of object;
property OnStyleConversion:TRVStyleConversionEvent;
此事件允许您为所选文本创建文本样式的自定义转换过程。 为所有选定的文本项调用此事件,允许更改其文本样式。
实现“加粗”、“应用字体”、“更改文本颜色”等命令会很有用。
参数
StyleNo 当前文本样式(样式集合中的索引,Style.TextStyles
)。
UserData 在 ApplyStyleConversion
中作为参数传递的值。
AppliedToText True,该事件被调用用于文本项的样式转换; False,该事件被调用来转换当前文本样式 (TCustomRichViewEdit.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_*** – 用户定义的具有唯一值的整数常量; 这些常量标识命令; 它们作为 UserData 传递给
ApplyStyleConversion
; - RVStyle1 –
TRVStyle
组件链接到 Richview 编辑器; - ColorDialog1:
TColorDialog
; - FontDialog1:
TFontDialog
; - btnBold, btnItalic, btnUnderline:
TSpeedButton
; - FontName: String;
- FontSize: Integer.