Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Form zeigt sich nicht trotz .show etc.

  Alt 12. Jun 2009, 13:22
Ok, folgende Aufgabenstellung:
Ein Formular soll angezeigt werden und soll sofort einige Dinge abarbeiten und gleichzeitig den Fortschritt anzeigen.
Das Problem dabei ist, dass Delphi kein Event ala OnAfterShow bereitstellt.
Die Events OnActivate und OnShow werden schon abgefeuert, wenn das Formular noch gar nicht sichtbar ist.
Das ist die Erklärung dafür weshalb dein Beispiel nicht funktionieren kann.

Es gibt zwei mögliche Lösungen:
Lösung A:
1.) einen Timer auf's Formular setzen, Enabled=False und Interval auf 1000
2.) deinen gesamten Code aus dem OnTimer-Event aufrufen
3.) der 1. Befehl im OnTimer-Event muss sein Timer1.Enabled := False;
so wird verhindert, dass der Code mehrfach ausgeführt wird
4.) im Event OnShow wird der Timer gestartet
Delphi-Quellcode:
procedure TForm1.FormOnShow(Sender:TObject);
begin
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1OnTimer(Sender:TObject);
begin
  Timer1.Enabled := False;
  DoMyWork;
end;

procedure TForm1.DoMyWork;
begin
  // hier deinen gesamten Arbeitcode rein
end;
Lösung B:
hier wird aus OnShow eine Windows-Message an das eigene Formular geschickt.
Wie das genau funktioniert verrate ich wenn du Lösung A erfolgreich probiert hast.
fork me on Github
  Mit Zitat antworten Zitat