gpt4 book ai didi

delphi - 如何检测 vcl 样式何时更改?

转载 作者:行者123 更新时间:2023-12-03 15:19:28 24 4
gpt4 key购买 nike

我使用了几个 WinAPi 函数,它们需要表单的句柄才能工作,因此,当 vcl 样式更改时,会重新创建表单的句柄,因此对这些函数的许多调用都会停止工作。因此,我需要一种方法来检测当前的 vcl 样式何时被修改(更改),以便更新对这些函数的调用。问题是如何检测 vcl 样式何时更改?

最佳答案

当通过 TStyleManager.SetStyle 更改 vcl 样式时方法一CM_CUSTOMSTYLECHANGED消息发送到应用程序的所有表单,然后在表单的 WndProc 方法中处理该消息,然后发送 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.

关于delphi - 如何检测 vcl 样式何时更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10375879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com