Mit alt+f4 das gesamte Programm beenden



  • Hallo!

    Ich habe ein programm mit mehreren Formen, nun will ich das wenn man alt+f4 betätigt nicht nur die aktuelle form geschlossen wird sondern das gesamte programm.

    🙂



  • fang doch ganz einfach in der/n form/en alle keys ab, und wenn alt+f4 gedrückt wird schließe alles (per code :))

    J0



  • aber gerade genau das wollte ich vermeiden da ich über 40 verschiedene Formen habe. Dann müsste ich über 40x den selben Code schreiben oder? Gibt es keine einfachere Lösung?



  • Mal auf Verdacht: Vielleicht hast du für die Hauptanwendung sowieso das OnIdle eingerichtet? Dort müßte das OnKey-Event auch ausgewertet werden, wenn die Form nicht aktiv ist.



  • Application->Terminate(); 😉



  • Nie gebraucht, aber rein zufällig blieb das Auge an TCustomForm::KeyPreview hängen. Das ist doch genau das, was du suchst. 40 Namen schreiben ist auch viel weniger Aufwand als in 40 Controls auf die Routine verweisen.



  • Ja ich weiß, aber es gibt ja verschiedene befehle die man in die mainform setzt und die dann von ganz alleine ALLE formen betreffen (z.b. windowsbeep deaktivieren). hät ja sein können...

    Also in jedem OnClose event reinkritzeln if taste alt + f4 dann PostQuitMessage(0)?



  • Schau dir mal die Ereignisse zu TForm an. OnClose tritt beim Schließen ein.

    OnCloseQuery wird aufgerufen, wenn geschlossen werden soll. Steht da nix drin, erfolgt der Terminierungsbefehl. Du mußt für jedes Fenster entscheiden, ob ggf. vor dem Schließen noch eine Aktion nötig sein könnte. Noch ungespeicherte Dateien, offene Dialoge, mit new erzeugte Controls.

    Childfenster werden bei Alt+F4 gemeinsam mit der Anwendung geschlossen. Für geöffnete Dialoge und weitere Programminstanzen ist je ein eigenes Alt+F4 nötig - oder eine entsprechende Anweisung.

    Vielleicht hilft dir auch ComponentCount. Vielleicht reicht aber auch die Nutzung von KeyPreview. Probier es doch einfach erst mal mit ein paar Fenstern aus.


Anmelden zum Antworten