Hey Jürgen,
dadurch, dass es funktioniert, ist es nicht ideal!
Code: Alles auswählen
Dlg = CreateUnoDialog(DialogLibraries.Feiertage.Feiertage)
Dlg.Execute()
Dlg.dispose()
Dlg.EndExecute()
Mit "dispose() entfernst du das Objekt aus de Speicher, danach schliesst du die Dialogmaske?? Also bitte. IN diesem Code sind zwei zeilen überflüssi!g:
Der Dialog wird mit dlg.excecute() aufgerufen. Das Makro bleibt jetzt solange in dieser Zeile stehen, bis der Dialog wieder geschlossen wird. Erst dann werden die weitern Zeilen abgearbeitet. Warum willst du einen Dialog, der schon geschlossen ist, nochmals zweimal schliessen? Jeder der folgenden Zeilen tut nämlich genau das, wobei die erste den Dialog auch noch aus dem Speicher befördert....
Also, beide Zeilen striechen.
Jetzt möchte ich das Fenster über eine Schaltfläche wieder schließen.
Wenn du es "nur" schliessen willst, dann definiere den Buttton über die Eigenschaften nicht als Standard-Button, sondern entweder als "Ja" button oder als "Abbrechen" Button. Dann schliesst sich jeweils dein Dialog - fertig. Den Rest kannst du dir dann ersparen.
Das ist vom Prinzip her richtig. Aber: erstens überflüssig, wenn du sonst nichts mehr machst - siehe oben - und zweitens : kann nur funktionieren, wenn dein Dialogobjekt auch global definiert wurde. Und das wurde es in deinem Code nicht - wie also soll OpenOffice.org mit "Dlg" etwas anfangen?
Richtig wäre:
Code: Alles auswählen
dim oDlg as object
sub Feiertage
oDlg = CreateUnoDialog(DialogLibraries.Feiertage.Feiertage)
oDlg.Execute()
end sub
Sub Abbrechen
oDlg.endExecute()
end sub
Viele Grüße
Thomas