AGB  ·  Datenschutz  ·  Impressum  







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

KeyUp vor Basisklasse abfangen

Ein Thema von luckystar85 · begonnen am 28. Apr 2007 · letzter Beitrag vom 29. Apr 2007
Antwort Antwort
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#1

KeyUp vor Basisklasse abfangen

  Alt 28. Apr 2007, 11:34
Moinsen,

ich habe viele MDIChild die alle von einer Basisklasse abgeleitet sind. In der Basisklasse wird das FormKeyUp abgefangen und ausgewertet.
Delphi-Quellcode:
If ( Key = VK_ESCAPE ) And ( fEditMode In [emEdit, emAdd] ) Then
  btn_Cancel.Click
Else If ( Key = VK_Return ) And ( fEditMode In [emEdit, emAdd] ) Then
  btn_EditDataset.Click;
Wenn man Enter drückt dann sollen die Daten gleich gespeichert werden und bei Escape soll abgebrochen werden. Das ist auch bei 9 von den 10 MDIChild richtig so. Bei dem 10. habe ich ein RichEdit drauf und dort soll ein Enter halt einen Zeilenumbruch erzeugen und kein speichern der Daten. Ich habe jetzt schon versucht das FormKey in der abgeleiteten Form abzufangen, aber die Basisklasse wird halt zuerst ausgeführt und dann erst die Ableitung. Habe auch versucht in der Basisklasse den Sender auszuwerten, aber der hat da die Form und nicht das Control drinne. Habe auch versucht das WM_KeyUp abzufangen, aber das wird auch zu spät ausgelöst.
Habt ihr eine Idee oder Erfahrungen mit dem Problem?
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

Re: KeyUp vor Basisklasse abfangen

  Alt 28. Apr 2007, 11:42
Eine Idee nicht wirklich, aber im Notfalls könntest du es auch so wie einige Andere machen:

Strg+Enter für Zeilenwechsel und das "normale" Enter für's Speichern so lassen.

Der Vorteil wäre dabei auch, daß sich das Enter=Speichern nicht im Vergleich zu den anderen Fenstern (MDIChilds) verändert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#3

Re: KeyUp vor Basisklasse abfangen

  Alt 28. Apr 2007, 11:47
Das wäre eine Idee. Einige andere Programme machen das ja auch so.
Aber es wäre schon interessant ob es dafür eine einfache und saubere Lösung . Vielleicht hat ja jemand einen Vorschlag.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#4

Re: KeyUp vor Basisklasse abfangen

  Alt 28. Apr 2007, 12:11
Habe gerade meine eine Form umgestellt, damit Strg+Enter eine neue Zeile erstellt. Das funktoniert soweit sehr gut. Das ganze hat nur einen Nachteil. Jetzt bekomme ich zwei neue Zeilen bei Strg+Enter. Ich müsste also wirklich doch irgendwie das Enter abfangen.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#5

Re: KeyUp vor Basisklasse abfangen

  Alt 29. Apr 2007, 11:42
Habe gerade gesehen das, das RichEdit die Eigenschaft WantReturns hat. Sobald die nun auf False setze, bekomm ich immer noch einen Zeilenumbruch. Das mit Strg+Enter funzt wunderbar. Das werde ich so lassen, aber ich würde trotzdem gerne den unerwünschten Zeilenumbruch verhindern, der beim Drücken der Enter-Taste kommt.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: KeyUp vor Basisklasse abfangen

  Alt 29. Apr 2007, 12:07
Warum müssen die Button.Click's überhaupt direkt aufgerufen werden? Reicht nicht einfach das Setzen der Default bzw. Cancel Eigenschaften bei den entsprechenden Buttons?
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#7

Re: KeyUp vor Basisklasse abfangen

  Alt 29. Apr 2007, 12:14
Da es verschiedene Modi gibt. Also im Add wird halt ein Click auf btn_AddDataSet ausgeführt und beim Edit wird ein Click auf btn_EditDataSet ausgeführt.
Aber theorthisch müsste es aber möglich sein, den unerwünschten Zeilenumbruch zu verhindern, oder?
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  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 02:32 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