1

我正在使用这个遗留的 Delphi 应用程序,它是使用 VCL 样式变得更现代的候选者。一种形式导致了性能问题。

此问题形式根据规范动态创建控件。不仅如此,它还不会一次创建所有控件。它有一个分层组织,控件绘制在组框上,单击复选框或单选按钮可以创建一个新的嵌套组框,其中包含新控件。至少在某些时候,表单上的所有控件都会保存它们的状态、删除它们,然后重新创建它们并恢复它们的状态。这适用于老式(想想 Windows NT 3.51)控件,但是当添加 VCL 样式时,此表单可能需要一分钟以上的时间来重绘自身。

我认为正在发生的事情是样式导致遗留表单绘图代码正在响应的 Windows 事件,导致它重复它已经完成的事情。我想知道是否有一种方法可以暂时关闭样式以允许此表单在应用样式所做的任何更改之前完全绘制自己。

我注定要失望吗?

编辑:这是使用 Delphi XE3。

4

1 回答 1

2

用于Vcl.Themes.TStyleManager切换要使用的样式Windows(表示普通样式)或Vcl style您在以下测试代码中选择的样式:

uses ..., Vcl.Themes;

TForm11 = class(TForm)
// ... 
private
  StylesDisabled: boolean;
// ...
end;

procedure TForm11.Button1Click(Sender: TObject);
begin
  StylesDisabled := not StylesDisabled;

  if StylesDisabled then
    TStyleManager.SetStyle('Windows')
  else
    TStyleManager.SetStyle('Amethyst Kamri');
end;
于 2019-07-25T19:13:32.767 回答