![]() |
Tabulator-Taste simulieren, um ins nächste Editfeld zu...
... gelangen :)
Salut! Meine Form ist voll mit Editfeldern, knapp 30 an der Zahl. Nun soll der Benutzer von einem ins nächste gelangen, indem er Enter drückt, anstatt Tab. (linke Hand woanders, da ist das recht angenehm, wenn man mit der rechten was eingibt und mit Enter weiterkommt). ICh könnte zwar die Editfelder durchnummerieren von 1 bis 30, und dann per FindComponent eine einzige Proc schreiben, die immer in das nächsthöhere Editfeld "springen" lässt, ich könnte auch für jedes OnKeyDown-Ereignis eine Proc schreiben, die in das nächste Editfeld springen lässt, oder aber ich könnte...? Das suche ich. Die 3. Lösung. Die Editfelder sollten bezeichnende Namen beibehalten, und ich will nicht 30 Proceduren schreiben, für jedes OnKeyDown eine. Habt ihr ne Idee? thx tyle |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Versuch es mal hiermit:
Delphi-Quellcode:
Grüße
//next control:
SendMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0); //prior control: SendMessage(Handle, WM_NEXTDLGCTL, 1, 0); Mikhal |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
on key press:
Delphi-Quellcode:
if Key = #13 then begin
Key := #0; PostMessage(Handle,WM_NEXTDLGCTL,0,0); end; |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
super! Danke für die schnellen Antworten, und danke für die Lösung.
Funktioniert beides, ich entscheide mich für PostMessage, da jenes laut Hilfe den Aufruf verzögert weitergibt. Kann vielleicht von Vorteil sein :) thx a lot tyler |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
PostMessage gibt die Nschricht verzögert weiter? Wo hast du denn das gelesen? Im Gegensatz zu SendMessage kehrt PostMessage sofort zurück, während SendMessage erst zurückkehrt, wenn die Nachricht vom Empfänger verarbeitet wurde.
|
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Hallo,
Dieser Code ueberprueft auch, ob Shift + Tab gedruckt wird. (um Fokus ins vorherige Control zu setzen)
Delphi-Quellcode:
if Key = #13 then
begin Key := #0; { check, ob SHIFT - Taste gehalten } if GetKeyState(VK_Shift) and $8000 <> 0 then PostMessage(Handle, WM_NEXTDLGCTL, 1, 0) else PostMessage(Handle, WM_NEXTDLGCTL, 0, 0); end; |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Zitat:
Zitat:
@toms: DAnke, aber Shift+Tab funktioniert ja auch so, mir gings wirklich nur darum, die Editfelder mit Enter in einem Rutsch mit einer Hand am Keyboard durchspringen zu können.... (wie damals, zu alten Pascal-Zeiten ;) ) tyler |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Zitat:
mfg, trocki |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Zitat:
hast Du mal den Code von Toms versucht? Sprich Key := #0 in deiner Methode? |
Re: Tabulator-Taste simulieren, um ins nächste Editfeld zu..
Zitat:
Mercie für den Hinweis! trocki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 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