AGB  ·  Datenschutz  ·  Impressum  







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

Auf Shift-Tab in TEdit reagieren ???

Offene Frage von "winx"
Ein Thema von winx · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

Auf Shift-Tab in TEdit reagieren ???

  Alt 17. Aug 2006, 07:30
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
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

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

  Alt 17. Aug 2006, 07:48
Ich habe Delphi-Referenz durchsuchenTWinControl.OnKeyDown und windows.pas kontrolliert und sehe direkt auch keine Ursache. Aber:
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#3

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

  Alt 17. Aug 2006, 08:15
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
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

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

  Alt 17. Aug 2006, 08:59
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

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

  Alt 17. Aug 2006, 09:05
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!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#6

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

  Alt 17. Aug 2006, 09:15
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.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

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

  Alt 17. Aug 2006, 09:35
Hallo winx,

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

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

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

  Alt 17. Aug 2006, 09:46
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#9

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

  Alt 17. Aug 2006, 10:04
danke!!!
  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 12:15 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