möchte eine normale Liste mit mehren Angaben pro Zeile drucken.
Für die Übersichtlichkeit wollte ich die lfd. Nr. und das Feldtrennzeichen farblich abheben.
Deshalb kann ich den Zeilenstring nicht vorher komplett zusammen bauen, um ihn an den Drucker zu senden, weil ich ja innerhalb einer Zeile mehrmals die Farbe wechseln muß.
Ich verwende zum Zeichen DrawVectorText() - in der Hilfe u.a. dazu:
Code: Alles auswählen
Zeichnet den angegebenen Text an der aktuellen Position des Pfad-Cursors. Der Cursor wird an das Ende des gezeichneten Textes verschoben. Der zu verwendende Zeichensatz kann mittels VectorFont() festgelegt werden.
Aber das Zeichnen beginnt bei jeden Aufruf am Startpunkt der Zeile. Irgendwo ist mein Denkfehler.
Hab hier einen lauffähigen Demo-Code. Im Druckerdialog einfach "In Datei drucken" auswählen und die PDF-Option lassen. Dann kann man das Ergebnis schön Papier sparend in der PDF-Datei "Ausgabe.pdf" betrachten. Zumindest ist bei mir mit Mint Mate so.
Falls es Linux-Spezifisch - dann bitte nach Linux verschieben - Vielen Dank
Code: Alles auswählen
;farbdruck mit DrawVectorText()
Define dy.i, l.i,n.s
If PrintRequester() ;wenn drucker gewählt // hier natürlich als pdf "in Datei drucken" // Editiert - Parameter war falsch
If StartPrinting("Test-Druck") ;wenn drucker erfolgreich angesteuert werden kann
LoadFont(1, "Courier New", 6);zeichensatz feslegen
StartVectorDrawing(PrinterVectorOutput(#PB_Unit_Point)) ;grafikausgabe zum drucker/datei starten
;hier folgen die Zeichenoperationen... (in hilfe unter vector drawing schauen)
VectorFont(FontID(1)) ;geladenen schriftfont aktivieren
dy = 10 ;startwert für druck zeilenposition der neuen seite//wird in der schleife dann zeile für zeile erhöht
For l = 1 To 10 ;10 zeilen
dy + 13 ;zeilenvorschub
n = RSet(Str(l+1),3," ") + " " ;nummern-string zusamenbauen
MovePathCursor(5, dy) ;druckposition zum schreiben der folgenden zeile
VectorSourceColor(RGBA(2, 0, 219, 255)) ;blau
DrawVectorText(n) ;laufende nummer
VectorSourceColor(RGBA(0, 0, 0, 255)) ;schwarz
DrawVectorText("Irgend ein Text") ;text1 // laut hilfe sollte der cursor ja am ende des vorherigen DrawVectorText() sein..
VectorSourceColor(RGBA(237, 0, 0, 255)) ;rot
DrawVectorText("|") ;feldtrenner
VectorSourceColor(RGBA(0, 0, 0, 255)) ;schwarz
DrawVectorText("Noch ein weiterer Text") ;text2 //
Next l
StopVectorDrawing() ;grafikausgabe beenden
StopPrinting() ;druckoperation stoppen und zum drucker/datei senden
EndIf ;ansteuerung erfolgreich
EndIf ;druckerauswahl
End