![]() |
pfeiltasten
hi.... programmiere grad ein bomberman clone als info-projekt in der schule... player1 läuft schon... palyer2 nicht... dieser sollte mit der pfeiltasten und der entertaste gesteuert werden... komme nicht mit dem OnKeyPres zurecht... kann mir das mal jem kurz erklären??
folgendermaßen hab ich die delphi-hilfe verstanden... und wenn ich im Form1 onKeyPress clicke erscheint das auch so in meinem quelltext... was ist falsch???
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if key = VK_LEFT then begin if (feld[p2x,p2y] <> 'kiste') and (feld[p2x,p2y-1] <> 'wand') then begin //.... end; end; |
Re: pfeiltasten
Delphi-Quellcode:
begin //Taste A
if ab=true then begin if GetKeyState($41) < 0 then begi ab:=false; [...] end; end; if GetKeyState($41) >= 0 then begin ab:=true; [...] end; end; |
Re: pfeiltasten
Hi,
die Delphi-Hilfe sagt zum Thema ![]() Delphi-Hilfe: [...] Über diese Konstanten kann dann in Windows-API-Aufrufen oder in den Ereignisbehandlungsroutinen für OnKeyUp und OnKeyDown auf die Tasten Bezug genommen werden. OnKeyUp und OnKeyDown haben andere Parameter als OnKeyPress, welches Du benutzt. OnKeyDown/OnKeyUp ist vom Typ TKeyEvent:
Delphi-Quellcode:
während OnKeyPress vom Typ TKeyPressEvent ist:
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
Delphi-Quellcode:
Der Parameter Key ist bei OnKeyPress also kein Word, sondern ein Char.
type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;
Die Konstanten VK_* sind aber Word. Daher rührt vermutlich Dein Fehler. Mit einer Fehlerbeschreibung was denn genau nicht geht (Compilermeldung?) wäre die Frage einfacher zu beantworten ;) PS: Keine Ahnung, ob das hier hilft, aber schau Dir evtl. mal ![]() Gruß Stephan |
Re: pfeiltasten
Die uebliche Verwechslung von Tastendruecken und den daraus resultierenden Zeichen. OnKeyDown und OnKeyUp operieren auf der Ebene von Tastendruecken. Sie sind eine Umsetzung von WM_KEYDOWN und WM_KEYUP. Nachdem ein Programm diese Messages empfangen hat generiert es (im DispatchMessage) WM_CHAR Messages. Damit sind wir auf der Ebene von Zeichen. Diese sind es die OnKeyPress handhabt. Es besteht keine 1:1 Relation! Man bekommt nur WM_CHAR Messages fuer Tastendruecke die ein Zeichen erzeugen. Zusaetzlich kann es mehrere WM_KEYDOWN und WM_KEYUP benoetigen um ein WM_CHAR zu bekommen. Bei diakritischen Zeichen naemlich.
Anmerkung: Das ist vereinfacht. |
Re: pfeiltasten
okay... danke erstmal.... ich versuch mich mal dran...
lg... eif =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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-2025 by Thomas Breitkreuz