AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form ist während OnActivate noch nicht sichtbar
Thema durchsuchen
Ansicht
Themen-Optionen

Form ist während OnActivate noch nicht sichtbar

Ein Thema von hsbc · begonnen am 15. Nov 2006 · letzter Beitrag vom 15. Nov 2006
Antwort Antwort
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#1

Form ist während OnActivate noch nicht sichtbar

  Alt 15. Nov 2006, 15:53
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Form ist während OnActivate noch nicht sichtbar

  Alt 15. Nov 2006, 15:56
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
Heiko
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#3

Re: Form ist während OnActivate noch nicht sichtbar

  Alt 15. Nov 2006, 16:10
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:
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;
Das "OK" kommt erst nach dem Ablauf der 5 Sekunden und danach wird erst die Form gezeichnet.


So------- der Fehler ist jetzt behoben. War meine Schuld. Hatte bei der Form borderstyle auf bsDialog eingestellt und das geht das nicht.




mfg
Herbert
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz