Announcement

Collapse
No announcement yet.

Benutzerdefiniertes Papierformat setzen

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

  • Benutzerdefiniertes Papierformat setzen

    Hallo,

    gibt es eine Möglichkeit an einem beliebigen Drucker, unter einem beliebigen Betriebssystem die Papiergröße des Druckers auf ein benutzerdefiniertes Format (z.B. 5cm hoch, 10cm breit) einzustellen?? Ein Beispiel wäre sehr hilfreich für mich.
    Dankeschön.

    Gruss Sandra

  • #2
    Hallo,

    siehe <i>Papierformat setzen, wie geht das</i> einige Zeilen weiter unten

    Comment


    • #3
      Hallo Herr Kosch,

      das Beispielprogramm habe ich schon ausprobiert. Damit ist es auch kein Problem am Drucker ein Standrad-Format(A4,A5 ect.) zu setzen, jedoch benötige ich ein benutzerdefiniertes Format.

      Ich habe pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE und pDMode^.dmPaperSize := DM_PAPERUSER gesetzt, danach auch noch mal pDMode^.dmFields := pDMode^.dmFields or DM_PAPERLENGTH or DM_PAPERWIDTH und entsprechend meine Höhe- und Breitenwerte gesetzt, aber ich komme zu keinem Erfolg. Haben Sie mir noch eine Tipp?!??!

      Gruß Sandr

      Comment


      • #4
        Hallo Frau Augenstein

        Ich habe mit den gleichen Schwierigkeiten gekämpft. Mit unten auf-
        geführter Prozedur geht es nun. Wenn man die Länge verändern will,
        muss man offenbar dmPapersize den Wert Null zuweisen.

        Mit freundlichem Gruss
        Rudi Duttweiler

        Procedure Papier(a4: boolean;hoehe,breite: integer);

        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:=loDruckerindex;
        printer.getPrinter(aDevice,aDriver,aPort,hDmode);
        if hDmode<>0 then
        begin
        pDmode:=GlobalLock(hDmode);
        if pDmode<>nil then
        begin
        if a4=true then
        begin
        pdMode^.dmFields:=pDmode^.dmFields or dm_papersize;
        pdMode^.dmPapersize:=dmpaper_a4;
        end
        else
        begin
        pdMode^.dmFields:=pDmode^.dmFields or dm_papersize;
        pdMode^.dmPapersize:=0;
        pdMode^.dmFields:=pDmode^.dmFields or dm_paperlength;
        pdMode^.dmPaperLength:=hoehe;
        pdMode^.dmFields:=pDmode^.dmFields or dm_paperwidth;
        pdMode^.dmPaperwidth:=breite;
        end;
        GlobalUnlock(hDMode);
        end;
        end;
        end

        Comment


        • #5
          Hallo Rudi,

          ich habe Ihre Funktion in mein Programm eingebaut, diese aufgerufen und habe über <br>
          Printer.BeginDoc; => Printer.Canvas.TextOut(..) => Printer.EndDoc; <br>
          einen Text an den Drucker geschickt. <p>
          Ich dachte wenn meine Druckseite auf 5cm Höhe gesetzt wurde, macht der Drucker auch nur noch einen Seitenvorschub von 5cm, da ja meine Seite nur 5cm hoch ist! Allerdings war der Seitenvorschub immer noch DinA4.
          Wie merke ich dass das Papierformat umgesetzt wurde, bzw. wie verkleinere ich meinen automatischen Seitenvorschub?

          Gruß Sandr

          Comment

          Working...
          X