[Gambas-user] Using a printer documentation
Johny Provoost
johny.provoost at ...27...
Fri Mar 12 22:09:52 CET 2010
You could look in the help under gb.qt.ext and deeper down on Draw.
here's a piece of code as an example
PUBLIC SUB btVprint_Click()
DIM NaamMaand[13] AS String
DIM aantal AS Integer
DIM AantalInLijst AS Integer
DIM HoeveelRec AS Integer
DIM vYdim AS Integer
DIM Teller AS Integer
DIM TempDatum AS Date
DIM TempDatum2 AS Date
DIM AantalDagen AS Integer
DIM EersteDag AS Integer
DIM vCounter AS Integer
DIM pEersteDag AS Boolean
DIM vIndex AS Integer
DIM vYnaam AS Integer
NaamMaand[1] = ("Januari")
NaamMaand[2] = ("Februari")
NaamMaand[3] = ("Maart")
NaamMaand[4] = ("April")
NaamMaand[5] = ("Mei")
NaamMaand[6] = ("Juni")
NaamMaand[7] = ("Juli")
NaamMaand[8] = ("Augustus")
NaamMaand[9] = ("September")
NaamMaand[10] = ("Oktober")
NaamMaand[11] = ("November")
NaamMaand[12] = ("December")
IF PrintVerjaardagen.rbPrintLijst.Value = TRUE THEN
IF Printer.Setup() THEN RETURN
Draw.Begin(Printer) 'Initialize the draw
Printer.Orientation = 0
Printer.Size = "A4"
Draw.Font.Size = 18
Draw.Font.Name = "Arial"
Draw.Font.Underline = TRUE
Draw.Font.Bold = TRUE
Draw.Text(("Verjaardagen ") & PrintVerjaardagen.sbJaren.Value, 1800, 250)
Draw.Line(300, 450, 4900, 450)
Draw.Font.Underline = FALSE
Draw.Font.Bold = FALSE
vYdim = 550
FOR aantal = 1 TO 12
Draw.Font.Size = 14
Draw.Font.Name = "Arial"
HoeveelRec = VulMaandLijst(aantal)
IF (vYdim + 130 + (PrintVerjaardagen.lstMaandlijst.Count * 100)) > 6750 THEN
'New Page
Printer.NewPage
Draw.Font.Size = 18
Draw.Font.Name = "Arial"
Draw.Font.Underline = TRUE
Draw.Font.Bold = TRUE
Draw.Text(("Verjaardagen ") & PrintVerjaardagen.sbJaren.Value, 1800, 250)
Draw.Line(300, 450, 4900, 450)
Draw.Font.Underline = FALSE
Draw.Font.Bold = FALSE
vYdim = 550
ENDIF
Draw.Text(NaamMaand[aantal], 350, vYdim)
vYdim = vYdim + 130
Draw.Font.Size = 10
FOR AantalInLijst = 0 TO PrintVerjaardagen.lstMaandlijst.Count - 1
PrintVerjaardagen.lstMaandlijst.Index = AantalInLijst
Draw.Text(PrintVerjaardagen.lstMaandlijst.Text, 350, vYdim)
vYdim = vYdim + 100
NEXT
vYdim = vYdim + 100
NEXT
Draw.End
PrintVerjaardagen.Close
ELSE
IF Printer.Setup() THEN RETURN
pEersteDag = TRUE
Draw.Begin(Printer) 'Initialize the draw
Printer.Orientation = 1
Printer.Size = "A4"
FOR aantal = 1 TO 12
TempDatum = Date(PrintVerjaardagen.sbJaren.Value, aantal, 1)
IF aantal <> 12 THEN
TempDatum2 = Date(PrintVerjaardagen.sbJaren.Value, aantal + 1, 1)
AantalDagen = (DateDiff(TempDatum, TempDatum2, gb.Day))
ELSE
AantalDagen = 31
ENDIF
EersteDag = WeekDay(TempDatum)
HoeveelRec = VulMaandLijst(aantal)
vIndex = 0
PrintVerjaardagen.lstMaandlijst.Index = vIndex
Draw.Font.Size = 18
Draw.Font.Name = "Arial"
Draw.Font.Bold = TRUE
Draw.Font.Underline = TRUE
Draw.Rect(250, 750, 6435, 350)
Draw.Text(NaamMaand[aantal] & " - " & PrintVerjaardagen.sbJaren.Value, 3000, 800)
Draw.Font.Underline = FALSE
Draw.Font.Size = 12
Draw.Text(("Maandag"), 380, 990)
Draw.Text(("Dinsdag"), 1310, 990)
Draw.Text(("Woensdag"), 2240, 990)
Draw.Text(("Donderdag"), 3170, 990)
Draw.Text(("Vrijdag"), 4100, 990)
Draw.Text(("Zaterdag"), 5030, 990)
Draw.Text(("Zondag"), 5960, 990)
'first row
Draw.Rect(250, 1100, 920, 600) 'Maandag
Draw.Rect(1170, 1100, 920, 600) 'Dinsdag
Draw.Rect(2090, 1100, 920, 600) 'Woensdag
Draw.Rect(3010, 1100, 920, 600) 'Donderdag
Draw.Rect(3930, 1100, 920, 600) 'Vrijdag
Draw.Rect(4850, 1100, 920, 600) 'Zaterdag
Draw.Rect(5770, 1100, 920, 600) 'Zondag
'second row
FOR Teller = 250 TO 5770 STEP 920
Draw.Rect(Teller, 1700, 920, 600)
NEXT
'third row
FOR Teller = 250 TO 5770 STEP 920
Draw.Rect(Teller, 2300, 920, 600)
NEXT
'fourth row
FOR Teller = 250 TO 5770 STEP 920
Draw.Rect(Teller, 2900, 920, 600)
NEXT
'fift row
FOR Teller = 250 TO 5770 STEP 920
Draw.Rect(Teller, 3500, 920, 600)
NEXT
'sixt row
Draw.Rect(250, 4100, 920, 600)
Draw.Rect(1170, 4100, 920, 600)
'print the days in numbers and birthdays
Draw.Font.Size = 14
vYdim = 1150
FOR vCounter = 1 TO AantalDagen
FOR Teller = 1 TO 7
IF EersteDag = 0 THEN
Teller = 7
EersteDag = 1
ELSE
IF pEersteDag = TRUE THEN
Teller = EersteDag
pEersteDag = FALSE
ENDIF
ENDIF
Draw.Text(vCounter, 300 + ((Teller - 1) * 930), vYdim)
vYnaam = 120
IF Val(Left(PrintVerjaardagen.lstMaandlijst.Text, 2)) = vCounter THEN
Draw.Font.Size = 9
Draw.Font.Bold = FALSE
WHILE Val(Left(PrintVerjaardagen.lstMaandlijst.Text, 2)) = vCounter
Draw.Text(Right(PrintVerjaardagen.lstMaandlijst.Text, Len(PrintVerjaardagen.lstMaandlijst.Text) - 13), 280 + ((Teller - 1) * 930), vYdim + vYnaam)
vYnaam = vYnaam + 80
vIndex = vIndex + 1
PrintVerjaardagen.lstMaandlijst.Index = vIndex
WEND
Draw.Font.Size = 14
Draw.Font.Bold = TRUE
ENDIF
IF vCounter = AantalDagen THEN Teller = 7
IF Teller <> 7 THEN vCounter = vCounter + 1
NEXT
vYdim = vYdim + 600
NEXT
IF aantal <> 12 THEN
Printer.NewPage
ENDIF
pEersteDag = TRUE
NEXT
Draw.End
PrintVerjaardagen.Close
ENDIF
END
*Vriendelijke Groeten*
*Johny Provoost*
*mailto: johny.provoost at ...27... <mailto:johny.provoost at ...27...>*
*mailto: johny.provoost at ...626... <mailto:johny.provoost at ...626...>*
*Website:* *http://www.johnyprovoost.net* <http://www.johnyprovoost.net/>
Keith Clark schreef:
> Could someone forward me a few links about how to use a printer from
> within Gambas? I need to know how to "Print" to a system default
> printer.
>
> Thanks
>
> Keith
>
>
>
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>
More information about the User
mailing list