Entwickler-Ecke

Sonstiges (Delphi) - Auf und Ab Pfeiltasten ins nächste Editfeld !


Jagg - Di 03.12.02 17:02
Titel: Auf und Ab Pfeiltasten ins nächste Editfeld !
Hiiiiiiiiiii !

Wie realisiere ich,das ich mit den Auf und Ab Pfeiltasten ins näschte EditFeld gelange ???

Jagg !


Savage - Di 03.12.02 17:35

Hi,

das kannst du mit den Virtuellen Tastencodes machen:

Pfeiltaste:

nach oben - vk_up
nach unten - vk_down
nach links - vk_left
nach rechts - vk_right

Im Im Ereignis ONKeyUp oder ONKeyDown vom Editfeld eine If-Anweisung schreiben.

z.B.:

Quelltext
1:
if key = vk_down then edit1.setfocus;                    


Mfg
Savage


Delete - Di 03.12.02 18:13

Könnte ab mehreren Edits etwas mühsam werden. Eleganter ist auf jden Fall: WM_NEXTDLGCTL.


LCS - Mi 04.12.02 09:11

Heute kommt der erhobene Zeigefinger mal von mir :mrgreen:
Warum willst du die Standards von Windows (TAB und SHIFT-TAB) ändern? Ich persönlich wäre da gar nicht sehr erfreut.

Ich hab das auch schon mal gemacht (mit ENTER zum nächsten Eingabeelement) um Umsteigern von DOS Programmen die Sache ein bisschen zu erleichtern. Es war ein Fiasko :autsch:

Gruss Lothar


Delete - Mi 04.12.02 09:16

Das Hinterfragen von solchen Aktionen habe ich schon lange aufgegeben. Ich helfe einfach nur noch - wenn es nicht zu unsinnig ist. Nicht dass man dann noch für den Unsinn verantwortlich gemacht wird.


Jagg - Mi 04.12.02 09:26

Hi !

Hier ist der Code für die Taste "PfeilUnten" :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm11.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_Down then
  begin
    Self.Perform(WM_NEXTDLGCTL,0,0);
  end;
end;

...funktioniert wunderbar !

Hier ist der Code für die Taste "PfeilOben" :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm11.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_Up then
  begin
    Self.Perform(WM_NEXTDLGCTL,1,0);
  end;
end;

...funktioniert auch wunderbar,aber wenn ich die Taste gedrückt halte,möchte ich,das der Cursor schnell zu jedem nächsten EditFeld springt (und nicht,das ich jedes mal,wenn ich zum nächsten Feld gehen will,die Taste drücken muss)
Bei der PfeilUnten Taste macht er das !

Könnt ihr mir helfen ?

Jagg !


LCS - Mi 04.12.02 09:31

Wie soll denn eine Taste die du festhälst ein OnKeyUp Ereignis auslösen? Und warum schreibst du das überhaupt in zwei unterschiedliche Ereignisroutinen?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm11.Edit1KeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState); 
begin 
  case Key of
    VK_DOWN: Self.Perform(WM_NEXTDLGCTL,0,0); 
    VK_UP: Self.Perform(WM_NEXTDLGCTL,1,0); 
  end; 
end;


Gruss Lothar


Jagg - Mi 04.12.02 09:57

danke