我想在我的应用程序中使用VCL Style。 我在事件OnShow,OnResize ......中有一些代码。
更改样式时会触发其他表单事件。(FormShow,FormResize)
如何在更改样式时禁用事件。
对于更改样式,我使用代码:
TStyleManager.TrySetStyle(cbStyles.Items[cbStyles.ItemIndex], True);
示例代码:
procedure TForm1.AddLog(AMsg: String);
begin
if cbEnableLog.Checked
then Memo1.Lines.Append(AMsg);
end;
procedure TForm1.bChangeClick(Sender: TObject);
begin
TStyleManager.TrySetStyle(cbStyles.Items[cbStyles.ItemIndex],True);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
AddLog('FormResize');
end;
procedure TForm1.FormShow(Sender: TObject);
begin
AddLog('FormShow');
end;
答案 0 :(得分:1)
声明一个布尔变量f.ex. InStyleChange: boolean;
。在致电True
之前设置TStyleManager.TrySetStyle()
,然后立即重置为False
。
在所有要绕过事件的事件处理程序中,编写代码如下:
procedure TForm1.FormResize(Sender: TObject);
begin
if InStyleChange then exit;
AddLog('FormResize');
end;