Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TPrinter, Papierformat (https://www.delphipraxis.net/174260-tprinter-papierformat.html)

DSCHUCH 12. Apr 2013 10:54

TPrinter, Papierformat
 
Hallo,

ich mache ein ganz einfaches Etikett mit TPrinter und Canvas.Textout. Funktioniert soweit gut. Ich muß allerdings programmseitig noch das Papierformat setzen. Dies ist ein Standardformat, welches ich im PrinterSetupDialog anwählen kann.

Offensichtlich gibt es aber keine einfache Möglichkeit das Papierformat zu setzen? Ich hätte erwartet, das ich genau wie ich einen Drucker mittels Printer.Printerindex:=X auch das Papierformat setzen kann : Printer.PaperFormatIndex:=Y, was es aber so scheinbar nicht gibt.

PaperWidth und PaperHeight kann ich zwar auslesen, aber nicht setzen.

Wie kann ich dem Printer sagen, welches Papierforma er verwenden soll?

Danke, Daniel.

DeddyH 12. Apr 2013 11:07

AW: TPrinter, Papierformat
 
http://delphi-kb.blogspot.de/2009/04...aper-size.html

p80286 12. Apr 2013 11:10

AW: TPrinter, Papierformat
 
a) das kommt auf den drucker an,
b) das wird im Drucker definiert (z.b welches Letterformat auf welchem Din-format gedruckt werden soll)
c) der Drucker kann über Escape-Sequencen angesteuert werden.
d) Du hast einen Netz-Spooler der sowieso alles besser weiß

Such Dir eine der obigen Möglichkeiten aus oder nenne eine weitere.

Gruß
K-H

Neumann 12. Apr 2013 11:16

AW: TPrinter, Papierformat
 
Etiketten und auch Tickets kann man ganz gut mit Fastreport drucken

MeierZwoo 12. Apr 2013 16:38

AW: TPrinter, Papierformat
 
DSCHUCH, wozu willst du das Papierformat setzen? Es ist für den Druckaufbau doch nur wichtig, das Papierformat (des Faches) zu KENNEN. Um zu wissen, ob Du ein oder mehrere Bahnen und ein oder mehrere Etiketten in Folge auf ein Blatt drucken kannst.

Das Papierformat SETZEN geht ansich nur bei Endlosdruckern (Endlos-Leporello oder Rollendruckern), und dort auch nur die Länge der Seite (also welchen Vorschub ein FF erzeugt).

Printer.canvas selbst ist prinzipiell endlos in beiden Dimensionen.

DSCHUCH 12. Apr 2013 19:35

AW: TPrinter, Papierformat
 
Richtig, es ist ein Rollendrucker. Das Standardformat ist ein anderes, als das wir verwenden. Stellt man im Druckertreiber das Standardformat um, funktioniert es nicht mehr richtig, da scheint ein Ei im Druckertreiber zu sein.
Stelle ich das Format über den PrintSetDialog von Delphi ein, funktioniert es super, ist nach dem Neustart aber wieder weg und muß neu eingegeben werden.

Ok, wir werden es mal mit dem Link aus dem 2. Post probieren. http://delphi-kb.blogspot.de/2009/04...aper-size.html

(Ich will kein FR benutzen, einfach nur 3 Zeilen auf ein Etikett, muß ohne eine riesen Komponente gehen, was es auch tut; soll am ende ein Dienst ohne Userinterface werden)

Zitat:

Zitat von MeierZwoo (Beitrag 1211284)
DSCHUCH, wozu willst du das Papierformat setzen? Es ist für den Druckaufbau doch nur wichtig, das Papierformat (des Faches) zu KENNEN. Um zu wissen, ob Du ein oder mehrere Bahnen und ein oder mehrere Etiketten in Folge auf ein Blatt drucken kannst.

Das Papierformat SETZEN geht ansich nur bei Endlosdruckern (Endlos-Leporello oder Rollendruckern), und dort auch nur die Länge der Seite (also welchen Vorschub ein FF erzeugt).

Printer.canvas selbst ist prinzipiell endlos in beiden Dimensionen.


MeierZwoo 12. Apr 2013 21:23

AW: TPrinter, Papierformat
 
Zitat:

