[Gambas-user] Example for printing on printer
Eilert
eilert-sprachen at ...221...
Mon Jun 14 16:04:24 CEST 2004
Hello Hans-Martin,
look at this code. It's not ready, you will have to convert the string
into ASCII before being able to print öäü etc. (with convert$, see my
discussion with Benoit).
And it's from a typewriting app I am writing currently, so don't be
surprised about the specialties.... :-)
Grüße
Rolf
SUB DruckenText()
DIM t$ AS String
DIM x$ AS String
DIM i AS Integer
DIM meldung AS Integer
IF NOT angefangen THEN RETURN
randOben = 300
randLinks = 300
draw.Begin(printer)
IF gestoppt THEN 'Kopfzeile mit den Angaben drucken
draw.font.Name = "Courier"
draw.font.Size = 11
draw.font.Bold = TRUE
draw.Text(DruckenKopf$(), randLinks, randOben/2)
draw.Line(randLinks, randOben, printer.Width-(randLinks*2),randOben)
END IF
draw.Font.Name = "Courier"
draw.Font.Size = 12
draw.Font.Bold = FALSE
druckZhoehe = draw.TextHeight("gO")
zeilenBreite = 65
t$ = TextArea1.Text
druckZeile = 0
FOR i = 1 TO Len(t$)
SELECT CASE Asc(Mid$(t$,i,1))
CASE 10
DruckenAbsatz(x$)
x$=""
CASE ELSE
x$ = x$ & Mid$(t$,i,1)
END SELECT
NEXT
IF Len(x$) > 0 THEN
DruckenAbsatz(x$)
END IF
draw.End
END
PRIVATE SUB DruckenAbsatz(text$ AS String)
DIM x$ AS String
DIM po AS Integer
DIM x AS Integer
IF Len(text$) <= 67 THEN
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(text$, randLinks, randOben + (druckZeile * DruckZhoehe) )
ELSE
DO
x$ = Left$(text$, 67) 'erstmal abschneiden
IF Len(text$) <= 67 THEN 'ein Rest ist geblieben:
'Rest so drucken:
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(x$, randLinks, randOben + (druckZeile * DruckZhoehe) )
'Absatz zu Ende
RETURN
END IF
IF Mid$(text$, 68, 1) = " " THEN 'ein Leerzeichen folgt:
'gleich drucken
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(x$, randLinks, randOben + (druckZeile * DruckZhoehe) )
'vorn abschneiden
text$ = Right$(text$, -67)
'nÀchsten Wortanfang suchen
DO
IF Left$(text$, 1) = " " THEN
text$ = Right$(text$, -1)
END IF
LOOP UNTIL Left$(text$, 1) <> " "
ELSE IF Right$(x$, 1)= " " THEN 'ein Leerzeichen ist am Ende:
'gleich drucken
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(x$, randLinks, randOben + (druckZeile * DruckZhoehe)
)
'vorn abschneiden
text$ = Right$(text$, -67)
'nÀchsten Wortanfang suchen
DO
IF Left$(text$, 1) = " " THEN
text$ = Right$(text$, -1)
END IF
LOOP UNTIL Left$(text$, 1) <> " "
ELSE 'kein Leerzeichen, Wort:
'zurÃŒckgehen bis Leerzeichen
po=67
DO WHILE po > 0
DEC po
LOOP UNTIL Mid$(text$, po, 1) = " "
IF po=0 THEN 'kein Leerzeichen gefunden:
'gleich drucken
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(x$, randLinks, randOben + (druckZeile * DruckZhoehe) )
'vorn abschneiden
text$ = Right$(text$, -67)
ELSE 'Leerzeichen gefunden:
'bis dahin abschneiden
x$=Left$(text$, po)
'das StÃŒck drucken
INC druckZeile
DruckenZeilennummer(druckZeile)
draw.Text(x$, randLinks, randOben + (druckZeile * DruckZhoehe) )
'das StÃŒck abschneiden
text$ = Mid$(text$, po+1)
END IF
END IF
LOOP
END IF
END
SUB DruckenZeilennummer(zeile AS Integer)
draw.font.Size = 10
draw.Text(CStr(druckZeile), randLinks/2, randOben + (druckZeile *
DruckZhoehe) + 5 )
draw.font.Size = 12
END
FUNCTION DruckenKopf$() AS String
DIM t$ AS String
INC KopieNr
IF KopieNr > 1 THEN
t$="Kopie " & Str$(KopieNr) & " - "
END IF
t$ = t$ & Tippername$ & " ["
t$ = t$ & CStr(Now) & "] "
RETURN t$
END
More information about the User
mailing list