Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

VCL: Wann ist ein Formular fertig gerendert?

  Alt 28. Okt 2015, 11:56
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?
  Mit Zitat antworten Zitat