AGB  ·  Datenschutz  ·  Impressum  







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

OnKeyDown funktionert nicht

Ein Thema von Lumpiluk · begonnen am 16. Mär 2009 · letzter Beitrag vom 17. Mär 2009
Antwort Antwort
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#1

OnKeyDown funktionert nicht

  Alt 16. Mär 2009, 17:38
Hallo!

Ich habe ein Problem, und zwar habe ich auf meiner Form für ein Snake-Spiel einen Button, einen Timer, eine PaintBox und zwei Label. Der Button ist da, um ein neues Spiel zu starten und vorerst habe ich es so eingestellt, dass OnCreate der Button gedrückt wird und man gleich damit loslegen kann, die Schlange über die Pfeiltasten zu steuern.
Das funktioniert auch einwandfrei, bis bei "Game Over" Alles zurückgesetzt und der Timer gestoppt wird. Wenn man dann auf den Button klickt, um neu anzufangen, läuft auch alles ganz normal mit der Ausnahme, dass Alles, was ich in OnKeyDown eingegeben habe, nicht mehr funktioniert, obwohl KeyPreview = True und bei dem Button Default = False ist...

Ich hoffe, mir kann hier jemand helfen.
Danke im Voraus!
Angehängte Dateien
Dateityp: zip ls_snake_176.zip (237,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#2

Re: OnKeyDown funktionert nicht

  Alt 16. Mär 2009, 19:20
Das Problem ist, dass in dem Moment, wo Button1 geklickt wird, der Focus, also im Endeffekt das Objekt deines Formulars, bei welchem das Event bei Tastatureingabe ausgelöst wird, nicht mehr bei Form1 liegt, sondern auf dem Button.

Wenn du jedoch in die Prozedur des "OnClick" ereignisses am schluss den Focus wieder wieder an Form1 zurückgibst:

 form1.SetFocusedControl(self); Wirst du sehen, dass dann auch wieder die Tastatureingaben funktionieren.

Achtung: Es gibt Probleme, wenn du in der Form.create schon den Button.OnClick auflöst, da dann versucht wird, dem Formular schon den Fokus zu geben, obwohl selbiges noch nicht angezeigt wird. Evtl musst du den Code, den du in Form.create hast einfach mal in Form.OnShow schreiben, oder das auslösen des Button.OnClick aus dem Form.create löschen.


Grüße,
Michael
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: OnKeyDown funktionert nicht

  Alt 16. Mär 2009, 19:36
Eventuell hilft es auch schon wenn du im OI KeyPreview auf true setzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#4

Re: OnKeyDown funktionert nicht

  Alt 16. Mär 2009, 19:39
Danke, das hat mein Problem im Grunde gelöst!
Allerdings funktioniert es noch nicht ganz, wenn ich pausiere... Vielleicht liegt's an 'was Anderem.

an Luckie:
Zitat von Lumpiluk:
..., obwohl KeyPreview = True...

Edit: Hat sich erledigt. Man muss jetzt zum Pausieren auf einen Button klicken. Da habe ich das gleiche wie mit dem "Neues Spiel"-Button gemacht. Vielen Dank nochmal!
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#5

Re: OnKeyDown funktionert nicht

  Alt 16. Mär 2009, 19:50
Selbes Problem: Das PauseLabel erhält den Fokus. Du musst direkt nach dem PauseLabel.visible=True den Fokus wieder zurück an Form1 geben!
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#6

Re: OnKeyDown funktionert nicht

  Alt 17. Mär 2009, 20:41
So, ich glaube, weitestgehend bin ich jetzt fertig. Hier ist das fertige Spiel. Gesteuert wird natürlich mit den Pfeiltasten.
Angehängte Dateien
Dateityp: zip snake_139.zip (2,35 MB, 10x aufgerufen)
  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 05:07 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