ActiveX oder COM Komponenten
Hier ein Beispiel von mir. Es wird eine Datei zum Drucken an Word übergeben. Die Datei "filbestandliste2.rtf" wird gedruckt mit Seite von bis. Die Datei "maengel.rtf" mit Anzahl der eingebenen Kopien.
- include "Gra.ch"
- include "Xbp.ch"
- include "Appevent.ch"
- include "Font.ch"
- include "Inkey.ch"
- include "xbpdev.ch"
- include "activex.ch"
- include "xbpdev.ch"
- define wdPrintFromTo 3
- pragma Library( "XppUI2.lib" )
- pragma library( "ascom10.lib" )
Function Drucken( cDoc, cDrucker,oPrinter) Local cActivePrinter, aSeite:={}, nCopie:=0 Local oWord Local oDoc
oWord := CreateObject("Word.Application")
IF Empty( oWord ) MsgBox( "Microsoft Word ist nicht installiert" ) RETURN Nil ENDIF
oWord:visible := .f. // Word unsichtbar! cActivePrinter := oWord:Activeprinter // aktuellen Drucker feststellen oWord:Activeprinter:= cDrucker // Neuen Drucker setzen oWord:documents:Open(cDoc) oDoc := oWord:ActiveDocument
Do Case Case AT("filbestandliste2.rtf",cDoc) > 0 aSeite:=oDlg:pageRangeSelected oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 ) Case AT("maengel",cDoc) > 0 nCopie:=oPrinter:SetNumCopies() oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie ) Otherwise oDoc:PrintOut(.f.) EndCase
oWord:Activeprinter:= cActivePrinter // alten Drucker setzen oDoc:close() oWord:Quit() oWord:destroy() oWord := NIL
Return ( NIL )