Einzelnen Beitrag anzeigen

Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Auf Abmelden/Herunterfahren in onClose reagieren

  Alt 27. Okt 2009, 19:57
Hi,
ich denke Du solltest mal dies versuchen:

Delphi-Quellcode:
Interface

  Type
    tForm1 = class(TForm)
    ...
      procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
   private
     FEndSession: boolean;
     TrayMessageDone: boolean;
   protected
      procedure WMQueryEndSession(var msg: tMessage); message WM_QUERYENDSESSION;
      procedure WMEndSession(var msg: tMessage); message WM_ENDSESSION;



   end;

Implementation

procedure tForm1.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := FEndSession; // wenn endsession flag gesetzt, dann kompromisslos beenden
  if not CanClose then
  begin
    if not TrayMessageDone then
    begin
      TrayMessageDone := true;
      showmessage('wir gehen jetzt in den Tray');
    end;
    // minimieren oder in den tray legen.
    Hide;
  end;
end;

procedure tForm1.WMEndSession(var msg: tMessage);
begin
  FEndSession := bool(msg.wParam);
  if FEndSession then
  begin
    // aufräumarbeiten durchführen
    // ich lagere diese in eine Prozedur Finish aus, und rufe sie hier und im FormDestroy auf.
    // achtung - nur einmal aufrufen - flag setzen
  end;
  msg.result := 0;
end;

procedure tForm1.WMQueryEndSession(var msg: tMessage);
begin
  FEndSession := true;
  bool(msg.result) := TRUE;
end;
ungetestet, aber ähnlich mache ich es in meinen Programmen auch - ausser der TrayMessage.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat