Announcement

Collapse
No announcement yet.

Querformat, Din A3 und im richtigen Papierschacht Drucken

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

  • Querformat, Din A3 und im richtigen Papierschacht Drucken

    Wie kann ich im Querformat, mit Papier aus dem manuellen oberen Papierschacht drucken ?

    (Das mit dem Papierschacht hat sich (fast) geklärt -> wäre nur über einen Quelltext Dankbar der all diese Elemente vereint.)

    Ich hab es wie unten zu sehen ist probiert aber irgendwo muss ein Fehler sein: "Undeclare Identifier: 'PrinterIndex'"

    Ich hoffe jemand kann mir helfen, vielleicht den Fehler finden und berichtigen und ausserdem das Querformat einbinden.

    Vielen Dank schon im Vorraus - Mathias

    ----------------- Quellcode: -------------------
    procedure Teingabeform.druckenBitBtnClick(Sender: TObject);
    var
    aDevice : array[0..255] of char;
    aDriver : array[0..255] of char;
    aPort : array[0..255] of char;
    hDMode : THandle;
    PDMode : PDEVMODE;

    begin

    Printer.PrinterIndex := -1;
    Printer.GetPrinter(aDevice, aDriver, aPort, hDMode);
    if hDMode <> 0 then begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then begin
    pDMode^.dmFields := DM_DEFAULTSOURCE;
    pDMode^.dmDefaultSource := DMBIN_MANUAL;
    //pDMode^.dmDefaultSource := DMBIN_AUTO ;
    GlobalUnlock(hDMode);
    end;
    end;

    Printer.BeginDoc; //Starten des Druckauftrags
    Printer.Canvas.TextOut (0, 0, ' ');//Erklär' ich nicht, muss aber sein, sonst funktioniert das Ganze nicht
    SetMapMode (Printer.Canvas.Handle, MM_LOMETRIC);//Damit wird die Druckausgabe auf Zehntel-Millimeter umgeschaltet
    with Printer.Canvas do
    begin
    PrinterIndex := Printer.PrinterIndex; ////////

    Font.Name := 'Arial'; //Hier kannst Du den Schriftnamen angeben;

    Font.Height := 300; //Schrifthöhe in Zehntel-Millimeter;
    SetTextAlign (Handle, TA_LEFT + TA_TOP); //Textausrichtung links oben
    TextOut (400, -200, fabrikat.text); //Damit wird der Text an Positionen x und y geschrieben

    Font.Height := 100; //Schrifthöhe in Zehntel-Millimeter;
    SetTextAlign (Handle, TA_LEFT + TA_TOP); //Textausrichtung links oben
    TextOut (200, -500, erstzulassung.text); //Damit wird der Text an Positionen x und y geschrieben

    end;
    Printer.EndDoc;
    end;

  • #2
    Hallo,

    der Fehler verbirgt sich hinter dem <b>with</b>-Aufruf - es muss trotzdem der voll qualifizierte Bezeichner angegeben werden:
    <pre>
    with Printer.Canvas do begin
    Printer.PrinterIndex := Printer.PrinterIndex;
    </pre>

    Die Papierausrichtung wird über die Printer-Eigenschaft <b>Orientation</b> festgelegt:
    <pre>
    Printer.Orientation := poPortrait;
    Printer.BeginDoc;
    ..
    </pre&gt

    Comment

    Working...
    X