![]() |
MDI-Child mit ESC schließen
Hi Leute,
ich bin noch relativ neu in der Delphiwelt. Ich habe eine MDI-Anwendnung geschrieben, die mehrere Childfenster öffnet. Nun möchte ich das sich jedes MDI-Child mit ESC schließen läßt. Ich habe schon über die Verwendung von TastaturHooks nachgedacht, mir auch schon ne Menge durchgelesen und ein paar Beispiele angeschaut, aber irgendwie kriege ich den Eindruck, dass ein Hook nicht die besste Lösung für mein Problem ist. Alle Hookbeispiele die habe, funktionieren immer Systemweit! Aber in meinem Fall soll der Hook nur in meiner Applikation reagieren und nicht außerhalb. Gibt es eine bessere Methode meine Fenster mit ESC zu schießen? Evtl. möchte ich später noch mit anderen Tasten b.z. durch meine Fenster springen usw. Gruß gmc |
Re: MDI-Child mit ESC schließen
Moin!
Schonmal probiert bei dem MDIChild die Eigenschaft KeyPreview auf True zu stellen und im OnKeyPressed des MDIChilds zu testen ob VK_ESCAPE gedrückt wurde und dann entsprechend das Child frei zu geben bzw. zu schliessen? MfG Muetze1 |
Re: MDI-Child mit ESC schließen
Das würde gehen, würde aber auch bedeuten, dass, wenn ich neue Tasten hinzufügen möchte, in jedem MDIChild wieder rumcoden muß.
Mir wäre es lieb, wenn ich die Hotkeys nur an einer Stelle im Soucre bearbeiten müßte und die Steuerung bzw. Verarbeitung der Tastedrücke im MDIMain abhandeln könnte. Gruß gmc |
Re: MDI-Child mit ESC schließen
Moin!
Die Tastendrücke für die MDIChilds im Hauptformular abhandeln ist irgendwie nicht so gut wie ich finde. Daher erstmal eine andere Frage: Wieviele unterschiedliche MDIChilds hast du denn, das du "so viele" abändern musst? Ansonsten bau dir doch ein Form als TMDIChild die das mit dem KeyPressed und Form Schliessen enthält und leite einfach deine ganzen MDIChilds davon ab, dann brauchst du es nur noch an einer Stelle für alle deine MDIChilds abändern. Ein globaler Hook ist viel zu viel - schon alleine weil du es nur für innerhalb deiner Anwendung brauchst... MfG Muetze1 |
Re: MDI-Child mit ESC schließen
Hi Muetze,
Das ein TastaturHook unangebracht ist, dachte ich mir schon. Zitat:
Die Sache mit dem TMDIChild hört sich gut an. Aber wie ich schon geschrieben habe, bin ich noch relativ neu in der DelphiWelt und habe daher keinen Plan, wie man eine Fensterklasse in Delphi erstellt. Ich habe schon mal mit einer eigenen TEdit-Klasse rum experimentiert und das ganze als neue Komponente dem Delphi hinzugefügt. Ich empfand das tierisch umständlich! Funktioniert das Erstellen eines TMDIChild ähnlich? Auch habe ich die Befüchtung, dass ich meine bisherigen Fenster über haufen werfen und neu aufbauen muß, nur weil sich die Klasse des Fensters ändert. Sorry, für mein Unwissen aber für einen Link zu einem TUT wäre ich sehr Dankbar. Gruß gmc |
Re: MDI-Child mit ESC schließen
Ich habe ein paar Fenster, die ohnehin einen "Close"-Button haben und auch per ESC geschlossen werden sollen.
Folgendes funktioniert wunderbar:
Delphi-Quellcode:
Notfalls koenntest du sie ja auf 1x1 Pixel Groesse ziehen und irgendwo ausserhalb des sichtbaren Teils der Form verstecken, z.B. mit Top:=-10 und Left:=-10 im Objectinspektor.
Button1.Cancel:=true;
... procedure TForm.Button1Click(Sender:TObject); begin Close; end; |
Re: MDI-Child mit ESC schließen
Zitat:
2) Öffne deine jetztigen ChildForms und ersetzt das class(TForm) durch class(TDeineMDIFormKlasse). 3) Öffne dein Formular als Text und ersetze das object in der ersten Zeile durch ein inherited. 4) Wenn du Events in einem ChildForm benutzt, die du in TDeineMDIFormKlasse implementiert hast, dann gehört in deinem ChildForm dort als erstes ein inherited rein. Zitat:
|
Re: MDI-Child mit ESC schließen
Danke Stevie, :thuimb:
genauso, oder so ähnlich hatte ich mir das vorgestellt. :bounce2: Das mit den versteckten Button ... naja ... :pale: Gruß gmc |
Re: MDI-Child mit ESC schließen
Hallo Leute,
ich habe das auch mal probiert und geht ganz gut. nur wenn ich einen Button oder ein Editfeld in das Childfenster lege, kommen die OnKeyUp-Nachrichten nicht mehr beim Fenster bzw. in der MDIChild-Klasse an. Ist ja auch irgendwo logisch, aber nicht sinn der sache! Oder hab ich was vergessen? mfg Reiner |
Re: MDI-Child mit ESC schließen
Zitat:
Es gibt im Formular die Eigenschaft KeyPreview. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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