Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem beim "Anvisieren" von der Form bzw. Buttons (https://www.delphipraxis.net/136215-problem-beim-anvisieren-von-der-form-bzw-buttons.html)

kellerassel007 25. Jun 2009 20:46


Problem beim "Anvisieren" von der Form bzw. Button
 
Hi,
ich habe schon seit Wochen ein Problem, für das ich einfach keine Lösung finde.
Ich bin es bisher immer umgangen.
Doch nun muss ich es lösen.
Es taucht folgendermaßen auf:
Ich habe ein Programm geschrieben, wobei ein eingefügtes Image durch die Pfeiltasten gesteuert wird.
Soweit so gut, alles klappt, doch arbeite ich nun kurz im Internetbrowser oder mit einem anderem Programm und klicke dann wieder auf mein Programm ist ein Button anvisiert (also so schwarz umrandet).
Wenn ich nun eine Pfeiltaste drücke, passiert nichts, weil das Programm natürlich nur den Tastendruck für den Button registriert,
meine Programmanweisungen sind aber nur für Tastendrücke bei der Form geschrieben.
Ich könnte jetzt natürlich sämtliche Anweisungen kopieren und bei jedem Button unter Keydown einfügen oder ich könnte es auch mit lokalen Labels versuchen, das ist mir aber beides zu umständlich.
Weiß jemand wie man einstellt, welches Element anvisiert ist?
Oder hat jemand eine andere Lösung?
Bin dankbar für jede Antwort! :gruebel:

isilive 25. Jun 2009 20:58

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Man sagt: Das momentan anvisierte Control hat den FOCUS.

Für Controls wie Buttons gibt es die Methode Button1.setFocus .
Vielleicht gibt es diese Methode auch für's Form (Hab grad kein Delphi hier).

Hope that helps, isilive

alzaimar 26. Jun 2009 05:01

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Setz mal KeyPreview der Form auf True. Dann werden die Tastatur-Ereignisse der Form zuerst angesprungen.
Welches Form-Ereignis wird ausglöst, wenn die Form den Focus bekommt? Dieses Ereignis kannst Du auch verwenden.

kellerassel007 26. Jun 2009 14:55

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Danke für die beiden Antworten, :thumb:
zuerst zu der Zweiten:
Leider gilt die Eigenschaft Keypreview nur für normale Tasten, aber nicht für die Pfeiltasten.
Sonst hätte es funktioniert.
Wenn ich in meine Schleife den Befehl setFocus einbaue, bleibt der Focus immer noch auf dem Button und kehrt nicht zurück zur Form.
Ich glaube das liegt aber am Befehl.
Wäre nett, wenn das jemand bei sich ausprobieren könnte (also mit der Tabtaste einen Button anvisieren und dann den Befehl SetFocus machen und dann gucken ob nun die Form anvisiert ist).Ich habe mir momentan notgedrungen damit geholfen, alle Buttons auf der Form immer wieder sichtbar und dann wieder unsichtbar zu machen, denn so geht auch der Focus weg.
Jedoch nimmt das natürlich zu viel Leistung in Anspruch.
Hat jemand villeicht noch eine gute Idee auf Lager ?

isilive 27. Jun 2009 07:52

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Hab's kurz durchprobiert.

Form.setfocus gibt es zwar, aber es scheint als bleibt der Fokus auf dem aktuellen Control bestehen - also zum Beispiel am Button.

Was wäre wenn du zum Beispiel ein Panel , oder ein anderes Control zum Abfragen verwendest?

Du könntest dann ins Form/OnMouseEnter Ereignis ein panel.setfocus setzen. Das funzt habs grad getestet.

kellerassel007 27. Jun 2009 17:45

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Danke auch an dich,
ich verzweifle grade fast. :wall:
Ich habe jetzt schon soo viel probiert.
Ich könnte zwar alle Buttons durch Panels ersetzen, aber das sieht doch dumm aus!
Das muss doch wohl auch anders gehen.
Ich habe auch schon überlegt, wenn der Benutzer den Button anvisiert hat und nicht die Form, wie es eigentlich sein sollte,
und er dann auf eine Pfeiltaste drückt, um das Image zu steuern,
einen Tastendruck für die Form zu simulieren.
Das klappt jetzt auch nach einigem Rumprobieren bis ich es endlich verstanden habe...
Das Problem, das dabei aufgetaucht ist, ist aber, dass kein Ereignis ausgelöst wird, wenn der Benutzer auf eine Pfeiltaste drückt, während der Button anvisiert ist.
Normalerweise müsste jadas Ereignis ONKEYDOWN ausgelöst werden, wird es aber nicht!
Ich denke das liegt daran, dass das die Pfeiltasten dafür beansprucht, durch die verschiedenenen Elemente durchzuscrollen also so ähnlich wie die TAB-Taste.

Villeicht weiß es aber auch jemand besser (was ich hoffe) und kann mir sagen, welches Ereignis ausgelöst wird wenn ein Button anvisiert ist und ich eine Pfeiltaste drücke.
Wäre super!

kellerassel007 27. Jun 2009 18:14

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Ich habe eine Lösung :bounce2:
Ich steuere das Spiel jetzt einfach nicht mehr mit den Pfeiltasten sondern mit anderen Tasten und schon geht es.
Wenn der Benutzer den Button anvisiert hat, wird ein Tastendruck simuliert und der Button unsichtbar und wieder sichtbar gemacht.
dann ist die Form wieder anvisiert und der tastendruck lief trotzdem nicht ins leere.

Helmi 27. Jun 2009 18:25

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Hallo,

und was wäre, wenn du SpeedButtons, anstatt den normalen Buttons nimmst?
die haben nämlch keinen Fokus

himitsu 27. Jun 2009 18:48

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
statt den Button unsichtbar und wieder sichtbar zu machen, lieber nur ActiveControl auf NIL setzen.
PS: da kannst du auch gleich noch im OI as Standard machen, dann dürfte der Button von Anfang an ohne Fokus sein.
Delphi-Quellcode:
// im OI
{Form.}ActiveControl := nil;
{Form.}KeyPreview := True;
{Form.}ActiveControl := nil;
Button.TabStop := False;

// in Button.OnClick
ActiveControl := nil;

Luckie 27. Jun 2009 19:14

Re: Problem beim "Anvisieren" von der Form bzw. Bu
 
Zitat:

Zitat von kellerassel007
Leider gilt die Eigenschaft Keypreview nur für normale Tasten, aber nicht für die Pfeiltasten.

Hä? Du sollst die Eigenschaft KeyPreview des Formulares auf True setzen und nicht von irgendwelchen Tasten, wie auch immer du das gemacht hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Seite 1 von 2  1 2      

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