rho*_*ody 2 delphi delphi-xe2 vcl-styles
我刚刚注意到在Delphi XE2中的一些新的VCL样式中,尝试更改RichEdit控件中的文本颜色不起作用.例如,Smokey Quarts Kamri和Carbon只显示黑色文本,而在Cobalt XEMedia中,字体颜色可以更改.这是我用来改变字体颜色的代码(粗体似乎适用于所有样式)
memo.selStart:= length (text);
memo.selLength:= 0;
memo.SelAttributes.Color:= clRed;
memo.SelAttributes.Style:= [fsBold];
memo.selText := text;
Run Code Online (Sandbox Code Playgroud)
有关如何在使用Delphi XE2样式时更改RichEdit控件上的字体颜色的任何想法?
这似乎是一个VCL样式错误,但你可以使用Style钩子轻松解决这个问题.
uses
Vcl.Forms,
Vcl.Themes,
Winapi.RichEdit;
type
TRichEditStyleHookFix = class(TScrollingStyleHook)
strict private
procedure EMSetBkgndColor(var Message: TMessage); message EM_SETBKGNDCOLOR;
end;
{ TRichEditStyleHookFix }
procedure TRichEditStyleHookFix.EMSetBkgndColor(var Message: TMessage);
begin
Message.LParam := ColorToRGB(StyleServices.GetStyleColor(scEdit));
Handled := False;
end;
Run Code Online (Sandbox Code Playgroud)
并使用这样的
TStyleManager.Engine.RegisterStyleHook(TRichEdit, TRichEditStyleHookFix);
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |