AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem beim "Anvisieren" von der Form bzw. Buttons
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim "Anvisieren" von der Form bzw. Buttons

Ein Thema von kellerassel007 · begonnen am 25. Jun 2009 · letzter Beitrag vom 28. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
kellerassel007

Registriert seit: 12. Mai 2009
24 Beiträge
 
#1

Problem beim "Anvisieren" von der Form bzw. Button

  Alt 25. Jun 2009, 21:46
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!
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#2

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

  Alt 25. Jun 2009, 21:58
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
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

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

  Alt 26. Jun 2009, 06:01
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
kellerassel007

Registriert seit: 12. Mai 2009
24 Beiträge
 
#4

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

  Alt 26. Jun 2009, 15:55
Danke für die beiden Antworten,
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 27. Jun 2009, 08:52
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.
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
kellerassel007

Registriert seit: 12. Mai 2009
24 Beiträge
 
#6

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

  Alt 27. Jun 2009, 18:45
Danke auch an dich,
ich verzweifle grade fast.
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!
  Mit Zitat antworten Zitat
kellerassel007

Registriert seit: 12. Mai 2009
24 Beiträge
 
#7

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

  Alt 27. Jun 2009, 19:14
Ich habe eine Lösung
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.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#8

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

  Alt 27. Jun 2009, 19:25
Hallo,

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

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 27. Jun 2009, 19:48
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

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

  Alt 27. Jun 2009, 20:14
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:20 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