Einzelnen Beitrag anzeigen

Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#12

AW: TForm anzeigen obwohl Terminate bei TForm OnCreate

  Alt 15. Jan 2011, 12:53
Da sich jeder die Mühe gemacht hat eine Antwort zu schreiben.
Habe der Fairness und des Lerneffektes wegen jede Lösung ausprobiert.
Hallo,

OnActivate musst du nehmen.
Vor deinen eigenen Methoden noch ein Application.ProcessMessages.

Das Programm beendest du dann über PostMessage(Handle, WM_CLOSE, 0, 0);
Das ging super einfach.
Im FormActivate Event habe ich nur (Vor dem Code):

OnActivate := NIL;
Application.ProcessMessages;

schreiben müssen.

Super dass es einen solchen Befehl gibt, AutoIt hat auch so etwas, bei Delphi kam ich gar nicht darauf.

Benutze einfach die Komponente TApplicationEvents und dort das Event OnIdle.

Dort prüfst du ob du schon nach einem Update gesucht hast und startest dann die Update-Prüfung.

Das Event wird zum ersten Mal dann ausgeführt, wenn die Anwendung eben nix zu tun hat, also mit dem ganzen Erstellungsgeraffel am Ende ist und alle Formulare erzeugt und angezeigt wurden.

Noch besser ist es allerdings die Updateprüfung in einen Thread auszulagern, falls es mal wieder länger dauert mit der Prüfung
Das klappt richtig klasse und war innerhalb ein paar Sekunden getan !

Reicht es, im OnIdle Event das Programm mit Application.Terminate zu beenden oder bringt PostMessage(Handle, WM_CLOSE, 0, 0) irgendwelche mir unbekannten Vorteile ?

Danke für zahlreichen Antworten in der kurzen Zeit !

Anmerkung:
(Der Updater ist ausgelagert, es ist nicht im "Hauptprogramm" enthalten)

@haentschman
Deine Methode ist quasi das "selbst erstellen eines OnIdle Ereignisses, welches ich mit dem EventManager erstellt habe.
Daher wollte ich, wie sagt man hier im Forum "Das Rad nicht neu erfinden"

@Uwe Raabe
Es wird ein Updater gestartet, bevor die "Hauptapplikation" gestartet wird.
Dieser Updater wurde aber nicht angezeigt bzw. nur ohne das TImage welches ich gesetzt hatte, darum ging es hier.
Danke für deine Antwort, allerdings empfinde ich es mit einem Time als "programmiertechnisch suboptimal" (Siehe Methode oben EventHandler).

Geändert von Mike_ (15. Jan 2011 um 16:01 Uhr)
  Mit Zitat antworten Zitat