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/)
-   -   FMX Verhinderung das Anwendung mit ALT+F4 beendet wird (https://www.delphipraxis.net/180774-fmx-verhinderung-das-anwendung-mit-alt-f4-beendet-wird.html)

matthiaskary 17. Jun 2014 09:19

FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
Hallo,

ich möchte verhindern, das ein Benutzer die Anwendung mit der
Tastenkombi ALT+F4 beendet, bzw. das nach dem betätigen der
Tastenkombi noch eine Abfrage kommt.

Bisher konnte ich das folgendermaßen lösen, doch unter Firemonkey, XE5
bekomme ich das so nicht hin, da das Ereignis OnMessage nicht
mehr vorhanden ist.

Danke.



public
procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);
end;

{...}

implementation

{...}

procedure TForm1.FormCreate(Sender: TObject);
begin
// set your applications message handler to your new one
Application.OnMessage := AppMessage;
end;

procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);
begin
// let your application handle all messages initially
Handled := False;
case Msg.Message of
WM_SYSKEYDOWN:
if Msg.wParam = VK_F4 then
Handled := True; // don't allow ALT-F4
end;
end;

matthiaskary 17. Jun 2014 09:29

AW: FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
Hallo,

Habe die Lösung schon selbst gefunden und mache das
jetzt über das Ereignis OnCloseQuery.

himitsu 17. Jun 2014 09:47

AW: FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
Ja, OnCloseQuery ist hier die richtige Lösung.


Die [DELPHI]...[/DELPHI]- oder notfalls die [CODE]...[/CODE]-Tags kennst du schon?


Tipp:
Ich empfehle die Finger von Application.OnMessage und den anderen Events zu lassen und Diese über TApplicationEvents zu machen.
Das registriert sich zwar auch bei Application.OnMessage und Co. (hätten die Embaläute mal besser nicht so machen sollen), aber dafür registriert sich das als MultyCastEvent.
Heißt, es kann mehrere TApplicationEvents geben.

Stell dir mal vor eine FremdComponente registriert sich auch dort, oder du kommst auf die Idee das nochmal in Form2 zu machen.
Dann übererschreibst du das andere Event, welches du eigentlich hättest speichern und an beim Aufruf deiner Methode wieder aufrufen müssen, was du aber nicht machst und somit die andere Funktion schrottest.


Ach ja, OnMessage ... Diese Messages sind ja eigentlich ein Windows-Ding.
Da kann es gut sein, daß man bei der FMX-Version der TApplication-Klasse diese Messages nicht mehr drin hat, weil das Ding ja potentiell auch für andere OS gedacht ist.

PS: In anderen OS wird das Programm eventuell auch nicht mit Alt+F4 beendet.

matthiaskary 17. Jun 2014 10:03

AW: FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
Danke für den Tipp !

Sir Rufo 17. Jun 2014 10:25

AW: FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
@himitsu

Delphi-Referenz durchsuchenTApplicationEvents gibt es aktuell nur für VCL ;)

Unter FMX läuft das anders
http://docwiki.embarcadero.com/Libra...onEventService

himitsu 17. Jun 2014 14:54

AW: FMX Verhinderung das Anwendung mit ALT+F4 beendet wird
 
Wobei man die Events dieses Services auch ganz leicht als eigenes TApplicationEvent-Objekt bereitstellen könnte. :angel:

Nur sowas wie die Windows-Messages gibt es dort dennoch nicht.
Gibt nur http://docwiki.embarcadero.com/Libra...plicationEvent


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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