Announcement

Collapse
No announcement yet.

Printers.BeginDoc ... EndDoc --> eine zusätliche leere Seite warum?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Printers.BeginDoc ... EndDoc --> eine zusätliche leere Seite warum?

    Hallo,

    Ich weise Printers.PrinterIndex einen bestimmten Drucker zu.

    Dann setze ich über hdMode Druckerschacht, Papiergröße, Duplexmode und Seitenorientierung.
    Dann kommt das BeginDoc
    danach wird über SetMapMode auf 1/10mm Einheit umgestellt.
    Anbei der entsprechende Code. Zwecks Übersicht habe ich die einzelnen DrawText und die Barcode-Aufrufe (es werden auf dem Formular Barcodes gezeichnet) weggelassen.

    <pre>
    Printer.PrinterIndex :=Printer.Printers.IndexOf(updModule.GetRegValue(' \Formulare\Baustellenberichte','Drucker'));
    Printer.GetPrinter(aDevice, aDriver, aPort, hDMode);
    if hDMode <>0 then begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then begin
    pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
    pDMode^.dmPaperSize := DMPAPER_A3;
    pDMode^.dmFields := pDMode^.dmFields or DM_DEFAULTSOURCE;
    pDMode^.dmDefaultSource := $102;
    pDMode^.dmFields := pDMode^.dmFields or DM_DUPLEX;
    pDMode^.dmDuplex := DMDUP_VERTICAL;
    pDMode^.dmFields := pDMode^.dmFields or DM_ORIENTATION;
    pDMode^.dmOrientation := DMORIENT_LANDSCAPE;
    GlobalUnlock(hDMode);
    end; // pDMode
    end; // hdMode
    Printer.PrinterIndex := Printer.PrinterIndex;
    Printer.Title := 'Baustellenformular';
    Printer.BeginDoc;
    SetMapMode(Printer.Canvas.Handle,mm_lometric);
    with Printer do begin
    // Druckerauflösung in x-Richtung und in y-Richtung
    Aufloesung_X:= GetDeviceCaps(Handle, LOGPIXELSX);
    Aufloesung_Y:= GetDeviceCaps(Handle, LOGPIXELSY);
    // Abstand bedruckbarer Bereich von Blattrand in Pixeln
    Randabstand_X_Pixeln:= GetDeviceCaps(Handle, PHYSICALOFFSETX);
    Randabstand_Y_Pixeln:= GetDeviceCaps(Handle, PHYSICALOFFSETY);
    // Breite Hoehe
    breite := GetDeviceCaps (handle, horzsize);
    hoehe := GetDeviceCaps (handle, vertsize);
    // Anzahl Farbebenen
    AnzahlFarben:= GetDeviceCaps(Handle, PLANES);
    end ; // with Printer
    // ShowMessage(Format('%d/%d-%d/%d',[breite,hoehe,Randabstand_X_Pixeln,Randabstand_Y_Pi xeln]));
    Blatt := Printer.Canvas;
    Blatt.Font.Color := clBlack;
    Blatt.Font.Name := 'Arial';
    Blatt.Font.Style := [fsBold];
    Blatt.Font.Size := 3;
    ...
    drucken mittels drawText

    Printer.EndDoc;

    </pre>

    Warum wird nach dem EndDoc immer die Seite plus eine Leerseite ausgedruckt?
    Ich hab keinen blassen Schimmer wo ich suchen soll.

    Vielleicht hat von Euch einer eine Idee.

    LG
    Peter
Working...
X