I have a form with 50 or more controls which I create and add at runtime. I don't want to see then appear one by one; I would rather disable drawing/start buffering at the start & then see them all appear at once.
I seem to recall doing something like this in BCB about 10 years ago, but forget how.
I'm not sure if there's a Delphi-specific method to do this, but using the Win32 API, this is done through the WM_SETREDRAW
message.
Edit: Thanks to Ken White and Sertac Akyuz for the sample code below.
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;
I simply keep Visible = False until everything's nice and ready.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With