![]() |
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
wie wärs mit :
Delphi-Quellcode:
Und zwar im OnKeyPress des Grids. Bei dir steht "key = 13", vermute deshalb, daß es im OnKeyDown ist und somit eventuell zu früh.
if key = #13 then
Col := Col + 1; |
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
Im OnKeyDown ist der Key ein 'Virtual Key Code'.
Im OnKeyPress kommen nur 'druckbare' Zeichen an (also keine Cursor- oder Funktionstasten). Hier ist Key ein Char und bezeichnet das Zeichen selbst. Richtig wäre im OnKeyDown der Form (mit KeyPreview=True) das hier:
Delphi-Quellcode:
Das ist eigentlich das genau Gleiche wie der nicht funktionierende Code von Karstadt, aber "besser", weil mit VK_ Konstanten (obwohl VK_RETURN = 13 und VK_TAB = 9 :mrgreen: ).
Procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin If Key= VK_RETURN Then Key := VK_TAB; end; Das funktioniert auch mit DBGrid und allen anderen Controls... wenn, ja wenn man der Form über
Delphi-Quellcode:
sagt, das sie (die Form) die Tastendrücke bitte zuerst bekommen soll. Denn offensichtlich wird das ENTER von irgendwem abgefangen. Mit KeyPreview=True passiert das meistens nicht. Da es aber einige Controls gibt, die sich per WndProc noch vor das OnKeyDown der Form schalten, wäre die perfekte Vorgehensweise, die WndProc der Form zu überschreiben. Hier fängt man die WM_KEYDOWN - Message ab und ändert im Message-Record den wParam entsprechend.
MyForm.KeyPreview = True
|
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
Wozu soll man denn immer Komponenten benutzen ? Es ist doch viel sinnvoller keine zu benutzen, da die Qualität des Programms dadurch steigt.
|
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
Komponenten? Weils einfach ist. Aber stell die Frage in einem eigenen Thread.
|
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
Zitat:
Delphi-Quellcode:
Luckie hat ja den Link zu EnterTab bereits gepostet. Die Controls der Form werden bei mir immer mit Enter verlassen / bestätigt. Dies bedeutet EnterTab setzen und KeyPreview auch auf true setzen. Aber eben NICHT im Grid (siehe Source) !!! Hier irrt sich der Künstler. :mrgreen:
procedure TfrmEin.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin EnterTab(Sender,Key,Shift,[],[],true); end; procedure TfrmEin.sgEnter(Sender: TObject); begin KeyPreview := false; sg.SetFocus; ... end; procedure TfrmEin.sgExit(Sender: TObject); begin KeyPreview := true; end; ... |
Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 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