VST - KeyEreignisse
Hallo,
ich habe derzeit ein seltsames Problem mit dem VST: Ich möchte z.B. die Taste VK_DELETE abfangen, um einige Aktionen durchzuführen. Dabei ist mir folgendes Aufgefallen: 1. Wenn ein Knoten, z.B. durch anklicken den Focus hat UND dadurch selektiert ist, dann wird NUR das Keyup ausgelöst (Dann ist der Knoten aus dem VST aber schon gelöscht!!!):gruebel: 2. Wenn ein Knoten NUR den Focus hat, dann werden auch die anderen Keyereignisse ausgelöst 3. Wenn kein Knoten den Focus hat, dann werden auch alle Ereignisse ausgelöst, aber eben nichts gelöscht. :thumb: Ist das das Standardverhalten oder ein Fehler oder was??? Ich meine ich möchte schon wissen, welcher Knoten gelöscht werden soll (durch Tastendruck) um evtl. dies zu verbieten oder noch ein paar andere Aktionen durchführen zu können (Sicherheitsabfrage o.ä.). :wall: |
Re: VST - KeyEreignisse
Hallo Stefan,
bei nicht-interaktivem Löschen gehört dein Code in die Ereignisbehandlung von OnFreeNode(), bei interaktivem Löschen in eine Action, die du z.B. beim Ereignis OnChange() oder OnFocusChange() aktivierst bzw. deaktivierst. Freundliche Grüße |
Re: VST - KeyEreignisse
Zitat:
Oder bin ich hier irgendwie auf'm Holzweg? |
Re: VST - KeyEreignisse
Holzweg finde ich jetzt etwas stark, aber dein Konzept für die Benutzerschnittstelle ist sicher verbesserungsfähig. Bei dir scheint der Code für den Löschvorgang direkt mit dem Tastendruck ENTF verbunden zu sein. Wenn du solche Tastaturbefehle an eine TAction bindest, dann stellt sich dein Problem ganz anders dar, wie ich in meinem vorigen Beitrag versucht habe zu vermitteln.
|
Re: VST - KeyEreignisse
Hmm, also alle anderen interaktiven Aktionen (Menüauswahl, Toolbar, Anlegen von Knoten, aber auch Löschen usw.) hängen schon an TActions, nur kenne ich bislang keinen Weg eine bestimmte Aktion (oder ja eigentlich mehrere Aktionen) an ein VST zuhängen. Ich weiss zwar schon, das ich ein TAction an's VST hängen kann, aber wie würde das in dem vorliegenden Fall zu bewerkstelligen sein???
Also wie sage ich z.B. dem VST tue diese Aktion bei dem Tastendruck und jene Aktion bei jenem Tastendruck OHNE die VST-Keyereignisse??? Oder meinst Du ALLE Tastendrücke in der Applikation abfangen und zentral bearbeiten :gruebel: Sorry, aber ich glaub' ich seh g'rad' den Wald vor lauter Bäumen nicht... |
Re: VST - KeyEreignisse
Der VST ist ja kein Button oder MenuItem, insofern kannst du natürlich die Action nicht direkt einer Property zuweisen. Aber du kannst eine DeleteNodeAction anlegen, der du das Tastaturkürzel ENTF zuweist. Willst du das Löschen eines Knoten verbieten, so hast du jetzt mindestens zwei Alternativen:
(1) Du reagierst auf das Ereignis OnUpdate() der Action und setzt Action.Enabled entsprechend deiner Analyse des aktuellen VST Zustands. (2) Du reagierst auf das Ereignis OnChange() des VST. setzt du Action.Enabled entsprechend ... Jeder unbotmäßige Löschversuch wird so zum frühest möglichen Zeitpunkt verhindert. |
Re: VST - KeyEreignisse
Erstmal vielen Dank Achim.
Ich sehe, ich hab' noch einiges aufzuholen, was Aktionslisten und Aktionen angeht. Den grundsätzlichen Ansatz glaube ich, hab' ich, verstanden. Nun will ich mich damit mal "ein wenig" auseinandersetzen. |
Re: VST - KeyEreignisse
So, ich hab' mich nun einwenig mehr eingelesen und festgestellt, das insbesondere der Part 'OnUpdate()' der Actionlist mir einige Arbeit abnimmt.
Leider habe ich aber keinerlei Info's / Ansätze gefunden(oder es ist nur wieder die Sache mit dem Wald und Bäumen und so :oops: ) mit dem sich Dein Vorschlag umsetzten läßt, sprich mir fehlt der Ansatz VST <-> TAction. Vielleicht könnt' mir da jemand ein wenig auf die Sprünge helfen... tia |
Re: VST - KeyEreignisse
Ok, hat sich erledigt:
Ich hatte in meinem Code die Standardaktion
Delphi-Quellcode:
Diese bezog JEDES Betätigen der Taste ENTF auf sich und lies somit keine weitere Abfrage der Taste an anderer Stelle zu. :( Nun habe ich einfach ein "normales" TAction verwendet und es funzt so wie ich es wollte. :-D
TEditDelete
|
Re: VST - KeyEreignisse
Die von dir beschriebene Funktion "Knoten weg" nach "entf" wird durch interne Actions im VST ausgelöst.
Dort sind auch noch paar andere Actions vorgegeben. Schau doch einfach mal in der VST Source. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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