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?