Sal*_*dor 3 delphi delphi-xe2 vcl-styles
我使用了几个需要表单句柄的WinAPi函数才能工作,因为当更改vcl样式时,会重新创建表单的句柄,许多对这些函数的调用都会停止工作.所以我需要一种方法来检测当前vcl样式何时被修改(更改)以更新对这些函数的调用.问题是How detect when a vcl style is changed?
RRU*_*RUZ 10
当通过该TStyleManager.SetStyle
方法更改vcl样式时,将CM_CUSTOMSTYLECHANGED
消息发送到应用程序的所有形式,然后WndProc
在表单的方法中处理该messgae ,然后CM_STYLECHANGED
发送消息以通知vcl样式已更改,因此您可以监听CM_STYLECHANGED
消息以检测vcl样式何时发生变化.
试试这个示例代码.
type
TForm17 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure CMStyleChanged(var Message: TMessage); message CM_STYLECHANGED;
public
{ Public declarations }
end;
var
Form17: TForm17;
implementation
uses
Vcl.Themes;
{$R *.dfm}
procedure TForm17.Button1Click(Sender: TObject);
begin
TStyleManager.SetStyle('Carbon');
end;
procedure TForm17.CMStyleChanged(var Message: TMessage);
begin
ShowMessage('The vcl style has changed');
end;
end.
Run Code Online (Sandbox Code Playgroud)