Druckertreiber läßt sich nicht ändern!
Hallo zusammen,
ich habe das Problem, dass ich meine Druckertreiber nicht auf andere Werte umstellen kann. Ich drucke aus Delphi mit List&Label ein Formular, welches doppelseitig bedruckt werden soll. Stelle ich nun den Druckertreiber direkt um, so ist alles klar, doch er druckt auch alles andere doppelseitig. Da ich im Hintergrund drucke, kann der User hier nicht eingreifen. Ich habe schon versucht die DUPLEX Einstellung direkt im L&L Formular zu machen, doch ignoriert dies der Drucker. Auch aus Delphi heraus kann ich den Drucker nicht dazu bewegen. Er läßt überhaupt keine Veränderung aus Delphi zu. Der Drucker selbst befindet sich im Netz, ist also nicht direkt angeschlossen. Die Abfrage auf DUPLEX oder nicht funktioniert hingen aus Delphi fehlerfrei. Hier mein Abfragecode
Delphi-Quellcode:
Mein Code für die Änderung
function TfrmVorbereitung.PrinterSupportsDuplex:Boolean;
var Device,Driver,Port : array[0..255]of Char; hDevMode :THandle ; begin Printer.GetPrinter(Device, Driver, Port, hDevMode); Result:= WinSpool.DeviceCapabilities(Device, Port, DC_DUPLEX, nil, nil) <> 0; end;
Delphi-Quellcode:
und der Aufruf im Program
procedure TfrmVorbereitung.SetPrinterSettings;
var Device,Driver,Port : array[0..80]of Char; DevMode : THandle; pDevmode : PDeviceMode; begin //--- Get printer device mode handle ----------------------------------------------------------------------- Printer.GetPrinter(Device, Driver, Port, DevMode); if DevMode <> 0 then begin //--- lock it to get pointer to DEVMODE record ----------------------------------------------------------- pDevMode := GlobalLock(DevMode); if pDevMode <> nil then try with pDevmode^ do begin dmDuplex := DMDUP_VERTICAL; dmFields := dmFields or DM_DUPLEX; end; finally //--- unlock devmode handle ---------------------------------------------------------------------------- GlobalUnlock(DevMode); end; end;{ If } end;
Delphi-Quellcode:
Hat einer vieleicht eine Lösung in der Schublade? Ich wäre für jeden Hinweis dankbar.
if PrinterSupportsDuplex then
SetPrinterSettings; |
Re: Druckertreiber läßt sich nicht ändern!
Hallo Ruewue,
wir hatten seinerzeit ein ähnliches Problem mit der Schachtanwahl verschiedener Druckertreiber. Verursacht wurde es durch einen Fehler in der printers.pas von Delphi selbst. Der Fehler war sowohl in D5, als auch in RadStudio 2007 vorhanden. Weiß nicht, ob es Dein Problem lösen kann, aber einen Versuch ist es allemal wert. Musst Du nur die printers.pas aus den Delphi-Sourcen an eine andere Stelle kopieren, korrigieren (siehe embarcadero-Link im Thread unten) und dem Projekt explizit hinzufügen. http://www.delphipraxis.net/internal...t=printers+pas Gruß DelphiBandit |
Re: Druckertreiber läßt sich nicht ändern!
DAnke,
hat aber leider nichts gebracht. Ich kann die Einstellungen des Druckertreibers abfragen, sie jedoch nicht verändern. Kann es daran liegen das der Treiber auf dem Spool-Server liegt? Ich kann ihn jedoch auf meinem PC unter Drucker Einstellungen verändern und auf DUPLEX umstellen. Halt nur nicht von meinem Programm aus. Was ich auch gesehen habe, wenn ich unter WORD auf DUPLEX umschalte, das ist im Treiber auch keine Änderung zu sehen, doch er druckt beidseitig. Sollte dann doch auch aus meinem Programm gehen. Danke schon mal !!! |
Re: Druckertreiber läßt sich nicht ändern!
Ich habs gelöst. Bin auf List&Label 15 umgestiegen und da funktioniert auch die Einstellung im Formular, so das ich keine Treiber manipulieren muss.
Gruß und Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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