Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Systemmenü - Fenster schließen abfangen... (https://www.delphipraxis.net/61517-systemmenue-fenster-schliessen-abfangen.html)

Mazel 22. Jan 2006 14:57


Systemmenü - Fenster schließen abfangen...
 
Hallo,

ich möchte, dass das schließen aus dem Systemmenü abgefangen wird: "Fenster schließen Alt+F4". Ich habe es mit folgendem Code probiert, doch er fängt nur die Tastenkombination Alt+F4 ab und nicht den Klick auf den Item in dem Menü.

Delphi-Quellcode:
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  If Message.CmdType and $FFF0 = SC_CLOSE then Hide;
  inherited;
end;
Dies funktioniert beim drücken von Alt-F4 und beim Klicken auf die Windows Schließen Schaltfläche rechts oben, jedoch nicht aus dem Menü heraus. Was kann ich machen, damit auch dies funktioniert?

Gruß
Mazel

F.W. 22. Jan 2006 15:23

Re: Systemmenü - Fenster schließen abfangen...
 
Zitat:

Dies funktioniert beim drücken von Alt-F4
Möchtest du generell alle schließen-messages abfangen?

Schau dir doch mal das Ereignis OnFormClose deines Formulars an! Speziell den var-Parameter Action!
In der Hilfe steht was er bewirkt!

Christian Seehase 22. Jan 2006 15:24

Re: Systemmenü - Fenster schließen abfangen...
 
Moin Marcel,

Du könntest, statt die Messages abzufangen, einfach im OnCloseQuery dass Schliessen des Fensters verbieten, bis, z.B., eine Bestimmte Bedinungung zutrifft, damit Du es überhaupt mal schliessen kannst. Oder Du müsstest das Programm dann per Application.Terminate beenden, da hier, u.a., OnCloseQuery übergangen wird.

Mazel 22. Jan 2006 15:39

Re: Systemmenü - Fenster schließen abfangen...
 
Danke, :thumb:

mit OnClose oder OnCloseQuery funktioniert es. Warum bin ich nicht darauf gekommen? Warum habe ich das mit WMSysCommand probiert, wo es doch so einfach ist mit OnClose? :wall:

Jedenfalls klappt es!

Gruß
Mazel

F.W. 22. Jan 2006 18:31

Re: Systemmenü - Fenster schließen abfangen...
 
Wer es über das Abfangen von Messages machen möchte, kann dafür auch die Message WM_CLOSE verwenden:

Delphi-Quellcode:
  private
    procedure WMClose(var Msg: TWMClose); message WM_CLOSE;
cya Felix


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz