Seite 1 von 2
Listbox füllen
Verfasst: Mo, 28.11.2005 10:59
von Paule
Moin,
hab das Forum durchsucht hab entweder nichts passendes gefunden oder Ich war mal wieder blind.
Ich habe folgendes Problem
Ich habe auf einem Tabellenblatt eine ListBox ("Listbox2")
Die Inhalte dieser möchte ich gern automatisch füllenlassen.
Jedoch bekomme ich da nichts reingeschrieben.
Es handelt sich um kein Model im Dialog (das wär ja auch für mich zu schaffen).
Jemand nen Ahnung?
Grüße
Paule
Verfasst: Mo, 28.11.2005 13:02
von Toxitom
Hey Paule,
Jedoch bekomme ich da nichts reingeschrieben.
[..]
Jemand nen Ahnung?
Sicher
Wo genau leigen denn deien Probleme? Wenn du es im Dialg schaffst, dann solltest du es auch im Formular schaffen. Woran hakt es?
Du brauchst ein kurzes Beispiel?
OK, bitte sehr :
Code: Alles auswählen
sub ListeFuellen1
Dim oListBox as Object, aListe(), oForm as Object
oForm = thisComponent.sheets(0).Drawpage.Forms(0)
oListBox = oForm.getByName("ListBox1")
aListe = Array("Januar", "Februar", "März", "April", "Mai", _
"Juni", "Juli", "August", "September", "Oktober", _
"November", "Dezember")
oListBox.StringItemList = aListe()
end sub
Das Beispiel füllt die Auswahlliste einer ListBox im ersten Formular der ersten Tabellenblattes. Der Name der Listbox heisst dabei "ListBox1" (Groß- und Kleinschreibung beachten!)
Noch Fragen....
Gruss
Thomas
Verfasst: Mo, 28.11.2005 15:37
von Paule
hm ja das klappt toll
Ich will allerdings das die Einträge aus dem Tabellenblatt kommen und krieg die Schleife dazu nicht hin da bei
oListBox.StringItemList = aListe()
alle vorhandenen Einträge gelöscht (oder ersetzt) werden.
mit AddItem (Wäre für mich am logischten(? richtig geschrieben)
gehts nicht.
Verfasst: Mo, 28.11.2005 17:47
von Toxitom
Hey Paule,
...alle vorhandenen Einträge gelöscht (oder ersetzt) werden...
Das stimmt. Bei Formularen (und deren Listbox) gibt es keine Methoden addItem oder RemoveItem. Hier bleibt der einfachste Weg über die Liste.
Wenn du "nur" einen Eintrag hinzufügen willst, dann lies den Array zuerst aus, füge deinen neuen Wert hinzu und schreibe sie zurück.
Auslesen, Array um 1 erweitern, neune Wert einlesen, rückschreiben::
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray)) = "neuer Eintrag"
oListbox.stringItemList = Datenarray
Jetzt musst du allerdings selbst Sorge tragen, dass die Liste nicht zu gross wird. Aber auch da gibt es natürlich Möglichkeiten.
Gruss
Thomas
Verfasst: Di, 29.11.2005 08:59
von Paule
Danke für die Antwort aber ich kriege eine Fehlermeldung :
Basic Syntaxfehler:
Dimensionsangaben passen nicht zusammen.
??
1. Was will man mir damit sagen (und kommt nicht mit : das die Dimensionsangaben nicht stimmen)
2. Wo kann ich diese ändern?
Verfasst: Di, 29.11.2005 12:18
von Toxitom
Basic Syntaxfehler:
Dimensionsangaben passen nicht zusammen.
Wo genau kommt die Meldung? Immer die markierte Zeile mit posten - sonst ist das einfach Raterei...
Tippe mal hier:
Ich glaube, die Klammern müssen dazu.
Gruss
Thomas
Verfasst: Di, 29.11.2005 12:22
von Paule
ja tschuldige.
ippe mal hier:
Code:
oListbox.stringItemList = Datenarray()
ne angezeigt wird der :
Gruß
Paule[/quote]
Verfasst: Di, 29.11.2005 13:05
von Toxitom
ne angezeigt wird der : ...
Na, dann pass eben die Zeile entsprechend an.
OK, schludrige Schreibweise - Arrays werden mit den Klammern definiert....
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray())) = "neuer Eintrag"
oListbox.stringItemList = Datenarray()
Das sollte passen.
Thomas
Verfasst: Di, 29.11.2005 14:51
von Paule
Hallo Thomas,
Na, dann pass eben die Zeile entsprechend an.
Hab ich schon versucht... sorry das ich das nicht mitgepostet hab
Dann kriege ich die Fehlermeldung
IllegalArgumentException
Message:.
Also hab ich wieder ein bischen rumpobiert und kam auf das hier:
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray())) = "neuer Eintrag"
stringItemList = Datenarray()
oListbox = stringItemList
Krieg nun kein Fehler aber passiert auch nichts
Gruß Paule
Verfasst: Di, 29.11.2005 15:57
von Toxitom
Hey Paule,
stringItemList = Datenarray()
oListbox = stringItemList
Das kann ja auch nicht funktionieren
Aber: Ich hab dir doch den passenden Code gepostet. Der jedenfalls funktioniert bei mir!
Gruss
Thomas
Verfasst: Mi, 30.11.2005 16:56
von Paule
ah ja hast Recht...
Mein Pc hat manchmal zuckungen
Nach abspeichern, schließen- neustart gings.... hm...?!?
aber egal.
Ich will das ja nun in eine Schleife packen also ungefähr so.
Code: Alles auswählen
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "1" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(170,i)
If ozelle.string = "" then
goto lt1_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt1_ende:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "2" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(171,i)
If ozelle.string = "" then
goto lt2_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt2_ende:
klappt aber nicht wieder so ein dimensionskram...
Muss ich DatenArray(1) oder so schreiben , also sagen das ich halt mehr davon hab ?
gruß paule
Verfasst: Do, 01.12.2005 11:19
von Paule
Code: Alles auswählen
Muss ich DatenArray(1) oder so schreiben , also sagen das ich halt mehr davon hab ?
Ok DatenArray1() usw.....
Erst fragen, dann denken
Paule
Verfasst: Do, 01.12.2005 13:08
von Toxitom
Hey Paule,
hmm, der Code sieht schon noch ziemlich "wüst" aus. Auch finde ich keinen DatenArray1() - aber vielleicht hast du das je abgeändert.
Kannst du mal in Worten beschreiben, was du eigentlich erreichen willst? Ich würde den Code dann mal ein bischen "optimieren".
Auch wenn Basic nach wie vor die goto Befehle unterstützt - man sollte sie nicht mehr verwenden, das macht den Code ziemlich "unleserlich".
Also, ich biete meine Hilfe an....
Gruss
Thomas
Verfasst: Do, 01.12.2005 16:12
von Paule
hi Thomas,
Also, ich biete meine Hilfe an....
gerne
Code: Alles auswählen
Dim oListBox as Object, oForm as Object
oForm = thisComponent.sheets.getbyname("Ansicht").Drawpage.Forms(0)
oListBox = oForm.getByName("ListBox2")
dim DatenArray()
dim DatenArray1()
dim DatenArray2()
dim DatenArray3()
dim DatenArray4()
dim DatenArray5()
dim DatenArray6()
dim DatenArray7()
dim DatenArray8()
aListe = Array("")
oListBox.StringItemList = aListe()
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(17,0)
If ozelle.string = "T1" then
Goto T1List
end if
if ozelle.string = "T2" then
Goto T2List
end if
T2List:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "1" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(170,i)
If ozelle.string = "" then
goto lt1_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt1_ende:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "2" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(171,i)
If ozelle.string = "" then
goto lt2_ende else
stext = ozelle.string
DatenArray1 = oListBox.stringItemList
iDim = UBound(DatenArray1)
redim preserve DatenArray1( iDim+1)
DatenArray(Ubound(DatenArray1())) = stext
oListbox.stringItemList = DatenArray1()
end if
next
end if
lt2_ende:
' usw.. halt 8 mal
Eine bessere lösung viel mir nicht ein.
Viel Glück
Paule
Verfasst: Do, 01.12.2005 16:22
von Toxitom
Hey Paule,
Bitte:
Thomas hat geschrieben: Kannst du mal in Worten beschreiben, was du eigentlich erreichen willst?
DAS würde ich gerne sehen. Nur so kann man den Weg optimieren
Thomas