Hallole,
ich habe ein Problem was das Ausdrucken angeht.
Früher gab es die Befehle
100 LOCATE 18, 1: PRINT "Benennung : "; : PRINT USING "####.#"; wertderbenennung(i)
um die Bildschirmausgaben zu machen.
was den Ausdruck am Drucker angeht konnte das man mit dem:
LPRINT und dem LOCATE Befehl machen wo was in welcher Spalte und Zeile gedruckt wird.
Wie bekomme ich das nun mit Purebasic hin?
Ich will im Prinzip wissen wie ich verschiedene Variablen an verschiedenen Stellen ausdrucken kann (A4 Fornat)
Die Hilfe ist da sehr bescheiden was das Thema abgeht.
Danke für jede Hilfe.
Michael
Ausdrucken von Ergebnissen an bestimmten Stellen
Ausdrucken von Ergebnissen an bestimmten Stellen
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Ausdrucken von Ergebnissen an bestimmten Stellen
Die 2DDrawing-Befehle werden hier genutzt. Lediglich statt StartDrawing() kommt StartPrinting() usw.
Naja, ganz so einfach ist es nicht, aber das kann man nicht in 3-4 Sätzen erklären.
Naja, ganz so einfach ist es nicht, aber das kann man nicht in 3-4 Sätzen erklären.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Ausdrucken von Ergebnissen an bestimmten Stellen
Es kommt StartPrinting und danach StartDrawing zum Einsatz. StartPrinting um den Druckvorgang ueberhaupt zu beginnen, und StartDrawing um etwas auf das Papier zu bringen. Man fragt vor dem Drucken den Drucker mit DefaultPrinter ab, oder waehlt einen ueber PrintRequester.
Zum testen habe ich mir einen virtuellen Drucker installiert (PDF24), hilft Papier zu sparen 
Code: Alles auswählen
If DefaultPrinter()
Font = LoadFont(#PB_Any, "Arial", 35)
StartPrinting("Jobnameoderso")
StartDrawing(PrinterOutput())
DrawingFont(FontID(Font))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10, 10, "Hallo Papier!", 0)
StopDrawing()
StopPrinting()
FreeFont(Font)
EndIf

Re: Ausdrucken von Ergebnissen an bestimmten Stellen
Danke edel,
genauso habe ich es mir vorgestellt.
Auch der Tip mit PDF24 war gut.
Tschüssle
Michael
genauso habe ich es mir vorgestellt.
Auch der Tip mit PDF24 war gut.
Tschüssle
Michael
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
-
- Beiträge: 41
- Registriert: 30.04.2012 16:38
Re: Ausdrucken von Ergebnissen an bestimmten Stellen
Zum Thema "drucken" habe ich mir mal eine Prozedur geschrieben, mit der man Text oder auch Tabellen ausdrucken kann, mit automatischem Zeilenvorschub und Seitenumbruch:
Und hier ein Testprogramm:
Vielleicht hilft's.
Nachtrag:
Ich wurde hierzu inspiriert von http://forums.purebasic.com/german/view ... 83052349f4. Ehre wem Ehre gebührt!
Code: Alles auswählen
;==============================================================================
; Prozedur zum Drucken von Text
; Drucker.pbi
; Erstellt am 29.04.2013
; Letzte Bearbeitung am 28.09.13
;==============================================================================
EnableExplicit
Global Randoben = 200, Printer_y
Procedure PrintText(Text.s, FontName.s = "Courier New", Hoehe = 10, Stil = 0, Farbe = #Black)
; Eine Textzeile mit Zeilenvorschub drucken. Parameter:
; - Text = zu druckender String
; - FontName = Zeichensatz
; - Hoehe = Schrifthoehe in Punkten
; - Stil = Flags in LoadFont()
; - Farbe = Textfarbe
; Courier New hat eine feste Zeichenbreite, so dass mit RSet oder LSet für die Teilstrings
; auch Tabellen gedruckt werden können.
; Die Prozedur muss muss nach StartPrinting() und vor StopPrinting() aufgerufen werden.
; Vor dem ersten Aufruf muss Printer_y = Randoben gesetzt werden.
Protected x = 200, Randunten = 200, FontNr, TextHeight
; Font laden, Höhe an Druckerauflösung anpassen:
FontNr = LoadFont(#PB_Any, FontName, PrinterPageHeight() * Hoehe / 1024, Stil)
; Drucken:
If StartDrawing(PrinterOutput())
DrawingFont(FontID(FontNr))
DrawingMode(#PB_2DDrawing_Transparent)
TextHeight = TextHeight(Space(1))
DrawText(x, Printer_y, Text, Farbe)
DrawingMode(#PB_2DDrawing_Default)
If Printer_y > PrinterPageHeight() - TextHeight - Randunten
NewPrinterPage()
Printer_y = Randoben
Else
Printer_y = Printer_y + TextHeight
EndIf
StopDrawing()
EndIf
; Font wieder freigeben:
FreeFont(FontNr)
EndProcedure
Code: Alles auswählen
;==============================================================================
; DruckerTest.pb
; Erstellt am 29.04.2013
; Letzte Bearbeitung am 22.09.2013
;==============================================================================
EnableExplicit
IncludeFile "Drucker.pbi"
Define.s s
Define i
Define.d x, y, z
PrintRequester()
If StartPrinting("PBTestDruck")
Printer_y = Randoben
For i = 1 To 100
PrintText(Str(i) + " abcdefghijklmnopqrstuvwxyz ABCDEFGHUJKLMNOPQRSTUVWXYZ 01234567890")
Next
PrintText("")
PrintText("Jetzt kommt eine Tabelle:", "Arial", 12, #PB_Font_Bold, #Red)
PrintText("")
PrintText(RSet("x", 5) + RSet("Sqr(x)", 10) + RSet("Pow(x, 2)", 10))
PrintText("-------------------------")
For i = 0 To 10
x = i
y = Sqr(x)
z = Pow(x, 2)
PrintText(RSet(StrD(x), 5) + RSet(StrD(y, 5), 10) + RSet(StrD(z), 10))
Next
StopPrinting()
EndIf
End
Nachtrag:
Ich wurde hierzu inspiriert von http://forums.purebasic.com/german/view ... 83052349f4. Ehre wem Ehre gebührt!
Zuletzt geändert von Lothar Schirm am 29.09.2013 11:58, insgesamt 2-mal geändert.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Ausdrucken von Ergebnissen an bestimmten Stellen
@Lothar Schirm
Du solltest in der Procedure, den mit #PB_Any geladenen Font auch wieder freigeben, sonsten wird für jede
Zeile ein neues Fontobjekt geladen, was den Speicher dann doch irgendwann mal belasten sollte
Oder FontNr static deklarieren und nur bei 0 (also beim ersten Aufruf) Font laden.
Du solltest in der Procedure, den mit #PB_Any geladenen Font auch wieder freigeben, sonsten wird für jede
Zeile ein neues Fontobjekt geladen, was den Speicher dann doch irgendwann mal belasten sollte

Oder FontNr static deklarieren und nur bei 0 (also beim ersten Aufruf) Font laden.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 41
- Registriert: 30.04.2012 16:38
Re: Ausdrucken von Ergebnissen an bestimmten Stellen
ts-soft, vielen Dank für den Hinweis! Ich habe es oben in den Code eingefügt.