gelöst: Eintrag in ListBox markieren

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

gelöst: Eintrag in ListBox markieren

Beitrag von erikafuchs »

Hallo wiedermal!
Kann man einen Eintrag in der Listbox eines Dialogs "vormarkieren". Hier ist ein Codeausschitt:

Code: Alles auswählen

	oListBox=oDialog.getControl("ListBox")
	for n=6 to endzeile-2
		aListe(n)=dSheet.getCellByPosition(0,n+3).string
	next
	oListBox.additems(aListe, 0)
'	oDialog.getControl("ListBox").selectItemPos(5,True)	
	oDialog.execute()
Ich hatte gehofft, dass die 6.Zeile den 5. Eintrag in der Liste markiert - macht sie aber nicht. Geht das denn überhaupt?
Grüße
Pit
Zuletzt geändert von erikafuchs am So, 04.11.2012 20:27, insgesamt 1-mal geändert.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Eintrag in ListBox markieren

Beitrag von DPunch »

Servus
erikafuchs hat geschrieben:Ich hatte gehofft, dass die 6.Zeile den 5. Eintrag in der Liste markiert
Tut sie.
Nur vermutlich hast Du Leerstrings in Deinem Array (z.B. auf den Positionen 0 bis 5?) - Leerstrings ("") sind ein "geschützter" Bestandteil der Listbox, sie stellen den Zustand "Keine Selektion" dar (selectedItemPos = -1).
Willst Du nun weitere Leerstrings hinzufügen, landen diese zwar in der zugrunde liegenden Werteliste der Listbox, werden aber nicht dargestellt.
Als Beispiel:

Code: Alles auswählen

oListBox.additems(Array("","","A","B","","","C"), 0)
Die Listbox wird die Einträge "","A","B","C" darstellen, die zugrunde liegende Werteliste enthält aber alle 7 Strings.
Die Anweisung

Code: Alles auswählen

oDialog.getControl("ListBox").selectItemPos(5,True)
wird nun aus der Werteliste den 6. Eintrag raussuchen, dessen Wert nehmen und in der Listbox diesen Wert selektieren.
Der zu Index 5 gehörige Wert ist ein Leerstring, der eben geschützt ist und daher nicht selektiert werden kann.

Lösung:
Sorge entweder dafür, dass keine Leerstrings im Array enthalten sind oder selektiere direkt über den zu selektierenden Wert

Code: Alles auswählen

oDialog.getControl("ListBox").selectItem("meinWert",True)
bzw.

Code: Alles auswählen

oDialog.getControl("ListBox").selectItem(aListe(10),True)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: gelöst: Eintrag in ListBox markieren

Beitrag von erikafuchs »

Klappt - vielen Dank.
Das Problem waren allerdings nicht Leerzeichen sondern eine zu kleine Zahl.

Code: Alles auswählen

oDialog.getControl("ListBox").selectItemPos(5,True)   
... mit "10" statt "5" klappt es, die Liste fängt wohl erst mit 6 an.
Viele Grüße
Pit
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: gelöst: Eintrag in ListBox markieren

Beitrag von DPunch »

Servus
erikafuchs hat geschrieben:Das Problem waren allerdings nicht Leerzeichen sondern eine zu kleine Zahl (...) mit "10" statt "5" klappt es, die Liste fängt wohl erst mit 6 an.
Nein, die Liste fängt nicht mit 6 an.
Ich habe Dir gerade ausführlich inklusive Beispiel erklärt, *warum* es mit 10 klappt, aber nicht mit 5.

Code: Alles auswählen

for n=6 to endzeile-2
      aListe(n)=dSheet.getCellByPosition(0,n+3).string
next
Wie ist "aListe" deklariert?
Welchen Inhalt hat "aListe" an Index 0 bis 5?
Ich gehe jede Wette ein, dass es Leerstrings sind ;)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: gelöst: Eintrag in ListBox markieren

Beitrag von erikafuchs »

ja, klar du hast recht.
Die ersten Einträge in aListe(n) sind leer, dazwischen die aber nicht mehr. Ich habe es zunächst über den Wert direkt probiert, den muss ich aber zunächst auslesen, das hat auf Anhieb nicht geklappt. Wenn ich die Leerstrings am Anfang berücksichtige klappt's ja jetzt.
Danke
Pit
Antworten