AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Ereignis, das beim Druck auf Richtungstasten reagiert
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignis, das beim Druck auf Richtungstasten reagiert

Offene Frage von "Ogridi"
Ein Thema von Ogridi · begonnen am 12. Apr 2006 · letzter Beitrag vom 13. Apr 2006
Antwort Antwort
Ogridi

Registriert seit: 9. Apr 2006
4 Beiträge
 
#1

Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 12. Apr 2006, 15:09
Hallo,

Ich suche nach einem Ereignis, dass ausgelöst wird, wenn der Nutzer auf eine der Richtungstasten drückt (links / rechts / oben / unten). Ich habe ein Frame implementiert und würde gern noch ne Tastatursteuerung dazu entwerfen; dazu brauch ich aber so ein Ereignis. Und das Standart-OnKeyDown-Event wird bei mir nicht ausgelöst, wenn ich auf eine dieser Tasten drücke. Genauso wenig leider die Message WM_KEYDOWN.

Weiß jemand Rat?

Ogridi
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 12. Apr 2006, 15:41
aus der Delphi-Hilfe (onKeyDown -> Siehe auch -> Die Verarbeitungsreihenfolge...) zu Delphi7:
Zitat:
Das Formular besitzt eine Eigenschaft KeyPreview, mit der Sie "globale" Tastaturereignisse abfangen können.
also musst du im Formular die Property "KeyPreview" auf TRUE setzen.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 12. Apr 2006, 19:29
Hallo.

Wenn man dem Verweis auf KeyPreview folgt, dann erfährt man folgendes:

Zitat:
Die Einstellung bezieht sich nicht auf Navigationstasten (TAB, Pfeiltasten usw.), da diese keine Tastaturereignisse auslösen. Ähnliches gilt, wenn eine Schaltfläche den Fokus hat oder wenn dessen Eigenschaft Default den Wert true hat. Die Eingabetaste wird von KeyPreview nicht berücksichtigt, da diese kein Tastaturereignis auslöst.
Vermutlich ist es am einfachsten, wenn man die Ereignisbehandlung des Frames anpasst.

Grüße vom marabu
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 12. Apr 2006, 19:53
Hallo,

Vielleicht läßt sich Dein Problem mit Actions lösen. Lege eine Actionlist auf das Frame, füge vier Actions hinzu und trage in die Eigenschaft ShortCut der Actions jeweils eine der Richtungstasten ein. In der Behandlungsroutine OnExecute der Actions kannst Du nun die gewünschte Reaktion auf das Drücken der Richtungstasten programmieren.

Wenn Du das Frame im Formular benutzt, wirst Du feststellen, daß die Richtungstasten immer von der ActionList abgefangen werden. Um dies temporär abzuschalten, setzt Du die Eigenschaft State der Actionlist vorübergehend auf den Wert asSuspended.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Ogridi

Registriert seit: 9. Apr 2006
4 Beiträge
 
#5

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 13. Apr 2006, 12:47
Danke erstmal für die zahlreichen Antworten. Leider komm ich damit aber noch nicht viel weiter .

Zitat:
also musst du im Formular die Property "KeyPreview" auf TRUE setzen.
Ich will doch innerhalb des Frames ein Ereignis bekommen. Wenn ich das auf true setze, wird das Ereignis doch gleich an die Form weitergeleitet und ich bekomme es dort, oder? Ich hab's aber auch mal ausprobiert, es funktioniert so leider wirklich nicht.


Zitat:
Vermutlich ist es am einfachsten, wenn man die Ereignisbehandlung des Frames anpasst.
Wie soll ich sie denn anpassen? Eine KeyPreview-Eigenschaft hat der Frame leider nicht.


Zitat:
Vielleicht läßt sich Dein Problem mit Actions lösen. Lege eine Actionlist auf das Frame, füge vier Actions hinzu und trage in die Eigenschaft ShortCut der Actions jeweils eine der Richtungstasten ein.
Da lässt sich bei mir aber keine Richtungstaste eintragen...


Ich verstehe auch nicht so wirklich, weshalb die Richtungstasten nicht als normale Tasten gelten. Sie verändern doch den Fokus gar nicht. Und genügend Steuerelemente (z.B. EditBox, ListBox, ScrollBar etc.) implementieren doch auch Funktionen dafür!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 13. Apr 2006, 12:57
Zitat von Ogridi:
Da lässt sich bei mir aber keine Richtungstaste eintragen...
Die Richtungstasten sind zwar nicht in der Auswahlliste enthalten, man kann sie aber direkt eingeben. Die vor Dir benötigten Namen sind "Links", "Rechts", "Nach oben", "Nach unten" (für eine deutsche Delphi-Version).

Gruß Hawkeye
  Mit Zitat antworten Zitat
Ogridi

Registriert seit: 9. Apr 2006
4 Beiträge
 
#7

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 13. Apr 2006, 15:16
Ich hab grade noch den Tip gekriegt, dass es eine WM_GETDLGCODE - Message gibt. Mit deren Rückgabewert kann man steuern, welche 'Spezial'-Tastaturereignisse an das Control weitergegeben werden.

Also nochmal für alle, die evtl. irgendwann mal mein Problem teilen:

Delphi-Quellcode:
procedure GetDlgCode(var Message : TMessage); message WM_GETDLGCODE;

...

procedure TFrame.GetDlgCode(var Message : TMessage);
begin

  Message.Result := DLGC_WANTARROWS;
  
end;
Wie gesagt, trotzdem vielen Dank für all die Vorschläge! Ist ja auf alle Fälle schonmal schön, dass sich jemand um einen kümmert .

@Hawkeye219: In meinem deutschsprachigen Delphi 5 geht das leider nicht; da muss ich mich für einen der Listeneinträge entscheiden...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Ereignis, das beim Druck auf Richtungstasten reagiert

  Alt 13. Apr 2006, 19:11
Die deutsche Version von D5 enthält eine fehlerhafte Unit Consts. Die Literale sind "Nach oben", "Nach unten", "Rechts" und "Left". Wenn ich mich recht erinnere habe ich die Unit damals korrigiert und neu übersetzt.

Grüße vom marabu
  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 20:11 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