Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Auf Shift-Tab in TEdit reagieren ??? (https://www.delphipraxis.net/75287-auf-shift-tab-tedit-reagieren.html)

winx 17. Aug 2006 07:30


Auf Shift-Tab in TEdit reagieren ???
 
Hi,

wie kann erfahren, ob der Benutzer in einem TEDit die Tastenkombination
Shift + Tab gedrückt hat ?

Hab das so probiert.

Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

  if (shift = [ssShift]) and (key = 9) then
    showmessage('DOWN: '+Inttostr(key));

end;
aber irgendwie bekomm ich nie die Message...

danke,
winx

Jürgen Thomas 17. Aug 2006 07:48

Re: Auf Shift-Tab in TEdit reagieren ???
 
Ich habe Delphi-Referenz durchsuchenTWinControl.OnKeyDown und windows.pas kontrolliert und sehe direkt auch keine Ursache. Aber:
Zitat:

Zitat von Delphi-Hilfe: OnKeyDown Beispiel
Beachten Sie, daß KeyPreview auf True gesetzt werden muß, damit die Ereignisbehandlungsroutine für Form1 aufgerufen wird.

War's das? Jürgen

winx 17. Aug 2006 08:15

Re: Auf Shift-Tab in TEdit reagieren ???
 
wenn ich key preview auf treu stelle funktionierts auch irgendwie nich.

hab mal einen haltepunkt in der prozedur gesetzt. (erste zeile).

Nur Shift gedrückt => Er kommt in die Prozedur
Nur Tab gedrückt => Er kommt NICHT in die Prozedur
Nur Shift+Tab gedrückt => Er kommt NICHT in die Prozedur
Buchstabe (a,b,c,...) gedrückt => Er kommt in die Prozedur

Schnall ich nicht

Jürgen Thomas 17. Aug 2006 08:59

Re: Auf Shift-Tab in TEdit reagieren ???
 
Zitat:

Zitat von winx
wenn ich key preview auf treu stelle funktionierts auch irgendwie nich.

hab mal einen haltepunkt in der prozedur gesetzt. (erste zeile).

Nur Shift gedrückt => Er kommt in die Prozedur
Nur Tab gedrückt => Er kommt NICHT in die Prozedur
Nur Shift+Tab gedrückt => Er kommt NICHT in die Prozedur
Buchstabe (a,b,c,...) gedrückt => Er kommt in die Prozedur

Schnall ich nicht

Ich auch nicht:
1. KeyPreview := true ist unbedingt nötig, nicht nur ein Versuch.
2. Laut Hilfe und windows.pas ist die Tab-Taste #9, und diese wird von KeyUp/KeyDown (nicht KeyPress) ausgewertet.
3. Den Haltepunkt hätte ich auch als nächstes vorgeschlagen.

Versuch doch einmal, KeyUp auszuwerten.

Übrigens: der Übersichtlichkeit halber schlage ich folgende Schreibweise vor:
Delphi-Quellcode:
  if (shift = [ssShift]) and
    key = VK_TAB)   //  <--
  then showmessage('DOWN: '+Inttostr(key));
Jürgen

s.h.a.r.k 17. Aug 2006 09:05

Re: Auf Shift-Tab in TEdit reagieren ???
 
Ist zawr eher umständlich und meines Erachtens nicht so schön, aber wie wärs wenn du die Windows-Messages für die Tastatureingaben anfängst, dann ausließt, ob deine Tasten gedrückt sind, und dann noch testest ob das bestimmte Edit den Focus hat?!

PS: Bin mit dem OnKeyPress und wie die anderen Proceduren auch immer heißen nicht wirklich zufrieden. Diese liefern nur Ergebnisse, wenn es sich um "normale" Tasten handelt!

Sidorion 17. Aug 2006 09:15

Re: Auf Shift-Tab in TEdit reagieren ???
 
Du musst WMGetDlgCode überschreiben und zum geerbten Ergebnis DLGC_WANTTAB dazubringen. Wenn das nicht enthalten ist, bekommt das Element die Tabs erst garnicht sondern Windows setzt den Focus um.
Danach kannst du den VK_TAB abfragen.

Hawkeye219 17. Aug 2006 09:35

Re: Auf Shift-Tab in TEdit reagieren ???
 
Hallo winx,

bei den Schweizern findest du mögliche Lösungen für dein Problem.

Gruß Hawkeye

SirThornberry 17. Aug 2006 09:46

Re: Auf Shift-Tab in TEdit reagieren ???
 
KeyPreview muss übrigens nicht auf True gesetzt werden. Dies ist nur notwendig wenn man die Tasten in den Key-Events des Forms erhalten will. Wenn man aber die Events des Edits belegt ist es nicht notwendig.

winx 17. Aug 2006 10:04

Re: Auf Shift-Tab in TEdit reagieren ???
 
danke!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 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