Werner_Bayern hat geschrieben:Nach dem Löschen einiger Drucker kann ich das Problem auf dem Kundensystem nicht mehr nachvollziehen.
bevor er zu einer solchen Abfrage nach dem XBPPRN_STATUS_READY kommst muss du ja erst mal ein oPrinter Object (XbpPrinter()) erzeugen... wie "prüfst" du das ?
if .not. oDrucker:printerStatus() == XBPPRN_STATUS_READY
Der Ausdruck ist also:
Code: if .not. -5 == 1
NEIN den -5 bedeutet XBPPRN_STATUS_
NA
ich "denke" deine "PrinterPS" zum erzeugen des oPrinter Object kann keine "Verknüpfung" zum Device Context durchführen.
Frage : handelt es sich dabei um "Netzwerk" Drucker ?
ich hatte im Alaska Forum von James Loughner
is o:paperbin online ?
archived.generic
23. Mai 2005
eine Lösung bekommmen.
eine längere Diskussion über meine ( funktionierende ) PrinterPS() ergab sich dann im Thread
xbpprinter printerstatus
public.xbase++.generic
29. Januar 2008
Code: Alles auswählen
FUNCTION PRINTERPS( cPrinter, nCopies, nPaperBin )
LOCAL oDC := XbpPrinter():New()
LOCAL oPS
LOCAL aPB, i, iMax // Array Paperbins
LOCAL lRaus := .T.
LOCAL lPFail := .F.
LOCAL oDlg, oPrinter, cText, nStatus
LOCAL nDummy
LOCAL aPrint := oDC:list()
LOCAL nPrint := 0
DEFAULT nCopies TO 1
oLastPRN := NIL
BEGIN SEQUENCE
nPrint := ASCAN( aPrint, { | x | ( ID_DRUCK ) $ UPPER( x ) } )
IF nPrint > 0
cPrinter := aPrint[ nPrint ]
ENDIF
IF cPrinter != NIL // if NIL use Windows default?
cPrinter := TRIM( cPrinter )
ENDIF
//
// NIL does not work (like in older help file sample)
//
// IF oDC:Create( cPrinter ) == NIL
//
// Solution see Alaska Newsgroup
//
IF oDC:Create( cPrinter ) == oDC // = self
ELSE
MsgBox( "! Drucker ist Offline !" )
BREAK // raus
ENDIF
nStatus := oDC:PrinterStatus()
DO CASE
CASE nStatus == 1
sieh dir mal die Zeile
an. nur wenn das XbpPrinter() Object, nach dem o:create(), noch "exakt" das selbe ist nur dann ist der Device Context mit "dem" Drucker verbunden.