Autor Beitrag
contondant
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.09.07 06:08 
Hallo zusammen,

ich hab eine (wahrscheinlich) äusserst einfache Frage, auf die Google leider nix findet...

Beim klicken auf das Beenden-Kreuz des Formulars kommt eine Abfrage, ob das Tray-Icon auch beendet werden soll.
Funktioniert soweit, nur: Diese Abfrage kommt auch beim Herunterfahren von Windows (ähnlich wie Word, wenn ein Text nicht gespeichert wurde).

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  a : boolean;
begin
  a :=  MessageDlg('Tray auch beenden?' ,
               mtConfirmation,
               [mbYes,mbNo],
               0) = mrYes;
  if a then
    CanClose:= true
  else
  begin
    CanClose:= false;
    Form1.Visible := false;
    Form1.TrayIcon.HideTaskbarIcon;
  end;
end;


Das Tray-Icon ist ein TCoolTrayIcon


Danke schonmal!

Florian

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.09.07 08:08 
Mit folgendem Code sollte sich das Problem lösen lassen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
  private
    FAllowClose: Boolean;
    procedure WMEndSession(var Message: TMessage); message WM_ENDSESSION;
    procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION;

procedure Tform1.WMEndSession(var Message: TMessage);
begin
  FAllowClose := True;
  Close;
  
  inherited;
end;

procedure Tform1.WMQueryEndSession(var Message: TMessage);
begin
  FTaskIcon.Active := False;
  FAllowClose := True;
  Close;
  
  inherited;
end;


Icon-Namen anpassen.
contondant Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.09.07 11:42 
Hallo,

leider lies sich das Problem damit nicht lösen. Dazu muss ich sagen, ich bin Delphi-Anfänger und hab deinen Code nur entsprechend angepasst eingebaut.
Einen Aufruf der Prozeduren hab ich jetzt mal nicht hinzugefügt, die werden vom Programm selbstständig aufgerufen wenn Windows den Beenden-Befehl sendet, oder?

Active := False;

wurde ersetzt durch

Enabled := False,

das Active gibt's beim CoolTrayIcon nicht.


Danke trozdem
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.09.07 13:03 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    CanClose:= FAllowClose;
end;


Man könnte auch die ganze Prozedur ersatzlos entfernen...