Seite 1 von 1

keine Programmaktionen solange ein Dialog geöffnet ist...

Verfasst: Sa, 22.10.2005 14:18
von thinklink
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

Verfasst: Sa, 22.10.2005 16:04
von Toxitom
Hey,
Hat Jemand eine Idee wie ich bei geöffnetem Dialog auf das Dokument zugreifen kann???
So gar nicht. Ist das gleiche Verhalten, wie wenn du eine Dialogbox über das Menü öffnest. Die Anwendung darunter ist jetzt nicht zugänglich.

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:
Dlg.dispose()
Wozu das? Ich kenne zwar deinen Test-Dialog nicht, aber das ist meist überflüssig. Ein Dialog wird üblicherweise mit

Code: Alles auswählen

Dlg.endExecute() 
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 -

Code: Alles auswählen

Dim Dlg as Object
außerhalb der ersten Prozedur des Moduls definieren, also am Anfang!.

Viele Grüße
Thomas

Verfasst: So, 23.10.2005 13:32
von thinklink
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...