Hallo,
in VB setze ich diesen Befehl ein:
Printer.PaintPicture flexgrid.Picture, 0, 0
um ein Listviewgadget mit aktivierten Linien komplett auszudrucken.
Genau das möchte ich auch in PB realisieren, um eine Schüleranwesendheitsliste mit dem Liniengrid in Querformat auszudrucken.
Im Forum wird hingewiesen, man könnte erst in ein Image schreiben und das Image ausdrucken. Der Vorteil wäre bei dieser Methode, man hätte hiermit auch eine Druckvorschau gestaltet. Nun gut.
Ich bekomme es hin, das Listviewgadget zellenweise auszulesen, aber da habe ich nur die Werte und von Zeilenbreite, -höhe und Linien keine Spur.
Gibt es ein Beispiel?
Dysti
Drucken eines Listviewgadgets
Du brauchst dafür kein Image zu bemühen.
Du "malst " quasi direkt auf dem Drucker. Ein Image
kann unter Umständen Größen annehmen die unbe-
haglich werden.
Vorher ein startprinting()
Drucker auswählen.
Danach "malst" Du die Texte und danach die Linien drum
rum (oder andersrum).
als Abschluß ein stopprinting()
Die Größe der Buchstaben ermittelst Du über die Blattgröße
des Druckers.
Hab da 'ne Prozedur mal zum Drucken mit drawtext()
benutzt, in der die FontHöhe auf Grund der Seitenhöhe
gesetzt wird. Kann man sicher noch schöner machen,
aber dafür hatte es gereicht.
Ansonsten wühl mal im CodeArchiv such in Abteilung Printer.
Du "malst " quasi direkt auf dem Drucker. Ein Image
kann unter Umständen Größen annehmen die unbe-
haglich werden.
Vorher ein startprinting()
Drucker auswählen.
Danach "malst" Du die Texte und danach die Linien drum
rum (oder andersrum).
als Abschluß ein stopprinting()
Die Größe der Buchstaben ermittelst Du über die Blattgröße
des Druckers.
Hab da 'ne Prozedur mal zum Drucken mit drawtext()
benutzt, in der die FontHöhe auf Grund der Seitenhöhe
gesetzt wird. Kann man sicher noch schöner machen,
aber dafür hatte es gereicht.
Code: Alles auswählen
;PB3.94
Procedure Do_Print(name.s,t.s,FontID)
If PrintRequester()
If StartPrinting(name.s)
fontheight.f=0.30 * (PrinterPageHeight()/29.7)
Font=LoadFont(#FontPrint,"courier new",fontheight,#PB_Font_HighQuality|#PB_Font_Bold )
If StartDrawing(PrinterOutput())
DrawingFont(Font)
For i=1 To CountString(t.s, #CRLF$)
out.s=StringField(t.s,i,#CRLF$)
out.s=RemoveString(out,#CRLF$)
out.s=RemoveString(out,#LF$)
out.s=RemoveString(out,#CR$)
DrawText(out.s)
Locate(0,i*Fontheight/7*10)
Next i
StopDrawing()
EndIf
StopPrinting()
Bearbeitet=1
Else
Bearbeitet=0
EndIf
Else
Bearbeitet=0
EndIf
EndProcedure
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Fraiser hat mal eine UserLib geschrieben, die das Drucken ungemein vereinfacht:
http://www.purebasic.fr/german/viewtopic.php?t=7283
Damit kann man z. B. sehr elegant Tabellen schmieden, wobei Zahlen oder anderes unabhängig vom Font schön bündig untereinander stehen können.
Gruß Karl
http://www.purebasic.fr/german/viewtopic.php?t=7283
Damit kann man z. B. sehr elegant Tabellen schmieden, wobei Zahlen oder anderes unabhängig vom Font schön bündig untereinander stehen können.
Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
PB 5.X
klar .. das t.s beinhaltete einen Text komplett mit Zeilenumbruch und so.
Das wurde dann auch komplett mit Zeilenumbruch mit dieser
Prozedur ausgedruckt. Da mein DruckFont auf Courier (Monospace)
hatte ich dann auch 'n gut ausgeglichenes Druckbild. Ich hatte allerdings
keine Tabelleninhalte sondern eher ne Art RechnungsText ausdrucken müssen.
Für Deinen Zweck musst Du aber wahrscheinlich pro auszudruckenden
Wert die Position berechnen (hier die Abhängigkeit der Fontgröße zur
Blattgröße beachten) und dann per locate() bzw in PB4 drawtext() den
Text positionieren.
Wenn Deine Wert-Ausgabe und Linienmalerei durch ein Startprinting()-
-Stopprinting() "umzingelt" wird, ist auch das druckbar. Der Ausdruck
wird ja erst erstellt nach dem StopPrinting()
Das wurde dann auch komplett mit Zeilenumbruch mit dieser
Prozedur ausgedruckt. Da mein DruckFont auf Courier (Monospace)
hatte ich dann auch 'n gut ausgeglichenes Druckbild. Ich hatte allerdings
keine Tabelleninhalte sondern eher ne Art RechnungsText ausdrucken müssen.
Für Deinen Zweck musst Du aber wahrscheinlich pro auszudruckenden
Wert die Position berechnen (hier die Abhängigkeit der Fontgröße zur
Blattgröße beachten) und dann per locate() bzw in PB4 drawtext() den
Text positionieren.
Wenn Deine Wert-Ausgabe und Linienmalerei durch ein Startprinting()-
-Stopprinting() "umzingelt" wird, ist auch das druckbar. Der Ausdruck
wird ja erst erstellt nach dem StopPrinting()
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.