Zitat von
geskill:
Hey,Was du machen kannst und wie viele es machen, per Rechtsklick auf das Tray Icon ein Beenden Menü einblenden.
Letztes Problem: Windows fährt herunter. Hier kannst du das Event von Windows abfangen (WM_QUERYENDSESSION) und kurz vorher noch deine Einstellungen speichern und gegebenenfalls das Herunterfahren verzögern.
Zitat von
perlsau:
Ich würde in diesem Fall vorsorglich jedesmal nach dem Minimieren ins Tray speichern. Dann kann das Programm ruhig abgeschossen werden, es ist dann bereits alles in trockenen Tüchern.
Das sind die 3 wichtigsten Maßnahmen, und zusätzlich kann man noch folgendes tun:
Einen ganz normalen Menüpunkt zum Beenden in das Mainmenu einfügen, wodurch dann das Programm nicht minimiert wird, sondern direkt beendet werden kann. Hierzu braucht man dann eine Formvariable zur Entscheidung im OnClose.
Delphi-Quellcode:
procedure TMainform.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if FTrayIconActive then begin
Application.Minimize;
CanClose := false;
end;
if CanClose then SaveAllDataAndLogout;
end;
Der Close-Event - sowohl im Tray-Menü als auch im Mainmenu - sieht dann so aus:
Delphi-Quellcode:
procedure TFrmHwpPhone.mTrayMenuCloseClick(Sender: TObject);
begin
FTrayIconActive := false;
Close;
end;
So nebenbei hat die Hilfsvariable den Vorteil, dass ich damit wahlweise das Verhalten des Programmes steuern kann, bzw. der Anwender selber entscheiden kann, ob er dieses Minimieren in den SysTray überhaupt möchte. Somit geht man allen unnötigen Diskussionen mit den Usern aus dem Weg, und anwenderfreundlich ist es auch