Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Standarddrucker wechseln ohne DialogBox

Moderator: Moderatoren

Antworten
BerndR
Rookie
Rookie
Beiträge: 17
Registriert: Do, 04. Dez 2014 11:53

Standarddrucker wechseln ohne DialogBox

Beitrag von BerndR » Mo, 02. Feb 2015 11:44

Hallo zusammen!

Ich habe da ein Problem mit dem Setzen des Druckers...

Hintergrund:
Ich möchte aus List & Label drucken OHNE das eine Auswahl (Dialog Box) angezeigt wird.
Die Vorlagendatei ist fertig und wird korrekt erzeugt, die Ausgabe wird auch korrekt auf dem "Standarddrucker" ausgegeben...
Hat jemand eine Idee (Code Reihenfolge der zu setzenden Befehle) für mich? :?:

Viele Grüße

Bernd

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6802
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Standarddrucker wechseln ohne DialogBox

Beitrag von Tom » Mo, 02. Feb 2015 16:09

Hallo, Bernd.

Code: Alles auswählen

IF lAskForPrinter
  LlPrinterSetup(nJob, oOwner:GetHWND(), LL_PROJECT_LIST,cFormName)
  ELSE
  LlSetPrinterInPrinterFile(nJob,LL_PROJECT_LIST,cFormName,-1,cPrinterName,nil) // Achtung: cPrinterName ggf. mit ConvToAnsiCP(), wenn die App OEM ist
ENDIF
Herzlich,
Tom

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2288
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: Standarddrucker wechseln ohne DialogBox

Beitrag von Wolfgang Ciriack » Mo, 02. Feb 2015 16:39

Um Tom zu ergänzen, hier ein Beispiel, um eine Druckdatei auf 2 verschiedene Drucker mit Hilfe des Storagesystems auszugeben.
Alle my.. sind variablen von mir, die must du deinen Bedürfnissen anpassen. myprinter1 und myprinter2 sind bei mir im Programm durch oPrinter := XbpPrinter():New(), aList := oPrinter:List() festgelegte Druckernamen.

Code: Alles auswählen

   LlPreviewSetTempPath(hJob, mytmppfad )

   *** Keine Ausgabe des Preview
   LlsetOption(hjob, LL_OPTION_INCREMENTAL_PREVIEW, .F.)
   LlsetOptionString(hjob, LL_OPTIONSTR_LICENSINGINFO, LL_LIZENZKEY)

   nRet := LlPrintStart(hjob, prj_typ, mylistenpfad+cListenName, LL_PRINT_PREVIEW)

   if nRet=0
      *** Parameter fr Drucker-Dialog setzen
.....
... Ausdruck
...
         LlPrint(hjob)
         LlPrintEnd(hjob, 0)

         ** hier ist jetzt die LL-Datei vorhanden
         ** Ausgabe mit dem Storagesystem:
         ** jede Seite 1 Mal auf Drucker 1
         **        und 1 Mal auf Drucker 2
         LS20ModuleInit() 

         fi:=mytmppfad+cListenName+".LL"
         if file(fi)
            fh:=LlStgsysStorageOpen(fi,"",.F.,.T.)
            AnzSeit:=LlStgsysGetPageCount(fh)
            for i:=1 to AnzSeit
               nRet:=LlStgSysPrint(fh,myprinter1,i,i,0,LS_PRINTFLAG_METER,"Seite "+str(i,2)+" Original",nHandle)
               if nRet=0
                  nRet:=LlStgSysPrint(fh,myprinter2,i,i,0,0,"Seite "+str(i,2)+" Kopie",nHandle)
               endif
               if nRet<>0
                  MyMsgBox("Fehler beim Druck: "+alltrim(str(nRet)),ERROR2)
                  exit
               endif
            next
            LlStgsysStorageClose(fh)
            LlStgsysDeleteFiles(fh)
         else
            MyMsgBox("Fehler beim Öffnen der LL-Datei",ERROR2)
         endif
         LS20ModuleExit()
Viele Grüße
Wolfgang

BerndR
Rookie
Rookie
Beiträge: 17
Registriert: Do, 04. Dez 2014 11:53

Re: Standarddrucker wechseln ohne DialogBox

Beitrag von BerndR » Mo, 02. Feb 2015 19:31

Ich habe das mit dem:
LlSetPrinterInPrinterFile(nJob,LL_PROJECT_LIST,cFormName,-1,cPrinterName,nil)
ausprobiert...
Bekomme aber den Fehler -3 (ERR_BAD_OBJECTTYPE) !?
Es handelt sich um eine Liste...
Was müsste in den Parametern stehen?

BerndR
Rookie
Rookie
Beiträge: 17
Registriert: Do, 04. Dez 2014 11:53

Re: Standarddrucker wechseln ohne DialogBox

Beitrag von BerndR » Mo, 02. Feb 2015 19:44

Hab das DebWin mal mitlaufen lassen...
Der gibt völligen Blödsinn zurück:

CMLL20 : 19:38:19.341 00001694/00 6 [CobPrint.dll] >LlSetPrinterInPrinterFileA(1,1659994584,'E:\TestVerzeichnis\Test\adressen.LST',1659996648,'PDFCreator',0X62F299FC)
CMLL20 : 19:38:19.341 00001694/00 7 [CobPrint.dll] *** [Error in parameter #2: invalid type of project (LL_PROJECT_...)]
CMLL20 : 19:38:19.341 00001694/00 8 [CobPrint.dll] <LlSetPrinterInPrinterFileA() -> -3 (0XFFFFFFFD) (Einer Funktion, die den Projekttyp als Parameter benötigt, wurde ein ungültiger Projekttyp übergeben.)

??? :shock:

BerndR
Rookie
Rookie
Beiträge: 17
Registriert: Do, 04. Dez 2014 11:53

Re: Standarddrucker wechseln ohne DialogBox

Beitrag von BerndR » Mo, 02. Feb 2015 20:36

Hab den Fehler gefunden!
Es musste ByVal übergeben werden, dann läuft es...
Danke für die Hilfe!!! :D

Antworten