Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: OnTimer und Programm beenden

  Alt 4. Okt 2007, 10:32
Man kann der VCL über Application.Terminate mitteilen, dass die Anwendung beendet werden soll.
Die Anwendung wird allerdings nicht sofort beendet, sondern kann noch weiterlaufen.
Mit if Application.Terminated then ... lässt sich an strategischen Stellen überprüfen,
ob man nicht eigentlich mit der Arbeit sofort aufhören sollte.
Delphi-Quellcode:
procedure TForm_Connector.Beenden1Click(Sender:TObject);
begin
  Timer1.Enabled:=False;
  bBeenden:= true;
  Application.Terminate; // <===
  close;
end;

// PROGRAMM IN DEN TRAY MINIMIEREN ODER BEENDEN
procedure TForm_Connector.FormCloseQuery(Sender:TObject;
var CanClose:Boolean);
begin
  CanClose := Application.Terminated; // <====
  if not CanClose then
// Programm soll nur über das MenüItem "Beenden" oder über das TrayIcon "Beenden" beendet werden
// beim schließen des Fensters über das Kreuz der Form soll das Programm weiter im Tray laufen und nicht beendet werden
    CoolTrayIcon1.HideMainForm;
end;

procedure TForm_Connector.Timer1Timer(Sender:TObject);
begin
  Timer1.Enabled:= False; // Timer erstmal ausschalten und die Verzeichnis abarbeiten
  if Application.Terminated then Exit; // <====
   ...
  // hier wird nun verschiedenes Zeug abgearbeitet
  // z. B. alle Dateien eines Verzeichnisses in ein anderes Verzeichnis verschieben

  Timer1.Enabled:= True; // Timer nun wieder einschalten
end;
Andreas
  Mit Zitat antworten Zitat