Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Meine drastisch vereinfachte Software (siehe Bild im Anhang, LV-Version 8.5 Fourth Quarter) wartet bei einer Evenstruktur auf das Ereignis "Maustaste gedrückt" einer Listbox (0 und mehrere Elemente auswählbar) auf dem Frontpanel. Tritt dieses Ereignis ein, so wird innerhalb der Evenstrukur der Wert der Listbox ausgelesen. In diesem Array stehen die Nummern der Elemente, welche in der Listbox selektiert sind. Dieses Array wird wiederum auf dem Frontpanel dargestellt. Selektiere oder deselektiere ich nun einzelne Elemente in der Listbox mit CTRL + Linke Maustaste oder SHIFT + Linke Maustaste, so führt dies häufig dazu, dass der Wert der Listbox nicht richtig ausgelesen wird und folglich auch falsch auf dem Frontpanel dargestellt wird. So fehlt beispielsweise manchmal ein Wert bei der Selektierung mit SHIFT oder es führt zu keiner Änderung wenn ich ein Element mit CTRL deselektiere.
In meiner komplexeren Software, in welcher dieses Prinzip ebenfalls verwendet wird, ist es in der Regel so, dass beim mehrfachen an- und abwählen eines Elements mit CTRL der dem Element entsprechende Wert im Array enthalten ist, wenn ich das Element deselektiert habe, und nicht im Array enthalten ist, wenn ich das Element selektiert habe. Also genau falsch rum.
Ist das bekannt und weiss jemand eine Lösung für dieses seltsame Verhalten?
Vielen Dank im Voraus, Grüsse
Thaller
15.01.2008, 19:52 (Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2008 21:16 von jg.)
EDIT: Wenn Du die Maustaste drückst, dann wird das Event ausgelöst. Deshalb werden die Werte, die zu dem Zeitpunkt stehen angezeigt und nicht die, die Du durch den Klick erst anwählst.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Dein entweder/oder funktioniert nicht.
Wenn du das Verhalten der Listbox genau beobachtest, dann wirst du feststellen, dass der Wert in der Listbox erst mit Mouse Button Up uebernommen wird.
Wenn du in deiner Evenstruktur das Verhalten von Mouse Down auf Mouse Up aenderst, wird immer der richtige Wert uebernommen werden.
Wenn du unbedingt mit Mouse Down arbeiten willst/musst, dann musst du dir mittels Property Node behelfen...
(oder wie es YP schon gepostet hat, per Value Change Event)
Der Wert ändert als erst nach "Maustaste gedrückt" (nicht "Maustaste gedrückt?" mit dem roten Pfeil, falls es das auch gibt), selektiert/deselektiert wird aber schon zuvor? Finde ich seltsam, aber ich denke mit "Maustaste losgelassen" sollte das wohl auch gehen. Ich werde es morgen ausprobieren.
Du drueckst die Taste auf der Maus, auf Grund des Tastendrucks wird der Wert geaendert. Das Event wird bei Maus druecken abgefeuert, zu diesem Zeitpunkt hat noch keine Wertaenderung statt gefunden.
Durch das Property Node erzwingst du implizit ein Update wodurch die richtige Selection eingelesen wird...