Ich habe mir für ein Programm einen Automatismus gebaut welcher alle für das Handbuch benötigten Screenshots selber anfertigt. Mein Problem: Man darf die Screenshots nicht zu früh machen da das Formular dann noch nicht fertig gezeichnet ist. Oder Windows spielt noch seine Einblende-Animation ab und das Fenster ist noch halb durchsichtig, solche Dinge halt.
Was kann man tun? Meine folgende Behelfslösung ist ja das unfeinste was man hätte tun können:
Delphi-Quellcode:
procedure TWinControlHelper.pauseForABit();
const
loopCount = 50;
var
loopNo: Integer;
begin
Repaint();
for loopNo := 0 to Pred(loopCount) do begin
TThread.Sleep(10);
Application.ProcessMessages();
Application.ProcessMessages();
Application.ProcessMessages();
end;
end;
Auf meinem PC sind 20 Durchläufe meist schon zu wenig, aber solche Überlegungen sind ja Quatsch.
Wie macht man es richtig? Gibt es irgendeine schlaue Windows-Botschaft welche das Fenster erhält?