Pfeiltasten abfragen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
corado
Beiträge: 58
Registriert: Mi 7. Aug 2013, 17:00

Pfeiltasten abfragen?

Beitrag von corado »

Ich finde im Eventmanager von Form KEyup and KeyDown, aber warum gibt es kein left and riht?
Muss man das dann händisch machen, doer bin ich nur zu blind die Option zu finden?
Hat jemand einen Codeschnipsel, wie man das handisch macht?
Irgenwie war da awas mit einer 0 und dann kommt der eigentlich Char?!

Benutzeravatar
Bullykiffer
Beiträge: 24
Registriert: Fr 9. Aug 2024, 19:44
OS, Lazarus, FPC: Windows 11 (L 3.4.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit
Wohnort: Nordvorpommern

Re: Pfeiltasten abfragen?

Beitrag von Bullykiffer »

Hallo.

Ich glaube da hast du etwas falsch verstanden.

OnKeyDown wird ausgelöst,wenn du eine Taste drückst,
OnKeyUp wird dann meines Wissens ausgelöst,wenn du die Taste wieder loslässt ;)

Deswegen gibt es auch kein Left oder Right, In den oben genannten Ereignissen,musst du selber auswerten,welche Taste gedrückt wurde und
wie du auf was reagierst ;)

Cya de Helge.

corado
Beiträge: 58
Registriert: Mi 7. Aug 2013, 17:00

Re: Pfeiltasten abfragen?

Beitrag von corado »

ah ok, ja das macht Sinn:-)

Benutzeravatar
theo
Beiträge: 11226
Registriert: Mo 11. Sep 2006, 19:01

Re: Pfeiltasten abfragen?

Beitrag von theo »

Kannst du so machen:

Code: Alles auswählen

uses LCLType....

procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  if Shift = [] then
    case Key of
      VK_LEFT: Caption := 'Left';
      VK_RIGHT: Caption := 'Right';
      VK_UP: Caption := 'Up';
      VK_DOWN: Caption := 'Down';
    end;
end;  
OnKeyUp geht auch, kommt aber erst beim Loslassen der Taste.

Benutzeravatar
Zvoni
Beiträge: 578
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Pfeiltasten abfragen?

Beitrag von Zvoni »

theo hat geschrieben: Di 3. Mär 2026, 20:05 Kannst du so machen:

Code: Alles auswählen

uses LCLType....

procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  if Shift = [] then
    case Key of
      VK_LEFT: Caption := 'Left';
      VK_RIGHT: Caption := 'Right';
      VK_UP: Caption := 'Up';
      VK_DOWN: Caption := 'Down';
    end;
end;  
OnKeyUp geht auch, kommt aber erst beim Loslassen der Taste.
Ein ganz grosser Unterschied zwischen OnKeyDown und OnKeyUp:
Hälst du eine Taste gedrückt, feuert OnKeyDown wie bescheuert (halt so oft wie der Interrupt von der Tastatur ans OS gesendet wird).
OnKeyUp feuert pro Taste immer nur einmal (wobei ich mir gerade nicht sicher bin, ob OnKeyUp für alleinige SHIFT/STRG/ALT-Taste feuert)
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

corado
Beiträge: 58
Registriert: Mi 7. Aug 2013, 17:00

Re: Pfeiltasten abfragen?

Beitrag von corado »

ah ok, ja danke.
Aber das bedeutet das das Beispiel nicht so gut geeignet wäre, mit FormKeyDown?
Wie würde man es eleganter lösen?

Benutzeravatar
theo
Beiträge: 11226
Registriert: Mo 11. Sep 2006, 19:01

Re: Pfeiltasten abfragen?

Beitrag von theo »

corado hat geschrieben: Di 10. Mär 2026, 23:20 Aber das bedeutet das das Beispiel nicht so gut geeignet wäre, mit FormKeyDown?
Warum?
Es kommt darauf an, was du damit machen willst.
Das sagtest du bisher ja nicht.
corado hat geschrieben: Di 10. Mär 2026, 23:20 Wie würde man es eleganter lösen?
Was ist hier nicht elegant?

Antworten