如何禁用更新大量控件的屏幕更新?

时间:2010-09-25 02:25:51

标签: delphi

我有一个包含50个或更多控件的表单,我在运行时创建并添加它们。我不想看到然后一个接一个地出现;我宁愿在开始时禁用绘图/开始缓冲&然后看到他们都出现了。

我似乎记得在大约10年前在BCB做过类似的事情,但忘了怎么做。

2 个答案:

答案 0 :(得分:41)

我不确定是否有特定于Delphi的方法来执行此操作,但使用Win32 API,这是通过WM_SETREDRAW消息完成的。

修改:感谢Ken White和Sertac Akyuz提供以下示例代码。

begin
  // Defer updates
  SendMessage(Handle, WM_SETREDRAW, WPARAM(False), 0);
  try
    // Create all your controls here
  finally
    // Make sure updates are re-enabled
    SendMessage(Handle, WM_SETREDRAW, WPARAM(True), 0);
    // Invalidate;  // Might be required to reflect the changes  
  end;
end;

答案 1 :(得分:9)

我只是保持Visible = False,直到一切都很好并准备就绪。