![]() |
Form ist während OnActivate noch nicht sichtbar
Bei einer meiner Anwendungen wird während des Abarbeitens der einzelnen Anweisungen im OnActive-Ereignis die Form nicht angezeigt, auch dann nicht, wenn einige Application.ProcessMessages eingebaut sind. Erst wenn alle Befehle im OnActivate durch sind, wird die Form angezeigt. Bei allen meinen anderen Anwendungen ist dies nicht so.
Was kann da schuld sein, bzw. wie kann ich erreichen, dass im OnActivate die Form bereits aufgebaut wird. Ich brauche das, da ich nach dem Start der Anwendung für 5 sec (mittels Timer) einen Button anschreibe, mit dem Benutzer die Möglichkeit hat, das automatische Weiterarbeiten des Programmes abzubrechen. Der Timer wird im OnActivate gestartet. Obwohl auch im OnTimer-Ereignis ein Application.ProcessMessages eingebaut ist, wird die Form erst nach Ablauf des Timers angezeigt. Wie kann ich erreichen, dass die Form rechtzeitig angezeigt wird? mfg Herbert |
Re: Form ist während OnActivate noch nicht sichtbar
Hallo,
also ich benutze das auch so (in FormActivate App.ProcessMessages aufrufen). Da machst irgendwas anderes falsch. Ist dass ProcessMessages noch vor dem Timer ? Heiko |
Re: Form ist während OnActivate noch nicht sichtbar
Ich hab schon alles probiert, vor dem Timer, nach dem Timer. Ich hab auch schon statt dem Timer eine selbstgeschriebene Pause-Funktion verwendet, es ist immer das gleiche. Die Form wird erst nach dem vollständigen Ablauf der 5 Sekunden angezeigt.
Hier ist z.B. meine Pause-Funktion und die FormActivate:
Delphi-Quellcode:
Das "OK" kommt erst nach dem Ablauf der 5 Sekunden und danach wird erst die Form gezeichnet.
function TForm.Pause(Zeit: LONGINT): BOOLEAN;
var StartZeit: LONGINT; begin // Zeit = Anzahl Millisekunden Pause Abgebrochen := FALSE; Startzeit := GetTickCount; repeat Application.ProcessMessages; IF Abgebrochen THEN Zeit := 0; until (GetTickCount - Startzeit > Zeit) or (Zeit = 0); Result := NOT Abgebrochen; end; procedure TForm.FormActivate(Sender: TObject); begin // ... Initialisierung verschiedener Parameter // ... if Pause(5000) then // Machweiter; ShowMessage('OK'); end; So------- der Fehler ist jetzt behoben. War meine Schuld. Hatte bei der Form borderstyle auf bsDialog eingestellt und das geht das nicht. mfg Herbert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz