[gelöst ]Dialog wird nicht erkannt

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

Moderator: Moderatoren

sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

[gelöst ]Dialog wird nicht erkannt

Beitrag 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?
Zuletzt geändert von sg1985 am Do, 31.07.2008 11:15, insgesamt 1-mal geändert.
sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Re: Dialog wird nicht erkannt

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [gelöst ]Dialog wird nicht erkannt

Beitrag 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.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: [gelöst ]Dialog wird nicht erkannt

Beitrag 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
Antworten