ich versuche mich seit einiger Zeit an mit Basic erstellten Dialogen.
Mit der Erstellung der Steuerelemente komm ich gut klar.
Nun das Problem:
Wie kann ich die Zuweisung der Eventhändler als Methodenzuweisung mit Basic realisieren?
Der händische Vorgang mit dem Dialog-Editor geht so wie im Bild 1 -- Wie geht das per Basic?
Code: Alles auswählen
Sub Dialog_Show()
dp = CreateUnoService("com.sun.star.awt.DialogProvider2")
dp.Initialize(Array(ThisComponent))
eventHandler = CreateUnoListener("Console_", "com.sun.star.awt.XDialogEventHandler")
oDlg = dp.createDialogWithHandler("vnd.sun.star.script:Standard.dlgTest?location=document", eventHandler)
oDlg.Title = "Beispiel"
REM Die folgenden 3 Zeilen bringen nicht die gewünschte Funktion
oCtl = oDlg.getControl("btnPrint")
oListener = CreateUnoListener("drucke_","com.sun.star.awt.XActionListener")
oCtl.addActionListener(oListener)
oDlg.execute()
End Sub
Function Console_callHandlerMethod(oDlg as Object, _
event As com.sun.star.document.DocumentEvent, _
method As String) As Boolean
''' Intercept dialog events using .UNO protocol '''
Console_callHandlerMethod = True
Select Case method
Case "drucke"
msgbox "Drucke"
Case Else : Console_callHandlerMethod = False
End Select
End Function
https://help.libreoffice.org/latest/de/ ... ndler.html,
https://wiki.openoffice.org/wiki/Docume ... rol_Events,
https://wiki.openoffice.org/wiki/Component_and_Dialog
Der obige Code zeigt mein TestCase - Ein Dialog mit einem Button. Ein Handler auf Dialogebene für alle benötigten Ereignisse des gesamten Dialoges.
Hier komme ich so nicht weiter.
Der "btnPrint" soll seinen ActionListener per Script bekommen.
Nach der Zuweisung des XActionListeners geht das Event nicht bis zum XDialogEventHandler durch.
Mit der manuellen Zuweisung der Komponentenmethode im Dialog-Editor funktioniert es vom Prinzip her wie gewünscht..
Das hilft mir leider bei den zur Laufzeit im Dialog erstellten Controls nicht weiter.
Nun bin ich leider auch noch kein Profi mit der UNO-API. Einige Stunden Einarbeitung haben noch keine Erleuchtung gebracht und die paar Quellen im Netz brachten auch keinen Hinweis.
Ich hab ḿich hier festgefahren.
Vielleicht kennt jemand eine Lösung für die Komponentenzuweisung per Script?