我有一个包含50个或更多控件的表单,这些控件是在运行时创建并添加的。我不想一个一个地看到它们出现;我更愿意在开始时禁用绘画/启动缓冲,然后一次性地看到它们全部出现。
我记得大约10年前在BCB中做过类似的事情,但现在忘记了。
我有一个包含50个或更多控件的表单,这些控件是在运行时创建并添加的。我不想一个一个地看到它们出现;我更愿意在开始时禁用绘画/启动缓冲,然后一次性地看到它们全部出现。
我记得大约10年前在BCB中做过类似的事情,但现在忘记了。
我不确定是否有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;
LockWindowUpdate
的回答。 - Sertac Akyuz在所有准备工作完成之前,我只需将Visible = False。