Python: Im Dokument eingebettete Dialoge erzeugen
Verfasst: So, 21.02.2016 14:58
Gegeben sind mehrere Dialoge, die in der Basic-IDE gebaut wurden und deren Definitionen im Dokument unter "Dialogs.Standard. ..." liegen.
Im Code habe ich für jeden Dialog eine eigene Klasse definiert und zusätzlich eine Superklasse zur Erzeugung eines Dialogs.
Die Superklasse:
Eine spezifische Dialogklasse sieht dann so aus:
Der Dialog wird so erzeugt und aufgerufen:
Ist das eine akzeptable Lösung?
Schöne Grüße
Volker
Im Code habe ich für jeden Dialog eine eigene Klasse definiert und zusätzlich eine Superklasse zur Erzeugung eines Dialogs.
Die Superklasse:
Code: Alles auswählen
class Dialog:
"""
Superklasse für Dialoge, die im Dokument definiert sind.
"""
def __init__(self, actDoc, dlgName):
dialogProvider = uno.getComponentContext().ServiceManager\
.createInstanceWithArguments('com.sun.star.awt.DialogProvider',
(actDoc,))
self.dlgName = dlgName
dlgLocation = 'vnd.sun.star.script:Standard.' + self.dlgName\
+ '?location=document'
self.dialog = dialogProvider.createDialog(dlgLocation)
self.Model = self.dialog.Model
def getControl(self, ctrlName):
return self.dialog.getControl(ctrlName)
def execute(self):
return self.dialog.execute()
def endExecute(self):
return self.dialog.endExecute()
def __str__(self):
return self.dlgName
Code: Alles auswählen
class InvoiceNrDialog(Dialog):
"""
Unterklasse für den Dialog zur Änderung der Belegnummern.
"""
def __init__(self, dlgName, recList):
# doc ist global definiert
Dialog.__init__(self, doc, dlgName)
self.sheet = doc.CurrentController.ActiveSheet
# Die Liste der Belege in der Belegtabelle
self.recList = recList
# usw
Code: Alles auswählen
recList = [Belegliste]
invoiceNrDlg = InvoiceNrDialog('InvoiceNrDialog', recList)
invoiceNrDlg.execute()
Schöne Grüße
Volker