von sg1985 » Mo, 04.08.2008 11:09
Hallo,
ich habe im Makro eine Variable oItemPos, die jetzt beispielsweise den Wert 5 hat. Dann zeichne in den Dialog mit der Listbox, befülle die Listbox und möchte nachher den Eintrag mit dem Index 5 vorselektieren in der Listbox.
Wenn ich den Dialog aufrufe, ist aber leider nichts vorselektiert (Listbox ist aber gefüllt und der Eintrag mit dem Index 5 ist auf jeden Fall vorhanden)
Hier der Code dazu:
Code: Alles auswählen
'Dialog erzeugen
oSheet = ThisComponent.getCurrentController().getActiveSheet()
oDialogModel = createUnoService( "com.sun.star.awt.UnoControlDialogModel" )
oDialogModel.Title = "Mitarbeiter Auswahl"
oDialogModel.Name = "Dialog_Mitarbeiter"
oDialogModel.BackgroundColor = RGB(230,230,230)'&HCCCCFF
oDialogControl = createUnoService( "com.sun.star.awt.UnoControlDialog" )
oDialogControl.setModel( oDialogModel )
oDialogControl.setPosSize( 120, 130, 400, 300, com.sun.star.awt.PosSize.POSSIZE)
'Listbox zeichnen
oModel = oDialogModel.createInstance("com.sun.star.form.component.ListBox")
oModel.DropDown = true
oDialogModel.insertByName("ListBox1", oModel)
oModel.Name = "ListBox1"
oControl = oDialogControl.getControl("ListBox1")
oModel.MultiSelection = false
oModel.BackgroundColor = RGB (255,255,255)
oModel.FontHeight = 7
oModel.LineCount = 1
oControl.setDropDownLineCount 12
oControl.setPosSize(170, 50, 170, 20, com.sun.star.awt.PosSize.POSSIZE)
'Listbox fuellen
[...]
oListBox1 = oDialogControl.getControl("ListBox1")
While oResultSet1.Next()
b = oResultSet1.getString(1) '1. Spalte in Tabelle
aListe1 = oListBox1.getModel().StringItemList
n = UBound(aListe1())
redim preserve aListe1(n + 1)
aListe1 (n+1) = b
oListBox1.getModel().StringItemList = aListe1
Wend
'Eintrag mit Index 5 vorselektieren
oListBox1.SelectItemPos(oItemPos_global, true)
oDialogControl.setVisible( True )
oDialogControl.execute
oDialogControl.endExecute
Anm: die Variable oItemPos_global ist in einem anderen Modul global definiert, hat aber hier sicher den Wert 5, habs mir per msgbox ausgeben lassen...
Weiß jemand, was ich da falsch mache?
Edit: sobald ich der Listbox1 einen Event Listener hinzufüge und die Codezeile
oListBox1.SelectItemPos(oItemPos_global, true) im Listener habe, funktioniert es komischerweise... aber das ist ja leider nicht Sinn der Sache und unbrauchbar für mich, da der Eintrag mit dem Index oItemPos ja schon vorselektiert sein soll, wenn der Dialog gestartet wird.
Hallo,
ich habe im Makro eine Variable oItemPos, die jetzt beispielsweise den Wert 5 hat. Dann zeichne in den Dialog mit der Listbox, befülle die Listbox und möchte nachher den Eintrag mit dem Index 5 vorselektieren in der Listbox.
Wenn ich den Dialog aufrufe, ist aber leider nichts vorselektiert (Listbox ist aber gefüllt und der Eintrag mit dem Index 5 ist auf jeden Fall vorhanden)
Hier der Code dazu:
[code]
'Dialog erzeugen
oSheet = ThisComponent.getCurrentController().getActiveSheet()
oDialogModel = createUnoService( "com.sun.star.awt.UnoControlDialogModel" )
oDialogModel.Title = "Mitarbeiter Auswahl"
oDialogModel.Name = "Dialog_Mitarbeiter"
oDialogModel.BackgroundColor = RGB(230,230,230)'&HCCCCFF
oDialogControl = createUnoService( "com.sun.star.awt.UnoControlDialog" )
oDialogControl.setModel( oDialogModel )
oDialogControl.setPosSize( 120, 130, 400, 300, com.sun.star.awt.PosSize.POSSIZE)
'Listbox zeichnen
oModel = oDialogModel.createInstance("com.sun.star.form.component.ListBox")
oModel.DropDown = true
oDialogModel.insertByName("ListBox1", oModel)
oModel.Name = "ListBox1"
oControl = oDialogControl.getControl("ListBox1")
oModel.MultiSelection = false
oModel.BackgroundColor = RGB (255,255,255)
oModel.FontHeight = 7
oModel.LineCount = 1
oControl.setDropDownLineCount 12
oControl.setPosSize(170, 50, 170, 20, com.sun.star.awt.PosSize.POSSIZE)
'Listbox fuellen
[...]
oListBox1 = oDialogControl.getControl("ListBox1")
While oResultSet1.Next()
b = oResultSet1.getString(1) '1. Spalte in Tabelle
aListe1 = oListBox1.getModel().StringItemList
n = UBound(aListe1())
redim preserve aListe1(n + 1)
aListe1 (n+1) = b
oListBox1.getModel().StringItemList = aListe1
Wend
'Eintrag mit Index 5 vorselektieren
oListBox1.SelectItemPos(oItemPos_global, true)
oDialogControl.setVisible( True )
oDialogControl.execute
oDialogControl.endExecute
[/code]
Anm: die Variable oItemPos_global ist in einem anderen Modul global definiert, hat aber hier sicher den Wert 5, habs mir per msgbox ausgeben lassen...
Weiß jemand, was ich da falsch mache?
Edit: sobald ich der Listbox1 einen Event Listener hinzufüge und die Codezeile [color=#008000]oListBox1.SelectItemPos(oItemPos_global, true) [/color] im Listener habe, funktioniert es komischerweise... aber das ist ja leider nicht Sinn der Sache und unbrauchbar für mich, da der Eintrag mit dem Index oItemPos ja schon vorselektiert sein soll, wenn der Dialog gestartet wird.