[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