Seite 1 von 1

[gelöst ]Dialog wird nicht erkannt

Verfasst: Do, 31.07.2008 11:02
von sg1985
Hallo,

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
Ich habe es genauso gemacht, wie in diesem Topic beschrieben: viewtopic.php?f=18&t=12776#p51295

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?

Re: Dialog wird nicht erkannt

Verfasst: Do, 31.07.2008 11:14
von sg1985
bin gerade selber auf den Fehler drauf gekommen.

Lösung: die Variable oDialogControl gehört "global" angelegt, also vor allen Sub Funktionen, damit sie überall erkannt wird.

also einfach die Codezeile:

Code: Alles auswählen

Dim oDialogControl as Object

ganz zu Beginn vom Makro einfügen

Re: [gelöst ]Dialog wird nicht erkannt

Verfasst: Do, 31.07.2008 11:20
von komma4
OK, gerade selbst gefunden, als ich die entsprechende Frage tippte...

Anmerkung: mit DIM ist sie für das Modul deklariert.
GLOBAL oder PUBLIC deklarieren sie OOo-weit.

Re: [gelöst ]Dialog wird nicht erkannt

Verfasst: Fr, 01.08.2008 14:35
von keksi1970
juhu, ich darf verbessern :D

lt. Handbuch besitzen Dim und Public im Bereich der Kopfzeile dieselbe Funktion zur Gültigkeitsdauer von Variablen.
Sie stehen allen Modulen in ihrer Bibliothek zur Verfügung und behalten Ihre Gültigkeit, solange das Makro ausgefuehrt wird

GLobale Variablen behalten jedoch ihren Wert auch nach beendigung des Makros

quelle : http://docs.sun.com/app/docs/doc/819-1326/faanp?a=view

lg Andreas