Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi onkeypress - wie geht das? (https://www.delphipraxis.net/57971-onkeypress-wie-geht-das.html)

the-damian 29. Nov 2005 15:16


onkeypress - wie geht das?
 
Hi!

So, ich hoffe mal, dass das hier der richtige Bereich für meine Frage ist :mrgreen:

Das ganze is nämlich so, ich wollte just for fun eigentlich mit Delphi rumspielen und ein "Rennprogramm" schreiben.
Das sollte so aussehen, dass die Spieleranzahl (max. 3) eigegeben wird, und man klickt auf einen Startbutton. Dann erscheinen entsprechend der Spieleranzahl die Bilder der Tiere, die von den Spielern gesteuert werden.
Soweit klappts noch!

Dann soll aber jedem Bild eine Taste zugeordnet werden, und jedes mal wenn diese Taste gedrückt wird, soll das Bild, dass zu dieser Taste gehört, um einen bestimmten Betrag nach rechts verschoben werden.
Und das klappt jetzt nicht mehr so wirklich.
Hier ein Ausschnitt aus dem, was ich versucht hab:

procedure TRennen.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = 'a')
then begin
ImFrosch.Left := ImFrosch.Left +10;
end
end;

ImFrosch ist dabei das zu bewegende Bild, und die Taste "a" schien mir gut zu Froasch zu passen;)

Ich hoff mal, jetzt stehen hier alle Infos, die dafür nötig sind.

Ach ja, wer mir helfen kann und in der Nähe wohnt kriegt demnächst mal einen ausgegeben :cheers: :wink:

Danke schonmal,
Damian

Daniel B 29. Nov 2005 15:21

Re: onkeypress - wie geht das?
 
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = 'q' then
    Button1.Left := Button1.Left + 10;
  if Key = 'a' then
    Button2.Left := Button2.Left + 10;
  if Key = 'y' then
    Button3.Left := Button3.Left + 10;
end;
Vom Code her hast Du das schon richtig gemacht, allerdings hast Du ne kleinigkeit vergessen.
Geh in den Object Inspector und stelle für Form1 "KeyPreview" auf True. ;)
Hab zwar keine Ahnung wo Du wohnst, kannst mir aber ein dunkles Weissbier schicken. :mrgreen:

the-damian 29. Nov 2005 15:32

Re: onkeypress - wie geht das?
 
Hi!

hab grad gesehen, dass ich ein KeyPreview einstellen muss, dann klappt's!

Danke an alle, die es beinahe geschafft hätten, mir zu helfen :lol:

MfG
Damian

Puhbaehr 29. Nov 2005 15:33

Re: onkeypress - wie geht das?
 
Servus!

Also ich habe mal eben statt des Frosches ein Edit-Feld genommen. KeyPress funzt da wunderbar:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
 begin
  if (Key = 'd') then
   begin
    Self.Edit1.Left := Self.Edit1.Left + 10;
   end;
  if (Key = 'a') then
   begin
    Self.Edit1.Left := Self.Edit1.Left - 10;
   end;
 end;
Bist du sicher, dass ImFrosch.Left := ImFrosch.Left + 10; funktioniert?

Hast du das KeyPress nur im der Ereignisbehandlung fürs Form also im FormKeyPress drin oder auch in den anderen Komponenten (imFrosch z.B.)? Vielleicht helfen dir Hooks weiter... setz mal ein Beep oder ein ShowMessage in die FormKeyPress-Methode um zu sehen ob sie funzt.

Oha...Rote Box...
@Daniel B: KeyPreview scheint das Problem nicht wirklich zu löschen. Tuts bei mir zumindest nicht.

Gruß, Robert

Edit: Noch ne rote Box... stimmt du hast ja das Ereignis im Form behandelt. Ja, dann stimmt das mit KeyPreview. Viel Glück weiterhin.

the-damian 29. Nov 2005 15:34

Re: onkeypress - wie geht das?
 
Uups, und hab sogar noch übersehen, dass ich sogar schon eine Antwort hatte :oops:

I'm sorry und vielen Dank für die schnelle Hilfe!!!

Das Bier ist unterwegs;)

the-damian 29. Nov 2005 15:41

Re: onkeypress - wie geht das?
 
So, hoffentlich kommt diesmal keine neue Antwort, solange ich noch am tippen bin :-D
Also, mit dem Quelltext-Fetzen, den ich hier reingesetzt hab, funktioniert's bei mir wunderbar seit ich KeyPreview oder wie das heißt auf True gesetz hab.

thx @ Daniel B und Puhbaehr!

MfG
Damian


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