LabVIEWForum.de
Listbox Element-Auswahlrahmen verhält sich falsch - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Listbox Element-Auswahlrahmen verhält sich falsch (/Thread-Listbox-Element-Auswahlrahmen-verhaelt-sich-falsch)



Listbox Element-Auswahlrahmen verhält sich falsch - Novgorod - 10.09.2010 22:45

Moin,

ich hab ein kleines Problem - es ist zwar nur ein Schönheitsfehler, nervt aber ein wenigWink
Ich hab mir mit den Listbox-controls einen einfachen Dateibrowser gebastelt, die Ordner werden in einer Listbox angezeigt, die Dateien in einer anderen. Zum Navigieren kann man sich duch das Ordner-Fenster klicken (Doppelklick) - der ausgewählte Ordner wird geöffnet und alle Unterordner in der Ordner-Listbox angezeigt (und die Dateien in der Datei-Listbox), zusätzlich gibts in der Ordner-Listbox als ersten Eintrag "..", womit man eine Ebene höher kommt..

Das ganze läuft relativ simpel über die Event-Abfrage: wird ein (Unter-)Ordner ausgewählt, wird dessen Inhalt per Property "ItemNames" in der Listbox angezeigt..
Das Problem ist nun folgendes: Wählt man einen Ordner per Doppelklick aus, sollte nach dem Auflisten des Inhalts jedes mal das oberste Element ".." ausgewählt (also "blau") sein - auch das geht ganz einfach, indem man der entsprechenden Listbox 0 als value gibt.. Nun gibts aber noch so nen blöden Auswahlrahmen (gepunktete Linie) um das "blaue" (aktive) Element herum und eben dieser gepunktete Auswahlrahmen bewegt sich nicht, wenn man das aktive Element der Listbox per Wertzuweisung ändert - es bleibt also in der Zeile, die man vorher angeklickt hat:

[attachment=29329]

Und noch schlimmer - es bleibt an derselben Stelle, selbst wenn die neue Liste an dieser Stelle garkein Element hat (in diesem Beispiel hat die Liste nur 1 Element, nämlich ".."):

[attachment=29330]

Wenn man keine Wertzuweisung vornimmt, ist kein Element "blau", der Auswahlrahmen ist trotzdem an der falschen Stelle. Man kriegt ihn nur weg, indem man ein Element anklickt.. Das hat offenbar was mit der Klick-Auswahl zu tun, denn in der Dateien-Listbox kommt gar kein Auswahlrahmen bzw. verschwindet, wenn man in der Ordner-Listbox herumklickt (d.h. da gibts höchstens ein "blaues" element ohne Auswahlrahmen)..
Hat jemand eine Idee, wie man das beheben könnte? Kann man evtl. einen Mausklick aufs richtige Element simulieren oder diesen Auswahlrahmen ganz abschalten?


Listbox Element-Auswahlrahmen verhält sich falsch - Matze - 11.09.2010 09:41

Hallo

' schrieb:Nun gibts aber noch so nen blöden Auswahlrahmen (gepunktete Linie) um das "blaue" (aktive) Element herum und eben dieser gepunktete Auswahlrahmen bewegt sich nicht, wenn man das aktive Element der Listbox per Wertzuweisung ändert - es bleibt also in der Zeile, die man vorher angeklickt hat
Bei mir funktioniert es, wenn ich nicht das aktive Element, sondern den Wert selbst ändere.
Klicke ich dann in die ListBox, sehe ich den gepunkteten Rahmen. Ändere ich per Code dann den Item-Index, verschwindet der gepunktete Rahmen und das entsprechende Item wird hervorgehoben.

[attachment=29332]Lv85_img

[attachment=29333]


Listbox Element-Auswahlrahmen verhält sich falsch - Novgorod - 11.09.2010 19:57

Das Problem ist nicht die Art der Wertzuweisung (ich kanns so machen wie du über die value-Property oder einfach über ne lokale Variable, das ändert nix) - das Problem ist das Event.. Du änderst das aktive Element durch ein Event an einem anderen control (Item Index), bei mir wäre das Event "Listbox: Double click" (was zum browsen ja durchaus essenziell ist), und genau dabei bleibt der gepunktete Rahmen auf der angeklickten Zeile stehen...

Lv85_img[attachment=29342]


Listbox Element-Auswahlrahmen verhält sich falsch - Matze - 12.09.2010 10:03

Stimmt, bei einem Doppelklick funktioniert es nicht.
Da wäre vielleicht ein Filter-Event "Double Click?" sinnvoll, nur gibt's das leider nicht.

Ich vermute, dass es ohne weiteres nicht geht. Mich würden nähere Infos diesbezüglich jedoch auch interessieren..

Eine ganz schlampige Lösung habe ich angehängt. Aber da wirst du selbst sehen, dass das nur ein sehr unschöner Workaround ist, der auch nur unter Windows funktioniert.
Eigentlich darf man das keinem zeigen. Rolleyes
Es ist wirklich nur eine Notlösung und ich würde eher davon abraten, diese zu verwenden.

[attachment=29344]Lv85_img

[attachment=29343]

Ganz kurz zur Funktionsweise:
Ich ermittel die aktuelle Mausposition. Anschließend addiere ich die Listbox-Zellenhöhe auf die y-Koordinate, setze die Maus an diese Position und simuliere einen Mausklick. Danach setze ich die Mausposition auf den ursprünglichen Wert zurück.


Listbox Element-Auswahlrahmen verhält sich falsch - Novgorod - 12.09.2010 22:42

Hübsch gemacht, Mechatronik-IngeBig GrinWink

An sowas ähnliches hab ich auch gedacht, war mir aber zuviel Aufwand, die Maus-Fuktionen rauszukramen (hat Labview überhaupt welche?) und mit den Windows-dlls kenn ich mich garnicht aus.. Naja, in meinem Fall müsste das oberste Element der Liste markiert werden, das lässt sich aber mit der Methode leicht machen..
Also ich werd darauf zurückgreifen, falls garnix mehr hilft, deshalb danke erstmal dafürWink


Listbox Element-Auswahlrahmen verhält sich falsch - Matze - 13.09.2010 05:37

' schrieb:Hübsch gemacht, Mechatronik-IngeBig GrinWink
Waa, das ist mir noch gar nicht aufgefallen "Mechatronik-Inge...", also ne. Lol
Der Nick ist irgendwie nichts ...

Das Problem an obigem Code ist u.a., dass ich bei meinem Rechner etwas über 100 ms vor dem Klick warten muss (daher die Wartezeit). Wenn man in der Zeit die Maus bewegt, dann geht der Klick natürlich wo anders hin.
Wenn sich keine saubere Lösung findet, kannst du ja mal schauen, wie zufriedenstellend das bei dir funktioniert.

Vielleicht kann man beim Klick-Vorgang auch direkt die Koordinaten angeben. Da gibt's auch die Eingänge dx und dy, nur haben die bei mir nicht funktioniert.


Listbox Element-Auswahlrahmen verhält sich falsch - SeBa - 13.09.2010 08:49

Da gabs übrigens mal so ein ähnliches Problem mit der Listbox...

LVF-Link

Hat sich dann als "Feature" von LV rausgestellt Big Grin

Vielleicht hilft dir der dort gezeigte Workaround weiter.

Gruß SeBa

EDIT:
Die Schummellösung von Mecha-Inge hat natürlich auch Charme.


Listbox Element-Auswahlrahmen verhält sich falsch - Novgorod - 13.09.2010 12:40

Ja, der Workaround ist ähnlich, da werden halt Tastaturinputs simuliert - müsste etwas robuster sein, die Lösung..