AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MDI-Child mit ESC schließen

Ein Thema von gmc616 · begonnen am 25. Jun 2004 · letzter Beitrag vom 1. Jul 2004
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

MDI-Child mit ESC schließen

  Alt 25. Jun 2004, 14:12
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: MDI-Child mit ESC schließen

  Alt 25. Jun 2004, 14:40
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
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: MDI-Child mit ESC schließen

  Alt 25. Jun 2004, 14:52
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: MDI-Child mit ESC schließen

  Alt 26. Jun 2004, 15:26
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
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: MDI-Child mit ESC schließen

  Alt 29. Jun 2004, 12:34
Hi Muetze,

Das ein TastaturHook unangebracht ist, dachte ich mir schon.

Zitat:
Wieviele unterschiedliche MDIChilds hast du denn, das du "so viele" abändern musst?
Zu Zeit habe ich 5 MDIChild, werden aber mit sicherheit noch mehr werden.

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
  Mit Zitat antworten Zitat
BKempf

Registriert seit: 1. Jun 2004
103 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: MDI-Child mit ESC schließen

  Alt 29. Jun 2004, 13:03
Ich habe ein paar Fenster, die ohnehin einen "Close"-Button haben und auch per ESC geschlossen werden sollen.
Folgendes funktioniert wunderbar:
Delphi-Quellcode:
Button1.Cancel:=true;
...
procedure TForm.Button1Click(Sender:TObject);
begin
  Close;
end;
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.
The problem with troubleshooting is that sometimes the trouble shoots back.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: MDI-Child mit ESC schließen

  Alt 29. Jun 2004, 14:22
Zitat von gmc616:
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.
1) Erstell ein neues Fenster, pack da die Sachen rein, die alle deine ChildForms haben müssen und füg es deinem Projekt hinzu.
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 von BKempf:
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.
Uaahh, da stellen sich ja bei mir die Nackenhaare auf!!!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: MDI-Child mit ESC schließen

  Alt 29. Jun 2004, 15:38
Danke Stevie,

genauso, oder so ähnlich hatte ich mir das vorgestellt.

Das mit den versteckten Button ... naja ...

Gruß
gmc
  Mit Zitat antworten Zitat
Reiner12

Registriert seit: 30. Jun 2004
5 Beiträge
 
#9

Re: MDI-Child mit ESC schließen

  Alt 30. Jun 2004, 14:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: MDI-Child mit ESC schließen

  Alt 1. Jul 2004, 07:40
Zitat von Reiner12:
Oder hab ich was vergessen?
Hast du!
Es gibt im Formular die Eigenschaft KeyPreview.
Zitat von Delphi-Hilfe:
Die Eigenschaft KeyPreview bestimmt, ob das Formular Tastaturereignisse vor dem aktiven Steuerelement erhält.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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