In afwachting van Gambas3 in het Ubuntu/Linux Mint softwarebeheer, kun je Gambas3 installeren via onderstaande PPA.
Open een konsole:
$ sudo add-apt-repository ppa:nemh/gambas3
$ sudo apt-get update
$ sudo apt-get install gambas3
In afwachting van Gambas3 in het Ubuntu/Linux Mint softwarebeheer, kun je Gambas3 installeren via onderstaande PPA.
Open een konsole:
$ sudo add-apt-repository ppa:nemh/gambas3
$ sudo apt-get update
$ sudo apt-get install gambas3
Eenvoudige tekst, html, of ingebouwd printen?
De online documentatie vermeldt onder Gambas versie 2.0 de uitleg van 3.0.
Gambas 2.21 bevat in ieder geval een “voorbeeld” toepassing: “Printing”, dat al bestaat sinds 2006.
Die bevat de componenten:
Nota:
Deze componenten gaan niet samen met de algemene gb.gui component.
Wel kan je voor de gb.gtk en gb.gtk.ext kiezen, vermoedelijk verschaffen ze ongeveer dezelfde functionaliteit met licht anders uitzicht (KDE = Qt, Gnome = GTK).
In Gambas3 bestaat een Printer (gb.qt4) object.
Voor Gambas2: gebruik het “Printer” object, dat ondermeer volgende eigenschappen heeft:
bv: Printer.Orientation=Printer.Landscape
Opbouwen van print in 4 stappen:
IF NOT Printer.Setup() ' print commands ELSE ' Message.Error("print setup canceled") ENDIF
Het aanroepen van Printer.Setup() is niet verplicht, maar wel nuttig voor de gebruiker.
*1)
Draw.Begin(Printer)
Draw.Rect(iStartX, iStartY, iBreedte, iHoogte)
Zet tekst of teken vormen, bv: Teken een rechthoek op locatie … met afmetingen …
Draw.Rect(800, 800, 80, 40) ‘ zet bovenaan links een klein rechthoekje op papier.
Hoewel 800, 800 doet vermoeden dat het evenver van de boven als van de zijkant staat is dat niet het geval!
Draw.End
*2)
Tot hier loopt het printen;
* Opmerking: “Application.Busy”
INC Application.Busy
DEC Application.Busy
Tekst wordt geprint op plaats x, y met:
Draw.Text(“Deze tekst wordt afgedrukt”, x, y)
Een paar andere eigenschappen kunnen ingesteld worden met/als:
Printer.Orientation = Printer.Landscape Printer.Size = "A4" Draw.Font.Size = 18 Draw.Font.Name = "Arial" Draw.Font.Underline = TRUE Draw.Font.Bold = TRUE
en dat kan voor het aanroepen van Printer.Setup() gebeuren; je zal de instelling daar weergegeven zien, bv als je Printer.Landscape hebt ingesteld en nadien Printer.Setup() aanroept, staat “Paper Format” op “Landscape” in de drop-down box in het “Setup Printer” venster.
Waarschijnlijk wil je een aantal (public of private) variabelen declareren, als:
' Gambas module file PUBLIC iFirstColStart AS Integer = 120 PUBLIC iSecondColStart AS Integer = 2000 PUBLIC iThirdColStart AS Integer = 5500 PUBLIC iCurRow AS Integer = 800 ' PUBLIC iRepeatColStart AS Integer = iSecondColStart PUBLIC iDimensionColStart AS Integer = 3000 PUBLIC iColorColStart AS Integer = 3500 PUBLIC iNumberColStart AS Integer = 4000 PUBLIC iDeliveredColStart AS Integer = 4500 ' PUBLIC iFontSizeMainData AS Integer = 28 PUBLIC iFontSizeMidData AS Integer = 24 PUBLIC iFontSizeDataTitle AS Integer = 14 PUBLIC iFontSizeSmallData AS Integer = 10 PUBLIC iFontTinyData AS Integer = 7 PUBLIC sFontMainData AS String = "Arial" ' PUBLIC fborder AS Float PUBLIC fTextHeight AS Float PUBLIC fTop AS Float
Om te vermijden dat teksten door elkaar lopen in de print kan je de data wat inkorten, eventueel proefondervindelijk, bv:
PUBLIC iMaxCusLen AS Integer = 12 PUBLIC iMaxOrdNameLen AS Integer = 20
Hier een stukje code waarin dat gebruikt wordt:
IF NOT Printer.Setup() ' some printer settings Printer.Size = "A4" Printer.Orientation = Printer.Landscape ' why this? INC Application.Busy ' Draw printer page Draw.Begin(Printer) border = Printer.Resolution Draw.Rect(100, 100, 10, 10) ' just to fix the corner ' Draw.Ellipse(3000, 3000, 1200, 190) iCurRow = 300 Draw.Text("Klant", iFirstColStart, iCurRow) Draw.Text("Ordernaam", iSecondColStart, iCurRow) Draw.Text("Ordernr", iThirdColStart, iCurRow) iCurRow = 500 ' Draw.Rect(iFirstColStart, iCurRow, 2200, 300) Draw.Font.Size = iFontSizeMainData Draw.Font.Name = sFontMainData Draw.Font.Bold = TRUE Draw.Text(thisOrder.ShortCusName(iMaxCusLen), iFirstColStart, iCurRow, 1200) Draw.Text(thisOrder.ShortOrdName(iMaxOrdNameLen), iSecondColStart, iCurRow) Draw.Rect(iThirdColStart - 100, iCurRow, 1200 - 100, 280) Draw.Text(thisOrder.sOrdCode, iThirdColStart, iCurRow) ' ... enz. Draw.End DEC Application.Busy ELSE Message.Error("Printing was canceled") ENDIF
Meer pagina’s printen?
PUBLIC SUB GoNextPage() Printer.NewPage() INC iPageNumber iCurRow = iRowStart END