我有一个包含50个或更多控件的表单,我在运行时创建并添加.我不想看到然后一个接一个地出现; 我宁愿在开始时禁用绘图/开始缓冲,然后看到它们全部出现.
我似乎记得在大约10年前在BCB做过这样的事情,但是忘了怎么做.
cas*_*nca 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;
Run Code Online (Sandbox Code Playgroud)
我只是保持Visible = False,直到一切都很好并准备就绪.