AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Druckertreiber läßt sich nicht ändern!
Thema durchsuchen
Ansicht
Themen-Optionen

Druckertreiber läßt sich nicht ändern!

Ein Thema von Ruewue · begonnen am 8. Apr 2010 · letzter Beitrag vom 12. Apr 2010
Antwort Antwort
Ruewue

Registriert seit: 16. Okt 2006
27 Beiträge
 
#1

Druckertreiber läßt sich nicht ändern!

  Alt 8. Apr 2010, 08:35
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:
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;
Mein Code für die Änderung
Delphi-Quellcode:
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;
und der Aufruf im Program
Delphi-Quellcode:
  if PrinterSupportsDuplex then
     SetPrinterSettings;
Hat einer vieleicht eine Lösung in der Schublade? Ich wäre für jeden Hinweis dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: In der Lüneburger Heide
165 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Druckertreiber läßt sich nicht ändern!

  Alt 8. Apr 2010, 09:36
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
Carsten
  Mit Zitat antworten Zitat
Ruewue

Registriert seit: 16. Okt 2006
27 Beiträge
 
#3

Re: Druckertreiber läßt sich nicht ändern!

  Alt 9. Apr 2010, 09:50
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 !!!
  Mit Zitat antworten Zitat
Ruewue

Registriert seit: 16. Okt 2006
27 Beiträge
 
#4

Re: Druckertreiber läßt sich nicht ändern!

  Alt 12. Apr 2010, 10:11
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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