LabVIEWForum.de - Problem mit Listbox

LabVIEWForum.de

Normale Version: Problem mit Listbox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend allerseits.

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
Mit "Mouse Up" (auf dt. evtl. "Maustaste loslassen"?) und "Value Change" funktioniert es (vgl. Anhang). Brauchst Du unbedingt "Maustaste gedrückt"?

Lv80_img[attachment=10688]

Gruß Markus

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.
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)

Anbei ein Bsp in LV 85
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.

Grüsse
Thaller
Was ist daran unverstaendlich :-)

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...
Ok, hast recht, und es funktioniert auch Big Grin

Sehr schön, vielen Dank

Grüsse
Thaller
Referenz-URLs