Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richtungsänderung für kleine Grafik (https://www.delphipraxis.net/141806-richtungsaenderung-fuer-kleine-grafik.html)

Mysterio08 16. Okt 2009 16:16


Richtungsänderung für kleine Grafik
 
Guten Tag,
ich möchte ein kleines "Spiel" (wenn man es denn schon so nennen darf) programmieren. Ich habe mir auf einem TImage Hindernisse einfärben lassen und erstelle mit einem Timer jede zwanzigstel Sekunde 2 gleichgroße Kreise - einen zum anzeigen für den Benutzer und einen um den anderen wieder "unsichtbar" zu machen. Jetzt ist mein Problem, dass ich die Richtugsänderung nicht programmiert bekomme. Ich habe eine RadioGroup mit "nach oben", "nach rechts" etc. und werte nun das OnKeyDown-Ereignis der TForm so aus.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = Ord('E') then RadioGroup1.ItemIndex := 0;
  if Key = Ord('X') then RadioGroup1.ItemIndex := 0;
  if Key = Ord('A') then RadioGroup1.ItemIndex := 0;
  if Key = Ord('D') then RadioGroup1.ItemIndex := 0
end;
Jetzt gibt es allerdings nie eine Änderung, es muss irgendwo eine Störung geben!
Ich habe in den Timer auch schon folgende Zeile erfolglos geschrieben:
Delphi-Quellcode:
Form1.SetFocus
Ich bin gerade echt ratlos!

mfg.

haentschman 16. Okt 2009 16:38

Re: Richtungsänderung für kleine Grafik
 
Hallo...

du setzt ja auch mit jedem Key die Radiogroup auf Index 0.

versuch mal
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = Ord('E') then RadioGroup1.ItemIndex := 0;
  if Key = Ord('X') then RadioGroup1.ItemIndex := 1;
  if Key = Ord('A') then RadioGroup1.ItemIndex := 2;
  if Key = Ord('D') then RadioGroup1.ItemIndex := 3;
end;

Mysterio08 16. Okt 2009 16:42

Re: Richtungsänderung für kleine Grafik
 
Sorry, Copy und Paste und dann vergessen, es entsprechend umzuändern... Im Quelltext ist es anders, es klappt aber trotzdem nicht.

Matze 16. Okt 2009 16:46

Re: Richtungsänderung für kleine Grafik
 
Hast du mal versucht die Eigenschaft Delphi-Referenz durchsuchenKeyPreview des Formulars auf true zu setzen?

Mysterio08 16. Okt 2009 17:45

Re: Richtungsänderung für kleine Grafik
 
Zitat:

Zitat von Matze
Hast du mal versucht die Eigenschaft Delphi-Referenz durchsuchenKeyPreview des Formulars auf true zu setzen?

Ja, eben gerade und es funktioniert, vielen Dank dafür!
Jetzt ist noch ein kleines Problem hinzugekommen, ich will die Steuerung ändern, und zwar möchte ich die Num-Taste 2, 4, 6 und 8 verwenden. Ich weiß, dass die 8 den ASCII-Wert #56 hat aber es funktioniert nur mit der 8, mit der ich auch Klammern schreiben kann. Welchen Wert muss ich nehmen?
mfg.

Matze 16. Okt 2009 18:00

Re: Richtungsänderung für kleine Grafik
 
Hallo,

du kannst statt dem OnKeyDown-Ereignis das OnKeyPress-Ereignis nutzen. Dann stehen dir die virtuellen Tastencodesvirtuellen Tastencodes zur Verfügung:

Delphi-Quellcode:
// Numpad 8
if Key = VK_NUMPAD8 then
Grüße, Matze

Mysterio08 17. Okt 2009 15:21

Re: Richtungsänderung für kleine Grafik
 
Zitat:

Zitat von Matze
Hallo,

du kannst statt dem OnKeyDown-Ereignis das OnKeyPress-Ereignis nutzen. Dann stehen dir die virtuellen Tastencodesvirtuellen Tastencodes zur Verfügung:

Delphi-Quellcode:
// Numpad 8
if Key = VK_NUMPAD8 then

Ich habe das gerade mal ausprobiert, ich bekomme immer eine Fehlermeldung: "Inkompatible Typen". Und ich werte schon das OnKeyPress-Ereignis aus

Sir Rufo 17. Okt 2009 15:31

Re: Richtungsänderung für kleine Grafik
 
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_NUMPAD8 then

end;
Bei FormKeyPress geht dass nicht, weil Key vom Typ Char ist!
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin

end;

Matze 17. Okt 2009 15:39

Re: Richtungsänderung für kleine Grafik
 
Sorry, hab's verwechselt. Ich wusste nur mit einem geht's, mit dem anderen nicht. :oops:

Mysterio08 17. Okt 2009 15:41

Re: Richtungsänderung für kleine Grafik
 
Macht nichts, klappt jetzt wunderbar! Merci


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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