![]() |
Eine Methode zum schließen der Formulare mit der ESC-Taste
Hallo DPler,
erst mal Glückwunsch zum 5. Geburtstag!!! Ich bin mal wieder auf den Trip meine Quellcodes zu verschönern. So ich habe folgendes anliegen. Immer wenn ich eine Formular (Form) habe, gebe ich dem User die Möglichkeit dieses Fenster mit der ESC-Taste zu schließen. Hat was mit Benutzerfreundlichkeit zu tun. Aber das ist eine andere Geschichte. Dadurch, dass ich diese Funktion bei jeder Form habe, habe ich natürlich in jeder Unit die gleiche procedure. Ich würde es gerne schaffen, dass ich das nur einmal habe. Also eine procedure die alle Fenster im gesamten Programm mit der ESC-Taste schließen lässt. Wie kann ich das realisieren? Ich würde mir sehr viel arbeit sparen und die Programm währen um einiges übersichtlicher. Bezüglich anzahl der Methoden in einer klasse. Hier nochmal ein bisschen Code wie ich das mit den Fenstern schließen mache. Leider habe ich diese Methode in jeder Klasse.
Delphi-Quellcode:
Vielen Dank schon mal im vorraus!
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if shift=[] then begin case key of 27 : Close; end; end; end; MFG Christian18 |
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Dazu musst du nur eine leere Form nehmen, den Code reinsetzen und das ganze dann in die Objektablage tun - aber nicht vergessen, dann später auch immer die Form aus der Ablage zu nutzen ;)
|
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Hallom
oder "übersetzt" Benutze Formular-Vererbung. Heiko |
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Zitat:
Gruß, SirTwist |
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Wie SirTwist schon geschrieben hat, gehört auf jedes Formular ein Abbrechen/Schliessen-Button.
|
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Ich möchte da widersprechen.
Nur secondary windows benötigen diese prominenten Aktionsschalter (OK, Cancel) - und auch nur dann, wenn eine Aktion damit verknüpft ist. Die beiden Eigenschaften Default und Cancel sind bequem, aber kein hinreichender Grund für den Einsatz dieser Buttons. Zum bloßen Schließen eines Fensters kann auch der CloseButton aus der Titelleiste verwendet werden. Modale Dialoge ohne Aktionsschalter möchte ich mit der Esc-Taste schließen können, bei nicht-modalen Fenstern bevorzuge ich die Tastenkombination Strg+F4. Wichtig ist vor allem Konsistenz - wenn nicht systemweit, dann wenigestens in der eigenen Anwendung. Freundliche Grüße |
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Okay, wir sind uns also einig: Dialoge, die man per Tastaturbefehl "Escape" schließen kann, müssen zwingend auch einen Button "Close" / "Schließen" / sonstwas haben. Okay? ;-) Dann kann ich auch die Eigenschaft "Cancel" benutzen und brauch nicht dediziert auf irgendwelche Key-Events zu reagieren.
|
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
und wenn der Fragesteller es doch so will wie beschrieben dann kann er TApplicaitonEvents nutzen. Dort einfach die Key-Message abfragen und wenn es Escape ist dann einfach das aktive Formular schließen.
|
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
Hallo,
Zitat:
Der Vorschlag von Dax in Beitrag #2 scheint mir ideal zu sein. Freundliche Grüße |
Re: Eine Methode zum schließen der Formulare mit der ESC-Tas
In Beitrag #2 bzw. #3 wurde alles wichtige gesagt. Allerdings etwas zu knapp. Rest ist Geplänkel am Rande. Wird eine zentrale Stelle benötigt (wer braucht bei diversen Forms zum schließen 10 verschiedene Tasten ? ), um programmweit eine Eigenschaft zu ändern, dann müssen die Forms auch als inherited aus der Objektablage genommen werden ! Glaube da steht auf deutsch "vererben". Wer hingeht und benutzt "verwenden" oder "kopieren", der verfielfältigt zwar leicht Source-Teile und spart Arbeit, aber er verliert auch den Vorteil einer zentralen Anlaufstelle bei eventuellen Änderungen (die ja dann vererbt werden). Und nicht vergessen : da kann ja auch noch viel mehr reingepackt werden : Farben, Schriftarten, Mouse/Tastatur Events usw. Will einer bei mir unbedingt gelbe Forms haben, dann ist das eine Sache von einer Zeile und projektweit haben alle Forms dann die Gelbsucht. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz