Seite 1 von 1

gelöst: Eintrag in ListBox markieren

Verfasst: So, 04.11.2012 18:20
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

Re: Eintrag in ListBox markieren

Verfasst: So, 04.11.2012 19:09
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)

Re: gelöst: Eintrag in ListBox markieren

Verfasst: So, 04.11.2012 20:29
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

Re: gelöst: Eintrag in ListBox markieren

Verfasst: So, 04.11.2012 20:51
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 ;)

Re: gelöst: Eintrag in ListBox markieren

Verfasst: So, 04.11.2012 21:15
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