ich versuche gerade über OpenOffice ein Dokument auszudrucken (was auch grundsätzlich funktioniert).
Nur habe ich Probleme die Eigenschaften des Druckers anzuzeigen.
Das Kuriose ist, das bei xBase 1.9.331 es wie erwartet funktioniert, sobald ich aber den gleichen Code mit 1.9.335 SL1
kompliere, meldet die MsgBox( ...) nur NIL Werte.
Hat jemand eine Idee was da schiefgeht ?
Gruß Peter
Code: Alles auswählen
// den Servicemanager erzeugen
oServiceManager := CreateObject("com.sun.star.ServiceManager")
// ein Parameterarray erzeugen
oHidden := MakeProperty( "Hidden", TRUE )
LoadArgs := VTType():New( {oHidden}, VT_ARRAY+VT_VARIANT )
// den OOo-Desktop unsichtbar erzeugen
oDesktop := oServiceManager:createInstanceWithArguments("com.sun.star.frame.Desktop", LoadArgs )
*--------------------------
// Das Dokument unsichtbar laden
oDocument := oDesktop:LoadComponentFromURL( convertToURL(cPath), '_blank', 0, LoadArgs )
/* Die Druckereigenschaften abfragen
oDocument:getPrinter() soll ein Array von Property-Objekten liefern. Tats„chlich
liefert es aber ein Array von Interfacepointern. Damit man damit etwas anfangen kann,
mssen aus den Interfacepointern erst AutomationObjects gemacht werden.
Das erledigt die Hilfsfunktion MakeProperty() gleich mit.*/
aPrinterProperties := oDocument:getPrinter()
aeval( aPrinterProperties, {|x,i| x := MakeProperty( x )} , , , TRUE )
// Die Druckereigenschaften anzeigen
cText := ""
aeval( aPrinterProperties, {|o| cText += var2char(o:Name) + " " + TAB + var2char(o:value) + CR } )
MsgBox( cText, "Eigenschaften des Defaultdruckers" )
NullArgs := VTType():New( {}, VT_ARRAY+VT_VARIANT ) // ein leeres Parameterarray erzeugen
oDocument:print( NullArgs ) // Das Dokument auf dem Defaultdrucker ausgeben
oDocument:close( TRUE ) //Das Dokument schlieáen
...
*******************************************************************************
FUNCTION MakeProperty( ncName, xValue ) // ein Property-Objekt erzeugen
LOCAL oStruct
IF ISNUMBER( ncName )
// vom Interface-Pointer zum AutomationObject
oStruct := AutomationObject():Create( ncName )
ELSE
oStruct := oServiceManager:Bridge_GetStruct("com.sun.star.beans.PropertyValue")
IF ISCHARACTER( ncName )
oStruct:Name := ncName
ENDIF
IF xValue <> NIL
oStruct:Value := xValue
ENDIF
ENDIF
RETURN oStruct