AGB  ·  Datenschutz  ·  Impressum  







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

VST - KeyEreignisse

Ein Thema von OG Karotte · begonnen am 27. Apr 2008 · letzter Beitrag vom 2. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
OG Karotte
(Gast)

n/a Beiträge
 
#1

VST - KeyEreignisse

  Alt 27. Apr 2008, 13:33
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!!!)

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.

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.ä.).
  Mit Zitat antworten Zitat
marabu

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

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 13:54
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
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#3

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 14:05
Zitat von marabu:
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.
Bei Nicht-interaktivem ist das auch kein Problem, aber wenn der Nutzer die Entf-Taste drückt, dann ist es imho ein Tastaturereignis, das abzufangen möglich sein sollte. Will sagen, nutze ich z.B. OnChange, dann ist mir nicht bekannt welches Ereignis letztendlich (also in diesem Fall welche Taste) das OnChange auslöst. Eine Sicherheitsabfrage sollte sich schon mit der Taste verbinden lassen.

Oder bin ich hier irgendwie auf'm Holzweg?
  Mit Zitat antworten Zitat
marabu

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

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 14:12
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.
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#5

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 14:27
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

Sorry, aber ich glaub' ich seh g'rad' den Wald vor lauter Bäumen nicht...
  Mit Zitat antworten Zitat
marabu

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

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 14:42
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.
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#7

Re: VST - KeyEreignisse

  Alt 27. Apr 2008, 15:34
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.
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#8

Re: VST - KeyEreignisse

  Alt 28. Apr 2008, 18:29
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 ) 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
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#9

Re: VST - KeyEreignisse

  Alt 2. Mai 2008, 17:38
Ok, hat sich erledigt:

Ich hatte in meinem Code die Standardaktion
TEditDelete 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.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#10

Re: VST - KeyEreignisse

  Alt 2. Mai 2008, 20:25
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 17:01 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