Seite 1 von 1
Listbox: Selctitem auf -1 setzten / Scrollbar
Verfasst: Di, 03.08.2010 13:38
von GrobMakrobiker
Hallo zusammen,
in meiner Datenmaske befindet sich eine Scrollbar, mit deren Hilfe ich durch ein Calc-Dokument navigiere. Wird dort geklickt, werden die Werte in den Calc-Zellen als Items innerhalb mehrerer Listboxen angezeigt.
Die Werte werden alle korrekt angezeigt, doch werden bei leeren Zelle die alten Listbox- Werte "wie durch Geisterhand" in die leeren Zellen geschrieben und es funktioniert nicht, die Listbox- Auswahl bei leeren Zellen aufzuheben.
Code: Alles auswählen
n2 = Wert, der in der Zelle steht
If n2 > 0 Then
oListControl.SelectItemPos(n2 -1,true) '<--- funktioniert
Else
oListcontrol.SelectItemPos(-1, true) '<------------- funktioniert nicht
End If
Wie ist es möglich eine Listbox- Auswahl aufzuheben? Weiß jemand Rat? Und wieso werden Werte in die Zelle geschrieben, obwohl dies nicht im Code angewiesen wird?
Für Hinweise & Hilfen bin ich wie immer dankbar
Groby
Re: Listbox: Selctitem auf -1 setzten / Scrollbar
Verfasst: Di, 03.08.2010 17:31
von DPunch
Aloha
GrobMakrobiker hat geschrieben:Wie ist es möglich eine Listbox- Auswahl aufzuheben?
Die Selektion an einer bestimmten Stelle aufheben funktioniert mit dem Parameter "False"
Alle Selektionen einer Listbox aufheben kannst Du (in einem Dialog) so:
Und wieso werden Werte in die Zelle geschrieben, obwohl dies nicht im Code angewiesen wird?
Dafür müsste man Deinen Code sehen, einfach so passiert das nicht, behaupte ich einfach mal.
Re: Listbox: Selctitem auf -1 setzten / Scrollbar
Verfasst: Di, 03.08.2010 19:04
von GrobMakrobiker
Hallo DPunch,
jau, klappt natürlich so. Auf die Idee, dass selectitempos(-1,false) für Array anders lauten muss, bin ich nicht gekommen. "false" und "true" hatte ich schon versucht. Jetzt läuft jedenfalls alles so wie gewünscht!
Vielen Dank!
Groby
Re: Listbox: Selctitem auf -1 setzten / Scrollbar
Verfasst: Di, 03.08.2010 20:56
von DPunch
Aloha
GrobMakrobiker hat geschrieben:Auf die Idee, dass selectitempos(-1,false) für Array anders lauten muss, bin ich nicht gekommen.
Da diese Formulierung für mich jetzt erstmal nicht wirklich verständlich ist und irgendwie darauf hindeutet, dass Dir noch nicht so ganz klar ist, warum das so funktioniert, schieb ich mal eine kurze Erklärung nach.
oListControl.Model.SelectedItems ist ein Array aus Integers, dass die Positionen aller selektierten Listeneinträge enthält.
Mit "Array()" erzeugst Du ein neues, leeres Array.
Weist Du oListControl.Model.SelectedItems nun dieses leere Array zu, sind logischerweise auch keine Einträge mehr selektiert.
Du könntest natürlich auch jeden Eintrag mit "SelectItemPos(x,False)" einzeln deselektieren, wodurch diese Einträge aus dem ursprünglichen ".Model.SelectedItems"-Array entfernt werden würden, aber die erwähnte Zuweisung des leeren Arrays ist eben der schnellere Weg.
Sollte Dir dies schon vorher klar gewesen sein, vergiss einfach, was Du grad gelesen hast.

Re: Listbox: Selctitem auf -1 setzten / Scrollbar
Verfasst: Mi, 04.08.2010 14:00
von GrobMakrobiker
Hallo DPunch,
Danke für die Erläuterung, so ungefähr hatte ich es mir auch vorgestellt.
Ich glaube mein Denkfehler war, dass ich davon ausgegangen bin, dass eine Listbox auf einen Service zur Aufhebung der Auswahl (z.B. mittels selectitempos(-1, false) zurückgreifen kann.
SelectItemPos (Short):Nummer des aktuell markierten Eintrags; schreibgeschützt (nur Lesen). Staroffice 8 Programmierhandbuch S. 217
Ich hätte gedacht, dass e i n ausgewählter Eintrag sich auch innerhalb eines Arrays aufheben lässt und alles wieder so ist wie vorher.
Die Lösung, ein leeres Array zuzuweisen, erscheint mir aber logisch (immerhin).
Vielen Dank, auch für die Erläuterung
Groby