Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Drucker per Programm auf Simplex oder Duplex Druck einstellen (https://www.delphipraxis.net/188051-drucker-per-programm-auf-simplex-oder-duplex-druck-einstellen.html)

Andidreas 27. Jan 2016 07:36

Drucker per Programm auf Simplex oder Duplex Druck einstellen
 
Hallo zusammen,

ich versuche gerade bei unserem Drucker die Druckmethode per Programm auf Simplex (einseitiger Druck) oder Duplex (Druck auf Vorder & Rückseite) einzustellen...

Hierfür habe ich mir über Funktionen die ich im Internet gefunden habe den folgenden Source zusammengestellt:

Delphi-Quellcode:

    Printer.PrinterIndex := Printer.Printers.IndexOf(cmbbox_printers.Text);
    Printer.GetPrinter(arDevice, arDriver, arPort, hDevMode);
    blDuplexSupported := WinSpool.DeviceCapabilities(arDevice, arPort, DC_DUPLEX, nil, nil) <> 0;

    If (blDuplexSupported) Then
    Begin
      ShowMessage('Duplex Printer');

      If hDevMode <> 0 Then
      Begin
        // lock it to get pointer to DEVMODE record
        pDevMode := GlobalLock(hDevMode);

        If pDevMode <> Nil Then
        Begin
          Try
            With pDevmode^ Do
            Begin
              //dmDuplex := DMDUP_VERTICAL;  // Duplex
              //dmDuplex := DMDUP_HORIZONTAL; // Duplex
              dmDuplex:=DMDUP_SIMPLEX;        //Simplex
              dmFields := dmFields or DM_DUPLEX;
            End;
          Finally
            // unlock devmode handle.
            GlobalUnlock(hDevMode);
          End;
        End;
      End;

    End Else
    Begin
      ShowMessage('No Duplex Printer');
    End;
Der Drucker mit dem ich Teste ist Standardmäßig im Druckertreiber auf Duplex eingestellt.

Wenn ich mir die Druckereinstellungen in die pDevMode Variable einlese wird mir im Feld dmDuplex eine zwei angezeigt (heißt vermutlich Duplex Druck). Nachdem ich dem Feld dmDuplex den Wert DMDUP_SIMPLEX zugewiesen habe steht im dmDuplex Feld eine eins (Einseitiger Druck ???).

Das Druckergebnis beeinflusst die Routine aber nicht, d.h. egal was ich in meiner Routine einstelle, der Drucker Druckt immer Duplex & die Einstellung im Druckertreiber stellt sich auch nicht um.

Was evtl. noch wichtig ist, der Druck erfolgt über List & Label. List & Label bietet im Layout auch eine Option auf Simplex umzustellen, diese ist aber genauso "nutzlos".

Mach ich etwas falsch oder gibt es generell nur die Möglichkeit die Druckmethode im Treiber Fix auf Simplex oder Duplex einzustellen?

zagota 27. Jan 2016 08:27

AW: Drucker per Programm auf Simplex oder Duplex Druck einstellen
 
Zitat:

Zitat von Andidreas (Beitrag 1328360)
Delphi-Quellcode:
              dmDuplex:=DMDUP_SIMPLEX;        //Simplex
              dmFields := dmFields or DM_DUPLEX;

Müsste es nicht
Delphi-Quellcode:
dmFields := dmFields and not DM_DUPLEX
heissen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz