Lade...
 

PutLine

PutLine

PutLine

Stack
Stack Position Beschreibung
Stack(In) Top ]
  Top-1 Parameter n
  . . . . . .
  Top-n Parameter 1
  Top-n-1 [
Stack(Out)   -

PutLine bringt die über die Parameter gesteuerte Information als Zeile auf das im Vektor enthaltene Dokument.
Es wird also eine Zeile zum Drucken vorgemerkt, die nach Fertigstellung mit PrintDocument ausgedruckt wird (siehe Beispiel unten).

Folgende Parameter können übergeben werden:

Parameter
  Parameter Beschreibung Standardwert
1 document ein mit Document erzeugtes Dokument obligatorisch
2 x Spalte Default x = 0
3 y Zeile Default: die aktuelle Zeile
4 RIGHT_ADJUST x definiert die rechte Randposition  
5 LF Zeilenwechsel der Text kommt noch auf die aktuelle Zeile
6 NL Zeilenwechsel wie LF, löst jedoch nie Blattwechsel aus
7 FF Blattwechsel der Text kommt noch auf die aktuelle Seite
8 COLOR col Farbe Default col = BLACK
9 FONT f Font Default f = 2
10 FLAG flg Flags für ViewExport Default flg = 0
11 HEADER eine Überschriftzeile  
12 "... %s ..." Formatstring für sprintf  
13 CLIP Clipping für Windowobjekte Kein Clipping
14 COLUMN n Der rechte Rand wird auf den Anfang von Spalte n zurückgesetzt (angefangen bei Spalte 0) Default = 0, normales verhalten am Seitenrand
15 auszugebende Information beliebiger, als String darstellbarer Wert  
16 einzufügendes Windowobjekt    
  • Das Document-Objekt - Parameter 1 in der oben aufgeführten Tabelle - muss in jedem Fall übergeben werden.
  • Die Koordinaten x und y (Parameter 2 und 3) werden der üblichen Konvention folgend in der Reihenfolge x, y angegeben. Gibt es nur einen Positionswert, so ist dies die x-Koordinate (Spalte) und der Text wird in die aktuelle Zeile eingefügt. Wenn keine Einheit angeben wird (als CX_VALUE-Objekte) werden diese Koordinaten als Zeichenpositionen interpretiert, gemäß der CPI/LPI-Angabe des Dokuments  (siehe SetParameter). Theoretisch können Koordinaten und als CX_AMOUNT oder CX_VALUE-Objekte auch als zu druckende Daten (Paremeter 15) interpretiert werden. Die Priorität liegt aber bei den Koordinaten. D.h. erst wenn die Koordinaten besetzt sind (durch Integer oder von CX_AMOUNT-abgeleitete Objekte) wird das nächste Objekt als zu druckende Information angesehen. Soll z.B. ein CX_VALUE-Objekt ausgegeben werden ohne dass beide Koordinaten gesetzt sind, muss der auszugebende Wert vorher in einen String konvertiert werden.
  • Parameter 4 bis 14 sind Formatattribute und steuern, wo und wie die Textinformation auf der Druckseite ausgeben wird. Alle Attribute sind optional; sie können in beliebiger Reihenfolge angegeben werden.
  • Sind weder x noch y angegeben, so wird der Text an das zuvor ausgegebene Textelement gekettet. So können längere Texte ins Dokument eingefügt werden, ohne dass man zuvor eine extrem lange Zeichenkette bilden muss.
  • Attribut LF erhöht die aktuelle Zeilennummer nachdem der Text eingefügt wurde. Das gleiche gilt für Überschriften - gekennzeichnet durch Attribut HEADER - wobei die aktuelle Überschriftzeile unabhängig von der aktuellen Textzeile ist. Die Höhe der Zeile richtet sich nach dem aktuellen Font.
  • LF, NL und FF mehrfach angegeben lösen mehrfachen Seiten- bzw. Blattvorschub aus. Will man vermeiden, dass logisch zusammengehörende Zeilen durch einen Blattwechsel getrennt werden, benutze man NL statt LF.
  • Mit FLAG können Flags an die Konvertierungsfunktion eines Objektes (ViewExport) übergeben werden.
  • Ist der zwöflte Parameter angegeben, so wird der String als Input für sprintf weiter modifiziert.
  • Nach den Elementen der Formatliste - also weiter in Richtung Stack-Top liegend - beschreiben wir, welche Information im Dokument erscheinen soll. Das kann einfach eine Zeichenkette, aber auch ein beliebiges, mit Funktion ViewExport ein einen String transformierbares, Objekt sein. Flags steuern die Ausgabekonvertierung.
  • Innerhalb einer Zeichenkette auftretende \n-Zeichen lösen Zeilenwechsel aus; die nachfolgende Teilzeichenkette steht in der Folgezeile ab der gleichen x-Position, wobei sich der interne Zeilenzähler erhöht (wie NL). Symbol &PAGE in einer Zeichenkette wird durch die aktuelle Seitenzahl ersetzt. Über durch \n getrennte Zeilen können zusammengehörige Zeilen  auf einer Seite gehalten werden.
  • Mit der Formatangabe COLUMN, die nur für Widgets in Listenform Sinn ergibt, kann das Dokument so formatiert werden, dass die Position der angegebenen Spalte den rechten Rand des Dokuments beschreibt. Alles was rechts von dieser Position steht, wird demnach erst auf der Randseite mit angedruckt. Eine COLUMN-Anweisung gilt immer für das gesamte Dokument. Werden mehrere Listen mit COLUMN-Anweisung gedruckt gilt die letzte.
  • Neben der Textausgabe - angedeutet durch Zeile 15 der Tabelle - gibt es eine weitere Möglichkeit: Daten eines Windowobjektes werden in das Dokument übertragen (Zeile 16). Anweisung Widget bringt ein Windowobjekt auf den Stack. Prinzipiell werden immer die gesamten Inhalte der Fensterelemente gedruckt, nicht die gerade angezeigten. Im Falle einer Objektbox werden bspw. alle Zeilen übernommen, unabhängig davon, welcher Ausschnitt im Moment gerade sichtbar ist. Bei einem Objekt mit Children - Window, Header usw. - werden die Childobjekte entsprechend ihrer relativen Positionen im Parentobjekt in das Dokument eingefügt. Childwidgets mit Flag NO_PRINT werden nicht in die Druckliste übernommen. Für eine Objektbox können einzelne Spalten mit Flag NO_PRINT in der Formatangabe ausgeblendet werden. Auf das Widget, welches direkt mit PutLine an das Dokument übergeben wird, hat NO_PRINT keine Auswirkung. Listen werden gemäß der Formatanweisungen formatiert und für den Druck optimiert, so dass der Ausdruck von der Bildschirmdarstellung abweichen kann.
  • Standardmäßig werden Druckelemente, die nicht vollständig auf eine Seite passen auf einer Randseite wiederholt. Mit dem Flag CLIP kann dieses Verhalten unterbunden werden. CLIP in PutLine überschreibt das CLIP-Flag in der Widget-Definition. Listen weichen leicht von diesem Verhalten ab: Passt eine Spalte nur teilweise auf eine Seite wird ohne CLIP-Flag die ganze Spalte auf der nächsten Seite gedruckt. Mit CLIP-Flag wird diese Spalte am Seitenrand abgeschnitten und nicht wiederholt.

Die allgemeinen Einstellungen für das Dokument, wie Seitenränder, CPI, LPI, etc. können über SetParameter gesetzt werden.

Beispiel:

Feste Zeilenvorgabe (hier dritter Parameter):

Var(printDoc)

SetPrinter ifnot return

Document(60, 5) -> printDoc

// Row 1 (here the third parameter)

[ printDoc, 1, 1, "Wareneingang:" ] PutLine

[ printDoc, 6, 1, receivingItem Copy(UniqueID()) ] PutLine

 

// Row 2

[ printDoc, 1, 2, "Teil:" ] PutLine

[ printDoc, 6, 2, item Copy(UniqueID()) ] PutLine

[ printDoc Dup Page 1 + String, "Seite" Swap + , FF ] PutLine

printDoc PrintDocument

 

Dynamische Zeilenvorgabe (LF = "Line Feed"-Zeilenumbruch wird am Ende der Zeile ausgeführt):

Var(printDoc)

SetPrinter ifnot return

Document(60, 5) -> printDoc

// Row 1 (third parameter)

[ printDoc, 1, "Wareneingang:" ] PutLine

[ printDoc, 6, LF, receivingItem Copy(UniqueID()) ] PutLine

 

// Row 2

[ printDoc, 1, "Teil:" ] PutLine

[ printDoc, 6, LF, item Copy(UniqueID()) ] PutLine

[ printDoc Dup Page 1 + String, "Seite" Swap + , FF ] PutLine

printDoc PrintDocument

 

Die Zeilenangabe kann entweder fest vorgegeben werden,