AGB  ·  Datenschutz  ·  Impressum  







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

Buttons in Hintergrund schieben

Ein Thema von scholzi265 · begonnen am 3. Feb 2020 · letzter Beitrag vom 4. Feb 2020
Antwort Antwort
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#1

Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:20
Hey Leute,

ich programmiere gerade ein kleines Spiel und möchte meinen Spielcharakter mit den Pfeiltasten steuern können. Ich habe in die OnKeyDown-Prozedur von Form1 geschrieben, was passiert wenn key = vk_up / key = vk_left / .... ist, allerdings funktioniert die Steuerung nicht.
Denn auf dem Formular sind außerdem noch 2 Buttons, und wenn ich eine Pfeiltaste drücke, wird ein Button umrandet und der andere verliert seine Umrandung.
Ich habe die bereits geschriebene OnKeyDown-Prozedur von Form1 zu Button1/Button2 hinzugefügt, allerdings funktioniert es immernoch nicht.
Wie bekomme ich diese Buttons in den Hintergrund, ohne dass ich ButtonX.Enabled := false benutze, denn die Buttons sollen im Spiel noch benutzt werden können?

Vielen Dank schon einmal im Vorraus,
Tristan
  Mit Zitat antworten Zitat
Gyrospeter

Registriert seit: 11. Apr 2019
49 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:34
Poste doch mal einen Auszug deines Codes
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:37
Mit den Pfeiltasten wechselst du den Fokus der Buttons.

Eine einfache Lösung wäre z.B. statt der Pfeiltasten, andere Tasten zu verwenden (Numblock, WASD, ...)
Im FormKeyDown musst du dann die Tasten abfragen, aber ich glaube das hast du ja schon getan.

Edit: Du kannst auch in den Properties deiner Buttons mal die Eigenschaft "TabStop" auf false setzen. Eventuell hilft das, wenn du die Pfeiltasten verwenden möchtest.
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.

Geändert von Minz3 ( 3. Feb 2020 um 14:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:51
Im FormKeyDown musst du dann die Tasten abfragen
Wer dort bereits verarbeite Tasten nicht auf 0 bzw #0 setzt, ist selbst Schuld, wenn noch jemand Anderes drauf reagiert.

Und Form.KeyPreview nicht zu vergessen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:53
Ach würde es nicht sogar schon reichen, statt TButtons TSpeedButtons zu verwenden? Die können doch nicht fokussiert werden oder steh ich grad aufm Schlauch?
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 14:54
Wer dort bereits verarbeite Tasten nicht auf 0 bzw #0 setzt, ist selbst Schuld, wenn noch jemand Anderes drauf reagiert.
Wat wie wo? Hat er geschrieben, dass er die Tasten auf 0 setzt? Hab ich was überlesen?
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.
  Mit Zitat antworten Zitat
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#7

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 15:03
Wie kann ich denn den Key auf 0 bzw. #0 setzen, und was bringt mir das?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

AW: Buttons in Hintergrund schieben

  Alt 3. Feb 2020, 17:22
> OnKeyDown, OnKeyup und OnKeyPress
Ratet mal, warum der Parameter Key als VAR definiert wurde,
damit man nachfoldende Behandlungen steuern kann, wie z.B. Zeichen/Taste ändern, bzw. komplett zurücksetzen.
(Verhalten entsprechend anderen Methoden, wo man z.B. mit einen Boolean-VarParameter oder -Result gibt, mit dem Abbruch bzw. Fortsetzen mitteilen kann)

Wenn du die Taste verarbeitet hast und nicht willst, dass noch jemand anderes die Taste ebefalls behandelt,
dann Key auf 0 setzen und schon ist das Standardverhalten des Buttons weg.
* nicht auf 0 setzen und was Eigenes machen = Zusätzliches verhalten
* auf 0 setzen und was Eigenes machen = alternatives Verhalten
* auf 0 setzen und nichts machen = nur Standardverhalten abschalten

Und KeyPreview auf True, damit das Event der Form vor den Events der Komponenten kommt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#9

AW: Buttons in Hintergrund schieben

  Alt 4. Feb 2020, 07:33
Vielen Dank für die schnelle Hilfe!
  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 06:42 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