![](/img/trans.png)
[英]How to detect URL links after setting EM_AUTOURLDETECT in TRichEdit?
[英]Assigning a font to a TRichEdit after setting background colour for selected text
我的Delphi表单上有一个TRichEdit控件,我使用perform方法为控件发送一个窗口消息,为文本的某些部分指定背景颜色。 (在调用此代码之前,使用SelStart和SelLength选择文本)。
FillChar(Format, SizeOf(Format), 0);
with Format do
begin
cbSize := SizeOf(Format);
dwMask := CFM_BACKCOLOR;
crBackColor := AColor;
fRichEdit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
我也希望用户可以更改字体(整个字体,它不像背景突出显示那样),所以当他们想要修改编辑框的字体时,我向用户展示TFontDialog ,我将字体分配给TRichEdit控件的字体。
RichEdit.Font.Assign(SelectedFont);
但是,使用Windows消息似乎会阻止字体更新。 当我注释掉perform方法时,一切正常,但是当我取消注释该行时,字体不会更新。
我是Windows消息的新手,请解释为什么会发生这种情况。
您正在设置的Font
属性将整个RichEdit的字体设置为整体,而不是当前文本选择。 如果要设置每个选择字体,则需要使用通过EM_SETCHARFORMAT
传递的CHARFORMAT
记录的szFaceName
, yHeight
和bCharset
字段。 无法在每个选择的基础上分配TFont
对象,甚至是HFONT
句柄。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.