Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - VK= TAB


Markos - Mi 18.08.04 10:23
Titel: VK= TAB
Hallo,

ich möchte in einem Tedit abfragen ob die Taste TAB gedrückt wurde. Dies wird laut Hilfe mit OnKeyPress und dann VK = Tab gemacht. Leider wird auch mit der Tab Taste in das nächste Edit Fenster gesprungen.

Ich möchte konkret das im TEdit1 bei betätigung der TAB Taste eine Procedure ausgeführt wird und danach der Focus in das nächste TEdit2 springt.

Bisher konnte ich es nur so lösen das bei Return die Procedure ausgeführt wird und wenn ich TAB drücke springt er ins nächste TEdit.

Bin für jeden Tip dankbar, den speziell zu diesem Thema habe ich hier im Forum nichts gefunden. Danke.

Markos


raziel - Mi 18.08.04 11:00

:?!?:
Also das tuts bei mir (D7PE) einwandfrei:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_TAB then
    showmessage('blubb');
end;


raziel


firus1983 - Mi 18.08.04 16:10

Wenns dir nur darum geht die Reihenfolge festzulegen kannst du auch auf deiner form rechtsklicken und mit dem Eintrag "Tabulatorreihenfolge" die Reihenfolge beim betätigen von TAB festlegen.

@raziel:
hab deinen code mal unter D6 Enterprise geprüft und es funktioniert nicht wirklich.... hab noch eini bisschen rumprobiert, aber leider erfolglos :cry:


raziel - Mi 18.08.04 16:26

firus1983 hat folgendes geschrieben:
@raziel:
hab deinen code mal unter D6 Enterprise geprüft und es funktioniert nicht wirklich.... hab noch eini bisschen rumprobiert, aber leider erfolglos :cry:

Was genau funktioniert denn nicht? Ich drück Tab und er springt ins nächste Edit und dann ploppt ein "blubb" auf... Halt so wie es soll...

raziel


firus1983 - Do 19.08.04 08:08

Hab rausgefunden warum es evt. nicht so klappt.
Die TAB-Taste geht Standartmäßig (scheinbar) IMMER erst mal ins nächste Feld/Button etc. Allerdings kann man festlegen, das jede Tastatureingabe zunächst erstmal an die Form geleitet wird und nich an die gerade aktive Komponente "geschickt".

Delphi-Quelltext
1:
Form1.KeyPreview:=True                    

(geht auch im Objectinspector.:mrgreen:)
Dann könntest du bei dem Keypress/KeyUp/KeyDown-Ereignis (Je nachde, was dir am besten gefällt :mrgreen: ) der Form die TAB Taste abfragen und deinen Code ausführen.
Falls du wirklich nur bei deinem Edit1-Feld den Code ausführen willst, musst du zusätzlich abfragen, welche Komponente den Focus hat.

[not testet]


rochus - Fr 10.12.04 15:51

raziel hat folgendes geschrieben:
Was genau funktioniert denn nicht? Ich drück Tab und er springt ins nächste Edit und dann ploppt ein "blubb" auf... Halt so wie es soll...

raziel


Delphi 7 Enterprise:
das blubb kommt dann, wenn du per tab in das edit gesprungen bist, nicht, wenn du rausgesprungen bist!