ich erzeuge in meinem Makro einen Dialog, der einen Button mit dem Namen "Button1" hat. Wenn ich auf diesen klicke, möchte ich eine andere Sub Funktion aufrufen, die den Dialog zum Beispiel schließt.
Kurz gesagt, es ist mir wichtig, dass der Dialog in der anderen Sub Funktion erkannt wird, um ihn eben ansprechen zu können (zum Beispiel zum schließen oder um auf seine Controlelemente zugreifen zu können), aber genau das funktioniert nicht.
Nun habe ich folgenden Code:
Code: Alles auswählen
[....]
oDialogModel = createUnoService( "com.sun.star.awt.UnoControlDialogModel" )
oDialogModel.Title = "Projekt-Auswahl"
oDialogModel.Name = "Dialog_Projekt"
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)
oModel = oDialogModel.createInstance( "com.sun.star.awt.UnoControlButtonModel" )
oModel.BackgroundColor = &HCCCCFF
'oModel.PushButtonType = com.sun.star.awt.PushButtonType.OK
oModel.FontWeight = com.sun.star.awt.FontWeight.BOLD
oDialogModel.insertByName("Button1", oModel )
oModel.Name = "Button1"
oControl = oDialogControl.getControl("Button1")
oModel.Label = "Abfrage ausführen"
oControl.setPosSize(150,200, 200, 30, com.sun.star.awt.PosSize.POSSIZE)
[...]
oListenerClone = CreateUnoListener("btn_", "com.sun.star.awt.XActionListener")
oControl = oDialogControl.getControl("Button1")
oControl.addActionListener(oListenerClone)
oDialogControl.setVisible( True )
oDialogControl.execute
oDialogControl.endExecute
[...]
sub btn_actionPerformed(oEvent)
oDialogControl.endExecute
End Sub
Jedoch bekomme ich in der Zeile " oDialogControl.endExecute" in der Sub Prozedur "sub btn_actionPerformed(oEvent)" immer die Fehlermeldung, dass die Objektvariable nicht erkannt wird (laut obigem Link, sollte dies aber gehen)...
Der Listener an sich funktioniert... wenn ich mir in der Sub Funktion "sub btn_actionPerformed(oEvent)" eine Nachricht in einer msgbox ausgeben lasse, funktioniert das einwandfrei.
Kann mir jemand sagen, was ich falsche mache?