AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tastendruck im Gesamten Form erkennen!

Ein Thema von Torley · begonnen am 16. Feb 2008 · letzter Beitrag vom 16. Feb 2008
Antwort Antwort
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#1

Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 12:29
Ich habe ein problem mit der steuerung meines Spieles.
ich programmiere es grade für eine arbeit neu. im alten spiel habe ich die tasten in einem timer jede ms abgefragt, nun will ich aber onkeydown oder onkeypress benutzen.

mein problem dabei ist das ich auf dem form natürlich buttons und anderes habe und onkeydown nur reagiert wenn ich keine drauf habe und das form angewählt ist.

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_Right then begin if ((richtung = 1)or(richtung = 3)) then richtung:=2; end;
  if Key = VK_LEFT then begin if ((richtung = 1)or(richtung = 3)) then richtung:=4; end;
  if Key = VK_UP then begin if ((richtung = 2)or(richtung = 4)) then richtung:=1; end;
  if Key = VK_DOWN then begin if ((richtung = 2)or(richtung = 4)) then richtung:=3; end;
end;
der code funktioniert bestens aber halt nur wenn ich keine buttons habe, aber ich brauch welche für start neu usw.

gibts da irgendeine andere art die tastendrücke zu empfangen ohne in jeden button eine keydown zu schreiben
ich hab hier im forum schon viel gesucht doch leider nicht das richtige gefunden.

Torley
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 12:38
Hallo, setze KeyPreview der Form auf True.
Thomas
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 12:39
Moin, Moin,
im Form "KeyPreview=true" setzen und die Tasten im "ONKey~~" des Forms auswerten
Ralph
  Mit Zitat antworten Zitat
HHennig

Registriert seit: 16. Feb 2007
Ort: Pforzheim
51 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 12:53
Hallo,

mit dem folgenden Code bekommst du die Tasten in der ganzen Applikation, bevor irgend eine andere Komponente sie kriegt:

type
TMyForm
.
.
procedure OnAppMsg(var Msg: TMsg; var Handled: Boolean);
end;

constructor TMyForm.Create;
begin
.
.
Application.OnMessage := OnAppMsg;
end;

.
.

procedure TMyForm.OnAppMsg(var Msg: TMsg; var Handled: Boolean);
begin
Handled := False;
if Msg.message = WM_KEYDOWN then
begin
if Msg.wParam = VK_TAB then // oder irgendeine andere Taste deiner Wahl
begin
// tue irgendwas
Handled := True;
end;

if Msg.wParam = VK_... then
begin
// tue irgendwas
Handled := True;
end;
end;
end;


Viel Erfolg!
Hartmut
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#5

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 13:28
[OT]
Bitte den Delphi-Code in [ delphi ] ... [ /delphi ]-Tags einschließen.

[/OT]
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#6

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 15:27
Ich habe jetzt Keypreview auf true gestellt jedoch ohne erfolg! der focus ist auf dem button womit ich die ganzen befehle für keydown darein schreiben müsste, jedoch wechselt der focus beim drücken der pfeiltasten die ich ja benutzen will! (Kann man das irgendwie unterbinden?)

Problem wegen steuerung ist aber gelöst:

@hhening

Dein Code geht bestens jedoch hab ich einiges ausgelassen und es geht trotzdem?!
Delphi-Quellcode:
 procedure OnAppMsg(var Msg: TMsg; var Handled: Boolean);
end;

constructor TMyForm.Create;
begin
.
.
Application.OnMessage := OnAppMsg; // den teil hab ich nur in on create geschoben
end;
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Tastendruck im Gesamten Form erkennen!

  Alt 16. Feb 2008, 15:32
Vermutlich hast du vergessen nach Auswertung/Reaktion von KEY diesen im OnKeyDown-Event auf Null zu setzen - das ist natürlich wichtig...
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz