ActiveX oder COM Komponenten: Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
(Hinweis für Worddruck)
 
Keine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:




#include "Gra.ch"
#include "Gra.ch"
#include "Xbp.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Font.ch"
#include "Inkey.ch"
#include "Inkey.ch"
#include "xbpdev.ch"
#include "xbpdev.ch"
#include "activex.ch"
#include "activex.ch"
#include "xbpdev.ch"
#include "xbpdev.ch"
 
#define wdPrintFromTo 3
#define wdPrintFromTo 3
 
#pragma Library( "XppUI2.lib" )  
#pragma Library( "XppUI2.lib" )  
#pragma library( "ascom10.lib" )  
#pragma library( "ascom10.lib" )  
 
Function Drucken( cDoc, cDrucker,oPrinter)  
Function Drucken( cDoc, cDrucker,oPrinter)  
Local cActivePrinter, aSeite:={}, nCopie:=0
Local cActivePrinter, aSeite:={}, nCopie:=0
Local oWord  
Local oWord  
Local oDoc  
Local oDoc  
 
    oWord := CreateObject("Word.Application")  
  oWord := CreateObject("Word.Application")  
 
   IF Empty( oWord )  
   IF Empty( oWord )  
     MsgBox( "Microsoft Word ist nicht installiert" )  
     MsgBox( "Microsoft Word ist nicht installiert" )  
     RETURN Nil
     RETURN Nil
   ENDIF  
   ENDIF  
 
   oWord:visible  := .f.                              // Word unsichtbar!  
   oWord:visible  := .f.                              // Word unsichtbar!  
   cActivePrinter  := oWord:Activeprinter    // aktuellen Drucker feststellen  
   cActivePrinter  := oWord:Activeprinter    // aktuellen Drucker feststellen  
   oWord:Activeprinter:= cDrucker              // Neuen Drucker setzen  
   oWord:Activeprinter:= cDrucker              // Neuen Drucker setzen  
   oWord:documents:Open(cDoc)                   
   oWord:documents:Open(cDoc)                   
   oDoc      := oWord:ActiveDocument  
   oDoc      := oWord:ActiveDocument
 
Do Case
  Do Case
Case AT("filbestandliste2.rtf",cDoc) > 0
  Case AT("filbestandliste2.rtf",cDoc) > 0
aSeite:=oDlg:pageRangeSelected
    aSeite:=oDlg:pageRangeSelected
oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 )
    oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 )
Case AT("maengel",cDoc) > 0
  Case AT("maengel",cDoc) > 0
nCopie:=oPrinter:SetNumCopies()
    nCopie:=oPrinter:SetNumCopies()
oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie )
    oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie )
Otherwise
  Otherwise
  oDoc:PrintOut(.f.)     
    oDoc:PrintOut(.f.)     
EndCase                     
  EndCase                     
   oWord:Activeprinter:= cActivePrinter      // alten Drucker setzen  
   oWord:Activeprinter:= cActivePrinter      // alten Drucker setzen  
   oDoc:close()  
   oDoc:close()  
Zeile 51: Zeile 51:
   oWord:destroy()  
   oWord:destroy()  
   oWord := NIL  
   oWord := NIL  
Return ( NIL )
Return ( NIL )

Version vom 11. November 2013, 09:08 Uhr

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 )