Seite 1 von 1

eigener Dialog oder Formular

Verfasst: Fr 3. Sep 2021, 11:15
von chemnitzer
Hallo, bisher habe ich Makros nur im Writerdokument mit den benötigten Konstanten, wie Dateiname u.a. fest eingetragen.
Die Datei beinhaltet eine List von Bildern, welche dann per Makro in das Dokument eingefügt werden. Das funktioniert auch.
Ich habe jetzt einen eigenen Dialog für die Auswahl der Datei erstellt und er Dateiname wird in einer globalen Variablen abgespeichert. Wie kann ich jetzt das Makro welches im Dokument gespeichert ist (Bilder einfügen) starten ? Denn so lange der Dialog geöffnet ist habe ich keinen Zugriff auf das Dokument.
Gibt es eine Hilfe zu der weiteren Anwendung von Dialogen ?
MfG
Roland

Re: eigener Dialog oder Formular

Verfasst: Fr 3. Sep 2021, 20:07
von karolus
Wenn ich dich richtig verstanden habe solltest du deinen eigenen Dialog einfach vergessen und stattdessen am Anfang deines Makros im Writerdokument folgendes einfügen:

Code: Alles auswählen

auswahl = createunoservice("com.sun.star.ui.dialogs.OfficeFilePicker")
d = auswahl.execute()
if d then
    datei_url = auswahl.Files(0)
end if
'hier kommt dein restlicher Code bei dem du den konstanten Pfad gegen "datei_url" tauscht

Re: eigener Dialog oder Formular

Verfasst: Sa 4. Sep 2021, 11:10
von chemnitzer
Hallo Karolus,
danke für die schnelle Antwort. Das wäre eine Lösung. Ist es überhaupt möglich aus einem Dialog heraus ein Makro zu starten, welches in einem Dokument abgespeichert ist und Zugriff auf das Dokument hat ? Ich habe jetzt folgendes versucht : Makro ist im Dokument hinterlegt und im Dialog die Dateiauswahl, welche in globalen Variablen beim schließen des Dialogs abgespeichert werden. Dann kann ich das Makro mit Zugriff auf die globalen Variablen starten.
Was bringt es wenn ein Dialog den Zugriff auf das Dokument blockiert ? Oder kann man das umgehen ?
Mfg
schönes Wochenende wünscht
Roland

Re: eigener Dialog oder Formular

Verfasst: Sa 4. Sep 2021, 13:16
von karolus
Hm
Irgendwie klingt dein Ansinnen etwas schräg … wenn du den Dialog selbst im Dokument speicherst hat der natürlich auch Zugriff auf andere Makros die im selben Dokument gespeichert sind.
Zugriff auf andere Dokumente respective deren Makros sind möglicherweise per Hyperlink-url möglich, da müsste ich aber erst mal suchen nach der genauen Syntax.

[gelöst]Re: eigener Dialog oder Formular

Verfasst: Mo 6. Sep 2021, 18:17
von chemnitzer
Hallo
ich habe es so gelöst wie im Buch "Makro Grundlagen Band 2" von Thomas Krumbein.
Seite 430 :
ein bFlag auf False gesetzt, den Dialog nur anzeigen mit oDlg2.setvisible(true) und dann noch eine Scheife die ihn sichtbar hälte. Eine Sub endDialog wo das bFlag auf true gesetzt wird, wenn ein bestimmter Button gedrückt wird. Der Speicher wird mit dispose freigegeben.
Damit kann ich dann weitere Makros über den Dialog starten, welche z.B. Bilder , Hyperlinks u.ä. in das Textdokument eintragen.

MfG und Danke für die Antworten
Roland

Re: eigener Dialog oder Formular

Verfasst: Mo 6. Sep 2021, 18:57
von mikele
Hallo,
Damit kann ich dann weitere Makros über den Dialog starten, welche z.B. Bilder , Hyperlinks u.ä. in das Textdokument eintragen.
Ich vermute mal, dass du hier mit "Dialog" nicht deinen Dialog, sondern den programminternen Dialog Makros meinst.
Du kannst natürlich, was der übliche weg wäre, z. B. Schaltflächen auf deinem Dialog einrichten, die das gewünschte Makro aufrufen (oder auch den programminternen Makrodialog selbst).

Re: eigener Dialog oder Formular

Verfasst: Di 7. Sep 2021, 18:28
von chemnitzer
Hallo,
ich glaube wir reden aneinander vorbei.
Hier mal ein Bild von meinem Dialog :
Dialog.jpg
Dialog.jpg (44.92 KiB) 3555 mal betrachtet
Zu den verschiedenen Buttons sind Makros in der Bibliothek hinterlegt. Teilweise ist der Code geändert aus dem Forum genommen. Dateiauswahl und Anzeige, globale Variablen belegen und Anzeigen funktioniert, weil diese Funktionen keinen Zugriff auf das geöffnete Textdokument brauchen. Dagegen die Makros hinter den Vorspann-, Hauptteil-, Stichwortverz- und Nachspann-EINFÜGEN funktionieren aus dem Dialogfenster nicht. Werden sie aber über Makroausführen gestartet dann geht es. Der Dialog ist ja aktiv und ich hab keine Ahnung wie ich daraus auf das geöffnete leere Dokument zugreifen kann.
Lass ich den Dialog nur mit visible anzeigen (wie vorher beschrieben ) , dann kann ich die hinterlegten Makros aus dem "Dialog" starten. Wird der CommandButton1 gedrückt wird das bFlag auf true gesetzt -> Dialog verschwindet und Speicher wird mit dispose wieder freigegeben. Ich wollte den Dialog nicht zur Laufzeit mit Script erzeugen, sondern über die GUI erzeugen und verwenden.
Ich suche noch einen Tipp wie ich im geöffneten Dokument den Absatz mit Makro formatieren kann. Für die Seite kann ich schon eine andere Seitenvorlage drüberladen. Aber ähnliche Befehle hab ich für den Absatz nicht gefunden.

Viele Grüße
Roland

Re: eigener Dialog oder Formular

Verfasst: Di 7. Sep 2021, 19:45
von mikele
Hallo,
Dagegen die Makros hinter den Vorspann-, Hauptteil-, Stichwortverz- und Nachspann-EINFÜGEN funktionieren aus dem Dialogfenster nicht. Werden sie aber über Makroausführen gestartet dann geht es.
Was bedeutet "funktionieren nicht"? Werden sie nicht ausgeführt? Erscheint eine Fehlermeldung?
Zu den verschiedenen Buttons sind Makros in der Bibliothek hinterlegt.
In welcher Bibliothek?
... funktioniert, weil diese Funktionen keinen Zugriff auf das geöffnete Textdokument brauchen
Wie greifst du in deinen Makros auf das leere Dokument zu?
gehe ich richtig in der Annahme, dass du ein neues Dokument anlegst und dann deinen Dialog aufrufst? Das sollte problemlos klappen.

Re: eigener Dialog oder Formular

Verfasst: Di 7. Sep 2021, 22:37
von chemnitzer
Hallo,
ich muss mir das nochmal genau ansehen. Ich hatte noch eine Änderung der Seitenvorlage aufgenommen es kann sein, dass der Fehler davon kommt.
Aber erstmal Danke bis ich mich melde.

MfG
Roland