![]() |
Programm mit Tastatur steuern?
Liste der Anhänge anzeigen (Anzahl: 1)
Hab folgende Freeware (siehe Screenshot) mit zwei Pfeilen, nach Links und Rechts. Zur Zeit kann man sie nur mit der Maus betätigen. Ich will es aber so haben, dass sie auch mit der Pfeiltasten auf der Tastatur betätigt werden können.
Hab aber keine Idee wie es geht, wer kann mir helfen? Ich kenne sowas ähnliches mir EditFeld und OnKeyDown aber hier... keine Ahnung. :gruebel: |
Re: Programm mit Tastatur steuern?
Form.OnKeyUp -> Form.KeyPreview := TRUE
|
Re: Programm mit Tastatur steuern?
Zitat:
Wie erkenne ich die Tasten, wie lautet der Code? Für Enter z.B. CH(13) und für die Links-Rechts Tasten? |
Re: Programm mit Tastatur steuern?
Wenn du bei deinem Form die Eigenschaft KeyPreview auf True stellst, dann wird jeder Tastendruck auch an das Formular übergeben, so dass bei jedem Tastendruck die Events OnKeyDown, OnKeyUp aufgerufen werden ...
Zitat:
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
Schau auch mal in die Unit Windows, da sind die Tasten als Konstanten definiert (VK_*)
|
Re: Programm mit Tastatur steuern?
Hab jetzt folgenden Code
Delphi-Quellcode:
Das funkt auch, aber das hier:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key=CHR(VK_RETURN) then showmessage('ok'); end;
Delphi-Quellcode:
nicht, ich frage mich wieso? :gruebel:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key=CHR(VK_RIGHT) then showmessage('ok'); end; |
Re: Programm mit Tastatur steuern?
Auch das ist bereits vorgekaut in dem Link nachzulesen. :roll:
|
Re: Programm mit Tastatur steuern?
ähhh ... lesen hilft ja bekanntlich ... wir sprachen immer von OnKeyDown, OnKeyUp ... niemales von OnKeyPress :mrgreen:
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
ahhhhhhh ... nimm statt dem Event OnKeyPress das Event OnKeyDown ... nur da kannst du die Pfeiltasten abfragen!
|
Re: Programm mit Tastatur steuern?
Zitat:
|
Re: Programm mit Tastatur steuern?
Bei OnKeyDown OnKeyUp funkt überhaupt nicht, nicht mal Enter.
|
Re: Programm mit Tastatur steuern?
Du brauchst nicht 2 Ereignisse, sondern du kannst bei diesen 2 Ereignissen die Info zu den Pfeiltasten bekommen.
Du entscheidest, wann du reagieren möchtest Taste runter -> OnKeyDown Taste rauf -> OnKeyUp (denn wat runter muss auch wieder rauf) |
Re: Programm mit Tastatur steuern?
Hallo,
OnKeyPress Warum nicht ShowMessage(Key) OnKeyDown Es wird direkt VK_X abgefragt.
Delphi-Quellcode:
If Key=VK_RIGHT
Heiko |
Re: Programm mit Tastatur steuern?
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin KeyPreview := True; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage( Format( '%d', [ Key ] ) ); end; end. |
Re: Programm mit Tastatur steuern?
Na endlich :thumb:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin If Key=VK_RIGHT then showmessage('Rechts'); If Key=VK_LEFT then showmessage('Links'); end; |
Re: Programm mit Tastatur steuern?
Übrigens: Wenn sich da nicht alles geändert hat, findet man eine Liste der VK-Konstanten unter
![]() edit: Zur Not wäre auch noch GetAsyncKeystate / GetKeystate möglich (falls man eine sofortige Reaktion wünscht):
Delphi-Quellcode:
procedure TFormX.TimerXTimer(Sender: TObject);
// -------------------^ Intervall klein begin if GetAsyncKeystate(VK_LEFT) < 0 then ShowMessage('Links'); end; |
Re: Programm mit Tastatur steuern?
Irgendwie reagierеt das Programm auf die Right- u. Downtaste ganz komisch und das liegt nicht am Code, denn wenn ich die Funktion der Lefttaste (was sehr gut funkt) der rechten zuweise - spinnt das Prog. Wird der Code wieder zurück der linken zugewiesen geht alles ok.
Also bei den Right- und Downtaste funktioniert alles ok, bei den Left- und Uptaste nicht. :gruebel: |
Re: Programm mit Tastatur steuern?
Kann mir niemand helfen? :pale:
|
Re: Programm mit Tastatur steuern?
Hallo,
ohne Code ? < es liegt nicht am Code > Hm, im Explorer funktionieren alle 4 Tasten, was MS da wohl wieder verbrochen hat ... Im Ernst: Natürlich liegt es an deinem Code! Hänge mal ein Minimal-Programm (ohne Exe), was das Problem zeigt an den nächsten Post. Heiko |
Re: Programm mit Tastatur steuern?
Ich weise den beiden Tasten die gleiche Funktion zu und sie arbeiten unterschiedlich. Ich spinne doch nicht. Die selbe Funktion, per VK_Left funkt alles richtig, VK_Right nicht. :wall: VK_Up auch ok, VK_Down spinnt wie die VK_Right.
|
Re: Programm mit Tastatur steuern?
Hallo,
und was sollen wir ohne Code tun ? Raten ? Ich weiss ja nicht mal, was die aktuell auf deinem Form hast. Mach ein Minimal-Bsp., was sich kompilieren läßt, und hänge es an ein Post. Heiko |
Re: Programm mit Tastatur steuern?
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Code
Delphi-Quellcode:
Jetzt das Problem - beide Tasten haben die gleiche Aufgabe. Jetzt wählt mal in der ComboBox irgendwas aus, falls die Stelle falsch ist - erscheint das oben-rechts im Form. Jetzt klickt man die linke Taste kommt ein neuer Vers, die Fehlermeldung verschwindet und in der ComboBox erscheint der Text "Der Vers steht in...?" So muss es auch sein!
procedure TForm1.dsAnzeigen;
begin Label1.Caption:=losungen[z].ntvers; Label2.Caption:=losungen[z].ntversst; Label1.Width:=328; Image19.Hint:=losungen[z].ntversst; end; procedure TForm1.Image16Click(Sender: TObject); begin if z=366 then begin z:=1; dsAnzeigen; Panel1.Visible:=True; Panel1.SetFocus; Panel1.Visible:=False; ComboBox1.ItemIndex:=0; end else begin Inc(z); dsAnzeigen; Panel1.Visible:=True; Panel1.SetFocus; Panel1.Visible:=False; ComboBox1.ItemIndex:=0; end; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If Key=VK_Left then begin Image16Click(Sender); end; If Key=VK_Right then begin Image16Click(Sender); end; end; Jetzt macht man das selbe mit der rechten Taste - spinnt das Prog, die Fehlermeldung verschwindet nicht und die ComboBox1.Text bekommt den ItemIndex:=1 obwohl es die 0 sein muss. Wenn man aber die Taste das zweite mal klickt geht wieder alles ok. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 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 by Thomas Breitkreuz