Zitat von DSCHUCH (Beitrag 1211291)
Richtig, es ist ein Rollendrucker. Das Standardformat ist ein anderes, als das wir verwenden. Stellt man im Druckertreiber das Standardformat um, funktioniert es nicht mehr richtig, da scheint ein Ei im Druckertreiber zu sein.

Daß es sich um einem (Etiketten-)Rollendrucker handelt, hättest Du aber bessser gliech am Anfang erwähnen sollen, da deren Ansteuerung in Bezug auf das Format völlig anders funktioniert als bei Einzelblatt-Druckern.

Ausserdem ist der Ausdruck "Format" vöilig falsch, weil es sich in der Ansteuerung nur um eine Dimension, die Länge handelt, die Breite naturgegeben durch die eingelegte Rolle vorgegeben ist - und die Format-Dimension Breite nur durch Ein- der Mehrbahnigkeit beeinflussbar ist.

Nur gibt es bei Rollendruckern überhaupt kein Problem mit dem "Format" sprich der Etikettenlänge: Man druckt einfach die entsprechende Anzahl Zeilen (oder y-Vorschub) bis zum nächsten Etikett (ohne FF) - fertig.

Sind die Etiketten allerdings vorgestanzt, muss man die Lichtschranke des Druckers einschalten und dann pro Etikett mit FF drucken.

DSCHUCH 12. Apr 2013 21:50

AW: TPrinter, Papierformat
 
Der Drucker hat vorgestanzte Klebeetiketten. Ein Brother QL irgendwas. Das erste Etikett im Druckertreiber ist 62x29. Das 3. Papierformat (PickUp im Delphi PrinterSetupDialog) ist 62x40 (what ever) - und dieses ist eingelegt.

Ich will nur 3 Strings auf ein Etikett.

Daher:
Printer.PrinterIndex:=MyPrinterIndex;
BeginDoc;
TextOut...;
TextOut...;
TextOut...;
EndDoc;

klappt auch. Ich will dem Drucker nur die Etikettenlänge richtig mitgeben, da er sonst meckert "falsches Format", da das Standardformat im Treiber (also die erste Auswahlmöglichkeit) eine andere ist.
Ist das einmal eingestellt, klappt alles: er schneidet automatisch ab, macht den richtigen Vorschub etc.

MeierZwoo 12. Apr 2013 22:15

AW: TPrinter, Papierformat
 
Bei vorgestanzten Etiketten wird
a) das Format (incl. Leerraum) im Druckertreiber gesetzt
b) muß das gewählte Format auch im Treiber auch als gewünschtes Format gespeichert werden
c) muß dort angegeben werden, dass der Treiber das Etikett steuert
d) evtl. auch richtig auf Etiketten statt "Endlos" eingestellt werden (wg. der Aktivität der Lichtschranke - aber das scheint ja richtig eingestellt zu sein).


Dann wird nach einem Seitenvorschub (Printer.NewPage) und Druckende (Printer.EndDoc) dort ein Seitenvorschub entspr. des im Treiber gesetzten Formates ausgelöst (und nach Jobende ein evtl. Vorschub auf die Abrißkante ausgelöst).

Das setzen des Formates in Canvas ist völlig sinnlos und kontraproduktiv - weil, man kann schlecht z.B. A3 in Canvas setzen und der Drucker hat A4 Papier.

Printer.Canvas kennt auch gar kein Format - es ist immer in x und y nahezu unendlich. Format per Printer setzen meint immer das Format im Drucker setzen, nicht für die Printer.canvas-Fläche.

Wenn Du mehrere Etikettenformate haben willst. also neben dem "Standard"-Format (was immer das auch ist, denn es gibt auch bei Etiketten-Druckern kein "Standard", nur Default nach Treiber-Inst.), dann installier für jedes Format einen Treiber und schreib da jeweils das passende Format als Standard rein. Und Speichern!

Alternativ geht nur der RAW-Druck mit der Drucker-Command-Sprache - also Canvas ganz weglassen.

MeierZwoo 12. Apr 2013 22:23

AW: TPrinter, Papierformat
 
Nachtrag:

Es kann auch sein, daß der Drucker dem Treiber die Settings incl. eingelegtes Format mitteilt (s. Manual). Dann liegt der Fehler evtl. auch daran, daß die Etiketten im Drucker nicht eingemessen wurden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr.
Seite 1 von 2  1 2      

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