Autor Beitrag
C++arsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 79



BeitragVerfasst: Do 07.07.05 09:09 
Hallo,

unser Drucker bekommt eine Duplex-Einheit, weil unsere Formulare auf Vorder- und Rückseite bedruckt werden müssen. Bisher legten wir die bedruckte Vorderseite umgekehrt wieder in das Papierfach und bedruckten dann die Rückseite.
Weiß jemand, wie man es programmtechnisch bewerkstelligt, dass das Programm Vorder- und Rückseite mit Hilfe der Duplexeinheit bedruckt? Gibt es irgendwo einen Beispielcode?
Danke und Gruß
Carsten


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Do 07.07.2005 um 10:27
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Do 07.07.05 21:19 
Hallo Carsten!

Zunächst einmal sollte bei der Duplexeinheit auch eine Anleitung beiliegen - also warten und lesen!

Üblich ist aber, daß über den Druckertreiber Duplex eingestellt wird und der Drucker dann alles selber regelt - also einfach die Seiten in der richtigen Reihenfolge drucken und gut ist!

Bei mit steht ein Laserdrucker mit manuellem Duplex. Das geht so, daß man ganz normal druckt, der Druckertreiber dann die "falschen" Seiten zwischenspeichert, bei Ende des Druckauftrages nach dem Drucken des ersten Teils zum Papier-Umdrehen auffordert und dann den zweiten Teil druckt. Leider klappt das nur, wenn ich auf dem Rechner drucke, wo der Drucker dranhängt - im Netzwerk gates nicht :motz:

Vermutlich wirst Du Dein Programm vom Drucken in 2 Portionen (Vorder/Rückseite) auf "Durchdrucken" (alle Seiten in Reihenfolge drucken) umstellen müssen.

Zum Steuern des Druckertreibers gibt es verschiedene Datenstrukturen - siehe PSDK bzw. MSDN. Alternativ kann natürlich der Drucker permanent auf Duplex stehen oder das Ganze über PrintDialog bzw. PrinterSetupDialog eingestellt werden.

Gruß

Dietmar Brüggendiek
C++arsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 79



BeitragVerfasst: Do 07.07.05 21:45 
Ich probiere es erstmal aus. Danke für die Antwort.
C++arsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 79



BeitragVerfasst: So 10.07.05 09:33 
Titel: noch ne Frage
Mit diesem Codefragment stellt man ein, ob auf DIN-A3 oder DIN-A4 gedruckt wird:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//DIN-A4- oder DIN-A3-Papierformat festlegen
    Printer.GetPrinter(device,driver,port,hdmode);
    if hdmode<>0 then begin
        pdmode:=GlobalLock(hdmode);
        if pdmode<>nil then begin
            pdmode^.dmFields:=pdmode^.dmFields or dm_PaperSize;
            if Unit1.a3 then begin
                pdmode^.dmPaperSize:=DMPAPER_A3; //Papier hat jetzt Größe DIN-A3
            end else begin
                pdmode^.dmPaperSize:=DMPAPER_A4; //Papier hat jetzt Größe DIN-A4
            end;
            GlobalUnlock(hdmode);
        end;
    end;

Kennt jemand ein vergleichbares Codebeispiel zum Auswählen des Druckerschachtes? Ein Din-A3-Drucker hat ja eine Papierkassette für A3- und A4-Papier. Die meisten Benutzer vergessen aber, die entprechende Kassette im Druckerdialogfeld umzuschalten, je nachdem, ob auf A3 oder A4 gedruckt werden soll. So gibts immer ne Menge Fehldrucke.
Könnte man das programmseitig einstellen, würde ich ne Kerze anzünden.
Danke für ne Antwort.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.