Es wurde ein Dialog erstellt und über die Execute-Methode aktiviert.
Dim Dlg As Object
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.test)
Dlg.Execute()
Dlg.dispose()
Wenn der Dialog aktiv ist kann ich nicht auf das Dokument zugreifen. Dies funktioniert erst wenn der Dialog wieder geschlossen wird.
Hat Jemand eine Idee wie ich bei geöffnetem Dialog auf das Dokument zugreifen kann???
Besten Dank
keine Programmaktionen solange ein Dialog geöffnet ist...
Moderator: Moderatoren
Hey,
Bleibt die Frage, wozu das auch gut sein soll? Wenn du eine Dialogbox programmierst, so soll der Benutzer doch interaktiv angesprochen werden und es wird eine Aktion von ihm verlangt. Wozu willst du in diesem Moment das Dokument bearbeiten?
Beschreib mal den Workflow - dann können wir dir vielleicht Tipps geben.
Im Übrigen zu deinem Code:
beendet, dadurch wird auch die Speicherressource freigegeben. Und dieses Makro legt man auf einen Button, den man mit "Ende " oder ähnlichem benennt - und in diesem Makro die Aufräumarbeiten durchführt.
Allerdings musst du dann - was auch üblich ist -
außerhalb der ersten Prozedur des Moduls definieren, also am Anfang!.
Viele Grüße
Thomas
So gar nicht. Ist das gleiche Verhalten, wie wenn du eine Dialogbox über das Menü öffnest. Die Anwendung darunter ist jetzt nicht zugänglich.Hat Jemand eine Idee wie ich bei geöffnetem Dialog auf das Dokument zugreifen kann???
Bleibt die Frage, wozu das auch gut sein soll? Wenn du eine Dialogbox programmierst, so soll der Benutzer doch interaktiv angesprochen werden und es wird eine Aktion von ihm verlangt. Wozu willst du in diesem Moment das Dokument bearbeiten?
Beschreib mal den Workflow - dann können wir dir vielleicht Tipps geben.
Im Übrigen zu deinem Code:
Wozu das? Ich kenne zwar deinen Test-Dialog nicht, aber das ist meist überflüssig. Ein Dialog wird üblicherweise mitDlg.dispose()
Code: Alles auswählen
Dlg.endExecute()
Allerdings musst du dann - was auch üblich ist -
Code: Alles auswählen
Dim Dlg as Object
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Erstmal besten Dank für Deine Antwort,
Dlg.dispose() - war überflüssig - es soll die Ressourcen wieder freigeben (Hatte ich im StarOffice8 Programierhandbuch gelesen)
Also, ich habe mehrere XForms Formulardokumente erstellt. Beim Start wird das erste Dokument geöffnet und der Dialog gestartet.
*************
Sub Start
dim myFileProp(1) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=False
myFileProp(1).name="AsTemplate"
myFileProp(1).value=True
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = converttourl("file:///c:/agroxml/17_10_2005/empfaenger/empfaenger.odt")
myDoc = oDesktop.loadComponentFromURL(Url, "_blank", 0, myFileProp())
DialogStart
End Sub
'___________________________Dialog
Dim oDok as Object
Dim oDialog as Object
Sub DialogStart
oDok = ThisComponent
DialogLibraries.LoadLibrary("Standard")
oDialog=Createunodialog(dialogLibraries.Standard.test)
oDialog.execute()
End Sub
Sub DialogEnde
oDialog.endexecute()
End sub
**********
Dann soll der Benutzer weiter Formularteile hinzufügen können. Dies wurde über insertDocumentFromUrl realisiert. Funtioniert auch...
***********
Sub Adresse
Dim sURL$
Dim oText
Dim oCurs
sURL = "file:///c:/agroxml/17_10_2005/adresse/adresse.odt"
oText = ThisComponent.getText()
oCurs = oText.createTextCursor()
oCurs.gotoEnd(False)
oCurs.insertDocumentFromURL(sURL, Array())
End Sub
***********
Über den Dialog wollte ich die Steuerung machen.
- Formularteile einfügen
- Dokumente öffnen, speichern, usw...
So soll dem Benutzer die Möglichkeit gegeben werden sein Dokument Stück für Stück selbst zu erstellen. Während der Erstellung soll er auch die Möglichkeit haben auf das Dokument zuzugreifen, um Texte zu ändern usw...
Dlg.dispose() - war überflüssig - es soll die Ressourcen wieder freigeben (Hatte ich im StarOffice8 Programierhandbuch gelesen)
Also, ich habe mehrere XForms Formulardokumente erstellt. Beim Start wird das erste Dokument geöffnet und der Dialog gestartet.
*************
Sub Start
dim myFileProp(1) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=False
myFileProp(1).name="AsTemplate"
myFileProp(1).value=True
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = converttourl("file:///c:/agroxml/17_10_2005/empfaenger/empfaenger.odt")
myDoc = oDesktop.loadComponentFromURL(Url, "_blank", 0, myFileProp())
DialogStart
End Sub
'___________________________Dialog
Dim oDok as Object
Dim oDialog as Object
Sub DialogStart
oDok = ThisComponent
DialogLibraries.LoadLibrary("Standard")
oDialog=Createunodialog(dialogLibraries.Standard.test)
oDialog.execute()
End Sub
Sub DialogEnde
oDialog.endexecute()
End sub
**********
Dann soll der Benutzer weiter Formularteile hinzufügen können. Dies wurde über insertDocumentFromUrl realisiert. Funtioniert auch...
***********
Sub Adresse
Dim sURL$
Dim oText
Dim oCurs
sURL = "file:///c:/agroxml/17_10_2005/adresse/adresse.odt"
oText = ThisComponent.getText()
oCurs = oText.createTextCursor()
oCurs.gotoEnd(False)
oCurs.insertDocumentFromURL(sURL, Array())
End Sub
***********
Über den Dialog wollte ich die Steuerung machen.
- Formularteile einfügen
- Dokumente öffnen, speichern, usw...
So soll dem Benutzer die Möglichkeit gegeben werden sein Dokument Stück für Stück selbst zu erstellen. Während der Erstellung soll er auch die Möglichkeit haben auf das Dokument zuzugreifen, um Texte zu ändern usw...