mein Programm gibt Infos zur Laufzeit in einem Writer-Debugdokument aus.
Ich erzeuge das Writerdokument zur Laufzeit und halte es in einer Objektvariablen (oDebug). Falls das Writer-Debugdokument während der Laufzeit vom User geschlossen wird, führt ein Zugriff auf mein Object oDebug zum Programmabsturz. Also will ich vor dem Zugriff prüfen, ob es noch real existiert. Ein isObject(oDebug) bringt nichts, da OO das Object nicht automatisch mit dem Schließen des Dokumentes zerstört (daher ja auch der Absturz). Mein Ansatz daher:
Code: Alles auswählen
Private oDebug as Object
...
'-----------------------------------------------------------------
' erzeugt ein Writer-Dokument für die Debug-Meldungen
'-----------------------------------------------------------------
Sub CreateDebugDoc()
Dim sUrl as String, lSearch as Long, sFrame as String
Dim NoArgs()
lSearch = com.sun.star.frame.FrameSearchFlag.ALL + com.sun.star.frame.FrameSearchFlag.CREATE
sFrame = "Debugmeldungen"
sUrl = "private:factory/swriter"
oDebug = StarDesktop.LoadComponentFromURL(sUrl,sFrame,lSearch,NoArgs)
'oDebug.getCurrentController.Frame.ContainerWindow.Visible = False
End Sub
'-----------------------------------------------------------------
' schreibt einen String in das Debug-Dokument
'-----------------------------------------------------------------
Sub WriteDebugString(LocString as string)
Dim oLocCursor as Object, bFound as Boolean
Dim oDocs as object, oDocNeu as object
Dim oLocText as Object, lSearch as Long
lSearch = com.sun.star.frame.FrameSearchFlag.ALL
If isNull(StarDesktop.findFrame("Debugmeldungen",lSearch)) Then
createDebugDoc()
End If
oLocText = oDebug.text
oLocCursor = oLocText.createTextCursor()
oLocCursor.gotoEnd(False)
oLocText.insertString(oLocCursor,LocString & chr(13) & chr(13),False)
MsgBox("Framename oDebug: " & oDebug.currentController.Frame.name)
End Sub
Der neue Frame bekommt nie den Namen "Debugmeldungen", sondern der Name ist immer leer. Ergo wird für jede Ausgabe ein neues Writerdokument erzeugt.
Ist das nun ein neues 'Feature' der 2.2.0 oder mache ich da etwas falsch ?
Danke für Eure Hilfe, Rado