Combo Box Auslesen und Hineinschreiben

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

Moderator: Moderatoren

peterschleif
**
Beiträge: 34
Registriert: Fr, 06.11.2009 05:49

Re: Combo Box Auslesen und Hineinschreiben

Beitrag von peterschleif »

Hallo.

Ich bin mir nicht ganz sicher, ob Du Dich mit Auslesen/Hineinschreiben auf die Listen-Einträgen beziehst oder auf den ausgewählten Text. Darum hier ein paar Anweisungen:

Code: Alles auswählen

   oComboBox = oDialog.getControl("ComboBox1")

   'einzelnen Eintrag hinzufügen
   oComboBox.addItem("Item A", 0)

   'mehrere Einträge hinzufügen
   mListe = Array("Item B", "Item C", "Item D")
   oComboBox.addItems(mListe, 1)

   'alle Einträge auslesen
   mListe = oComboBox.Items
   MsgBox "1.Eintrag: " & mListe(0)

   'ComboBox mit Text belegen
   oComboBox.Text = "Item C"

   'selektierten Text auslesen
   MsgBox "ausgewählt: " & oComboBox.Text
Beim Belegen der ComboBox mit Text ist zu berücksichtigen, dass der Text nicht unbedingt einen Eintrag treffen muss. Der neue Text wird dann zwar temporär in der ComboBox angezeigt, wählt aber keinen Eintrag aus.

Eine Eigenschaft .ListIndex wie bei VBA gibt es (soweit ich weiß) in OOo leider nicht.:( Darum muss man immer den genauen Text des Eintrags kennen, um ihn dauerhaft auswählen zu können. Sehr ärgerlich wenn sich die Einträge zur Laufzeit ändern.

Peter
peterschleif
**
Beiträge: 34
Registriert: Fr, 06.11.2009 05:49

Re: Combo Box Auslesen und Hineinschreiben

Beitrag von peterschleif »

Hallo DenisK.

Ich bin davon ausgegangen, dass Du bereits einen funktionierenden Dialog mit einer ComboBox hast. Darum hatte ich nur ein paar Code-Fetzen notiert, die aus dem Zusammenhang gerissen waren. Unten findest Du nochmal den kompletten Code inklusive Variablen-Deklaration und -Zuweisungen.
Aber: Auch dieser Code erzeugt keinen Dialog und auch kein Kombi-Feld. Sowas geht natürlich auch, habe ich hier aber nicht gemacht.

Du müsstest also bitte zwei Dinge manuell erstellen:

1. einen Dialog namens "Dialog1" und darin
2. ein Kombinationsfeld namens "ComboBox1"

Code: Alles auswählen

Sub Main
   Dim oLibDlg   As Object
   Dim oDialog   As Object
   Dim oComboBox As Object

   DialogLibraries.loadLibrary("Standard")

   oLibDlg   = DialogLibraries.getByName("Standard").getByName("Dialog1")
   oDialog   = CreateUnoDialog(oLibDlg)
   oComboBox = oDialog.getControl("ComboBox1")

   'einzelnen Eintrag hinzufügen
   oComboBox.addItem("Item A", 0)

   'mehrere Einträge hinzufügen
   mListe = Array("Item B", "Item C", "Item D")
   oComboBox.addItems(mListe, 1)

   'alle Einträge auslesen
   mListe = oComboBox.Items
   MsgBox "1.Eintrag: " & mListe(0)

   'ComboBox mit Text belegen
   oComboBox.Text = "Item C"

   'selektierten Text auslesen
   MsgBox "ausgewählt: " & oComboBox.Text

   oDialog.execute
End Sub
Sinnvoller ist es natürlich die einzelnen Codeteile in Ereignis-Prozeduren auszulagern, die Du dann den Ereignissen deines Dialogs bzw. der ComboBox zuweist.

Peter
Antworten