Autor Beitrag
GR-Thunderstorm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: Mi 24.01.07 12:26 
Ich möchte ein kleines Spiel basteln und für die Steuerung brauche ich die FormKeyDown und /-Up Funktionen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = ord('d'then
   gehe;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = ord('d'then
   stehe;
end;


Das Problem ist, dass wenn ich die Taste 'd' Drücke, nichts passiert... :(

Wenn ich das "if key = ord('d') then" weglasse, führt er meine Prozeduren bei jeder Taste aus.
Was mache ich falsch?
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 24.01.07 13:10 
if chr(Key)='d'

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.01.07 13:37 
user profile iconBlackheart666 hat folgendes geschrieben:
if chr(Key)='d'
Ist doch exakt dasselbe... :lol:

Was du doch jedenfalls machen willst, ist doch wohl, dass du kontinuierlich weiterläufst solange die Taste gedrückt ist, oder? Wo machst du denn das?
Dein Code hier ist jedenfalls erstmal korrekt. Aber was passiert, wenn die Methoden ausgeführt werden denn?

OnKeyDown wird ja nur einmal beim Drücken ausgelöst, insofern müsste ja in gehe ein Timer oder irgendwas anlaufen, wenn etwas passieren soll, solange die Taste gedrückt wird.
GR-Thunderstorm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: Mi 24.01.07 18:06 
Ja genau, gehe ist eine Prozedur, die diverse Timer startet die für verschiedene Bewegungen zuständig sind.
Mit "stehe;" werden diese wiederrum allesamt deaktiviert.

Leider nur funktioniert das so alles eben nicht... :/

Wenn ich mit form.keypress arbeite und dann if key = 'd' then gehe; angebe, funtioniert ja alles, nur dass ich eben auf diese Weise die Prozedur stehe; nicht ausführen kann.


Edit:
Um die ganzen Timer mit den zusammenhängenden Variablen auch noch zu erklären, müsste ich den gesamten Quellcode hier posten, und der geht schon über mehrere Seiten... ;)
GR-Thunderstorm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: Mi 24.01.07 18:35 
Argh ich hab den Fehler gefunden.. -.-'

if key = ord('D') then ..;

Mit nem großen D klappts, mit nem kleinen nicht. -.-

Trotzdem erstmal Danke! :)