Listbox: Selctitem auf -1 setzten / Scrollbar

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

GrobMakrobiker
**
Beiträge: 39
Registriert: Mo, 09.02.2009 20:18

Listbox: Selctitem auf -1 setzten / Scrollbar

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

Code: Alles auswählen

oListControl.SelectItemPos(n2 -1,true)
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
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Listbox: Selctitem auf -1 setzten / Scrollbar

Beitrag 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"

Code: Alles auswählen

oListControl.SelectItemPos(n2 -1,False)
Alle Selektionen einer Listbox aufheben kannst Du (in einem Dialog) so:

Code: Alles auswählen

oListControl.Model.SelectedItems = Array()
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.
GrobMakrobiker
**
Beiträge: 39
Registriert: Mo, 09.02.2009 20:18

Re: Listbox: Selctitem auf -1 setzten / Scrollbar

Beitrag 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
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Listbox: Selctitem auf -1 setzten / Scrollbar

Beitrag 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. ;)
GrobMakrobiker
**
Beiträge: 39
Registriert: Mo, 09.02.2009 20:18

Re: Listbox: Selctitem auf -1 setzten / Scrollbar

Beitrag 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
Antworten