Gambas2 update(s)

(zie ook Gambas3 updates)

Het is een geruststelling voor wie afhankelijk is van Gambas 2 programma’s; zelfs in een recente distributie als openSUSE Leap 24.3, 15.1,.. komen nog altijd (kleine) updates binnen voor Gambas2: (-)* werkt niet?

2021-06-03
OpenSUSE 15.2
gambas2-2.24.0-lp152.61.8
Foutmelding op omniORB 4.1.4-lp152.6.1
requires libomniDynamic…
… Enkel de rest geïnstalleerd.

2021-04-12
OpenSUSE 15.2
– gambas2 en KDE3 update.

2021-03-11
OpenSUSE 15.1 is EOL, dus datzelfde systeem geüpgrade naar OpenSUSE 15.2, en dan ook de KDE3 repo’s aangepast naar 15.2; er staat dan een update klaar naar een lager sub-nummer:
KDE:KDE3 | gambas2 | 2.24.0-lp151.61.8 | 2.24.0-lp152.61.2 | x86_64
Gaat ook samen met KDE3:
KDE:KDE3 | kdebase3 | 3.5.10.1-lp151.359.4 | 3.5.10.1-lp152.359.1 | x86_64

Bij de updates komt er een foutmelding op omniORB;
omniORB | 4.1.4-lp151.5.1 | 4.1.4-lp152.5.1

2021-02-09
(..)

2021-01-22
OpenSUSE 15.1: gambas 2.24.0-lp151.61.5
Foutmelding op:
gambas2-gb-corba-2.24.0-lp151.61.5.x86_64 requires libomniDynamic4.so.1()(64bit), but this requirement cannot be provided
Kan afgevinkt worden, dan installeert de rest wel..
Nadien met zypper up komt de melding:
/sbin/ldconfig: /usr/lib64/libffi.so.4 is not a symbolic link

2021-01-12
OpenSUSE 15.1: gambas 2.24.0-lp151.61.3
44 bestanden
(waarvan omniORB 4.1.4-lp151.5.1 die hapert met desktop update – lukt wel met zypper – rest gaat wel door)

2021-01-06
OpenSUSE 15.1: gambas 2.24.0-lp151.61.2
50 tal bestanden over gambas en kde
(ook weer met KDE: bv kdebase3-runtime 3.5.10.1-lp151.3)

2020-11-30
OpenSUSE 15.1: gambas 2.24.0-lp151.57.49
Zijnde 43 gambas2 + 6 kde totaal 49 bestanden.
(ook weer met KDE: bv kdebase3-runtime 3.5.10.1-lp151.358.5)

2020-11-17 (ongeveer)
OpenSUSE 15.1: gambas 2.24.0-lp151.57.47
Zijnde 43 gambas* bestanden.
Samen met 6 KDE (kdebase3-runtime 3.5.10.1-lp151.358.3 etc); totaal 49 bestanden.

2020-11-09
OpenSUSE 15.1: gambas 2.24.0-lp151.57.46
Waaronder gambas2 runtime, gb-chart, gb-qt, qb-qt-kde, gb-settings, gb-v4l… In totaal een 43 packages, ook weer samen met kdebase/libs3/..-updates lp151.358.1 (6 packages)

2020-11-02
OpenSUSE 15.1: gambas 2.24.0-lp151.57.44
(samen met kdebase3 3.5.10.1-lp151.357.12 / kdelibs33.5.10-lp151.233.8)
(-)

2020-10-27
OpenSuse 15.1: gambas 2.24.0-lp151.57.43
(-)

2020-10-22* (-) Nota: gambas2 werkt(e) niet op 15.1
OpenSUSE 15.1: gambas 2.24.0-lp151.57.38
(ook kdebase3-runtime (3.5.10.1-lp151.357.5)
(-)

2020-10-19
OpenSUSE 15.1: gambas 2.24.0-lp151.57.37
(zowat alle files; ook samen met een kdebase3,kdelibs3 update)
(-)
Nota: gambas2 werkt(e) niet op 15.1
2020-10-02

OpenSUSE 15.1: gambas 2.24.0-lp151.57.34
Update van 2.24.0-lp151.57.32 KDE:KDE3 / openSUSE_Leap_15.1 openSUSE-Education.

* (-)
Nota: gambas2 werkt(e) niet op 15.1
Op 15.1 werkt(e) gambas2 niet: Segmentation fault (core dumped) (-)
Werkt niet bij een nieuw geïnstalleerde 15.1. Waarschijnlijk ontbreken bibliotheken of links naar de nieuwe versies van bibliotheken die misschien wel gemaakt zijn bij een doorlopend upgraden van versies.
zie ook http://gambas.copyleft.be/blog/archives/2102

2019-12-20
OpenSUSE 42.3: gambas 2.24.0-39.1
Inderdaad nog een update van 2.x build time 14/12!

29-11-2018: er komen nog steeds af en toe updates binnen (openSuse Leqp 42.3), zoals nu, van Gambas2: 2.24.0-33.1 (Gambas 2 blijft hoofd-versie 2.24)


19-4-2018: Er komt een update binnen voor Gambas 2 op openSUSE Leap 42.3.
Op datzelfde moment is er ook een upgrade voor kdebase3, de kernpaketten van kde3, die horen bij deze oude Gambas versie.
Samen zo’n 45 paketten voor Gambas2, 3 paketten voor Kde3.

kdebase gaat naar versie 3.5.10.1-330.3
gambas2 gaat naar versie 2.24.0-29.2


4-4-2018 Er komt een update (45 bestanden) binnen voor Gambas2 op openSUSE Leap 42.3.

Daarmee gaat die van …

2.24.0-24.58
Build Time:
za 03 mrt 2018 19:24:06 CET

naar …

2.24.0-24.59.
Build Time:
vr 30 mrt 2018 13:49:58 CEST

Gambas en Raspberry Pi GPIO pinnen

Zien
Deze lijkt interessant: (van 2016)
1. Gambas GPIO and android on raspberryPi3
https://www.youtube.com/watch?v=j1HoN-ySK7Q

Deze is nog ouder (03-2015) en niet NL-talig, en ondanks de titel ook niet Engelstalig:
2. Controlling Raspberry Pi 2 GPIO with Gambas (2015)
https://www.youtube.com/watch?v=VPj_Hjh7viQ

Library
Een van de basisbenodigdheden naast gambas en een pi is een library om de raspberry pi GPIO pinnen aan te spreken (met een soort seriële communicatie):

  • wiringPi
  • pigpio

Een code-voorbeeld van gebruik vind je hier op elinux.org

libwiringPi
(Zie ook deze topic 2013 op pi forum – en blijkbaar moet je Gambas programma draaien als root)

De library moet je aanroepen in de software, in het 1e voorbeeld:
Library "/usr/local/lib/libwiringPi"

Dan worden er een aantal dingen uitgehaald, bv

Public Extern wiringPiSetup() As Integer ' blabla
Public Extern pinMode(pin as Integer, ...

Dan doet hij een “setup”:


Public sub Form_Open()
wiringPiSetup()
pinMode(7, PIN_OUTPUT)
pinMode(0, PIN_OUTPUT)
pinMode(2, PIN_OUTPUT)
pinMode(4, PWM_MODE)
pwmSetMod(0)
pwmSetClock(400)
pwmSetRang(1024)
pwmWrite(1, Slider8.Value)
End

Ik begrijp de indentatie niet zo goed, maar ik heb gewoon de code overgenomen uit zijn videootje.

Dan heeft hij nog code om naar de Arduino te sturen via de serialport1:

PUBLIC SUB _new()
' ...
serialport1.PortName= "/dev/ttyUSB0"
serialport1.speed = 9600
serialport1.
serialport1.
' enz
TRY serialport.Open()
IF Erro Then
Message.Error("Connection error in port " & serialport1.Portname)
ELSE
Try Print #serialport1, "S"
IF Error Then
Messag.Error("Error sending data .." )
Print "Cannot connect"
ELSE
Print "ok .. Connected"
ENDIF
ENDIF
END

Ook dat zou ik anders doen, nl met


WITH serialport
.Portname= "/dev/ttyUSB0"
.speed = 9600
.Parity = .None
.DataBits = .Bits8
.StopBits = .Bits1
.FlowControl = .None
END WITH

En dan stuurt hij slider informatie door naar de arduino:

Public Sub Slider3_Chang()
Dim b as Byte[]
b = [99, Slider3.Value, 101]
Write #serialport1, b AS Byte[]
End

Volgens zijn uitleg is het allemaal erg eenvoudig vanuit Gambas!

pigpio
Volgens Captain Bodgit (http://captainbodgit.blogspot.be/2016/08/raspberry-pi-gpio-gambas-pigpio-library.html) kan je ook deze pigpio (als .zip van abyz.co.uk/rpi/pigpio/) gebruiken:

wget abyz.co.uk/rpi/pigpio/pigpio.zip
Daarna:
unzip pigpio.zip
wat een mapje PIGPIO geeft, met inhoud.
cd PIGPIO
make
sudo make install

(uitgevoerd op OpenSUSE 42.3)

Gambas3 app uitpakken en compileren

Een APP waarvan je in de IDE een .tar.gz package gemaakt hebt kan je kopieren en op de bestemming uitpakken en compileren tot een .gambas programma (dat gedraaid kan worden mits de gambas3 runtime aanwezig is)

tar -xzvf APP.tar.gz
cd APP
gbc3 -a
gba3 -o ./../APP.gambas

Veilige verbinding met de databankserver door SSL, TLS

Eigen verbinding controleren:

login als mysql gebruiker op de server.
Checke met \s hoe de gebruikte verbinding verloopt; kijk naar “SSL”:

MariaDB [(none)]> \s
--------------
mysql Ver 15.1 Distrib 10.0.32-MariaDB, for Linux (x86_64) using readline 5.1

Connection id: 33
Current database:
Current user: copyleft@192.168.1.222
SSL: Not in use
Current pager: less
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.0.32-MariaDB SLE 12 SP1 package
Protocol version: 10
Connection: 192.168.1.111 via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 32 min 34 sec

Er wordt dus geen veilige verbinding gebruikt (SSL: Not in use)

Log in op de server als root.
Kijk naar de instellingen ivm ssl :

MariaDB [(none)]> show variables like '%ssl';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | YES |
| have_ssl | DISABLED |
+---------------+----------+

De SSL mogelijkheden zijn mee gecompileerd, maar niet in gebruik.

Volgende stappen:
– SSL keys instellen met juiste user, en server herstarten om SSL gebruik te aktiveren.
– Server zo instellen dat hij van buitenaf enkel SSL verbindingen beantwoordt (van binnenuit kan het nog via unix sockets dan)

Engelstalig artikel (toegepast op ubuntu) op:

https://www.digitalocean.com/community/tutorials/how-to-configure-ssl-tls-for-mysql-on-ubuntu-16-04

Printen in Gambas 3.9

(update van Printen in Gambas 3 wegens wijziging vanaf 3.4)

Algemeen
Ik ken drie manieren om te kunnen afdrukken:
– html bestand maken en printen vanuit browser (soms gemakkelijk als je voor web toepassing werkt web=print)
– printen vanuit gambas (zie hieronder – is wat zoeken naar layout-kenmerken voor print)
ps: hier kan je bij het printvenster nog altijd ipv een printer te kiezen, print naar pdf selecteren.
– pdf maken? De pdf component dient blijkbaar enkel om pdf bestanden te lezen en weer te geven, niet om ze te maken. Elders wordt gesproken over printen naar pdf (ipv naar printer; zie boven).
Ideaal zou zijn dat je eenvoudig pdf bestanden kan maken vanuit gambas, en print vanuit de pdf-viewer; handig als je universeel bestand wil hebben dat je ook kan attachen aan mail, bewaren als archief enz.

Gambas3 printvoorbeeld
Bij deze Gambas 3.9 zit een printvoorbeeld, dat werkt met een Printer object dat op de Form geplaatst is
(Ik ga die in code te definiëren omdat ik een module gebruik en geen form)
In het printvoorbeeld is er één voor tekst: “prtText”, en één voor beeld “prtImage”.

Op de form geselecteerd zie je de eigenschappen:

Class: Printer
Name: prtText
Group :
CollateCopies: False
Duplex: Simplex
FullPage : False
GrayScale: False
Orientation: Portrait
Paper: A4
Public: False
ReverseOrder: False
X: 434
Y: 217

Op de FMain form zien we:

  • TextAerea “txtText” (deze bevat de opgemaakte text met html codes zichtbaar)
  • ScrollArea “scrText” (deze bevat de opgemaakte tekst met de opmaak in werking)

Net daarboven een ButtonBox “txtFontText” die de naam van de font bevat. Die wordt bij openen gevuld met een font “17”, en heeft een knop om een andere font te kiezen.

De tekst wordt klaargezet in op de form (eventueel geladen uit een bestand) in txtText en scrText.

Er zijn vier methoden voor print:

  • Begin()
  • Paginate()
  • Draw()
  • End()

Er zijn twee verplichte methoden voor prtText:

prtText_Begin()
en
prtText_Draw()

Het printen wordt gestart vanuit een button en dat aktiveert:

If prtText.Configure() Then Return
Inc Application.Busy
prtText.Print
Dec Application.Busy

De methodes Begin en Draw worden door het .Print commando automatisch aan geroepen, maar je moet ze dus wel zelf voorzien.

In de Draw methode geef je de tekst die geprint moet worden als één van de parameters.

Geprobeerd om de essentie even uit het printvoorbeeld van Gambas zelf te halen, met eigen variabele namen:

Form
FMain:
– bovenaan een listbox lsbxLog, een knop btPrint, en een printer object, dat ik “Printer1” noem.
– eronder een tabPanel1 met 4 tabs: Text from file, -from screen, image, drawing
– de TAB’s:
— from file: FileChooser1 en TextArea1
— from screen: FontChooser1 (en nog niet gebruikte ScrollAreaText)

Code

' Gambas class file
Public $fLeftMargin As Float = 10
Public $fStartLine As Float = 15
'
'
Public Sub Form_Open()
'
End
'
'
Public Sub FileChooser1_Change()
  '
  Try TextArea1.Text = File.Load(FileChooser1.Value)
  '
End
'
'
Public Sub btPrint_Click()
  '
  Dim bDone As Boolean
  '
  If Printer1.Configure() Then Return
  btPrint.Enabled = False
  Inc Application.Busy
  '
  bDone = Printer1.Print()
  '
  Dec Application.Busy
  btPrint.Enabled = True
  '
End
'
'
Public Sub Printer1_Begin()
 '  
End
'
'
Public Sub Printer1_Draw()
  '
  Select TabPanel1.Index
    Case 0
      lsbxLog.Add("from file", 0)
      printFromFile(FileChooser1.Value)
    Case 1
      lsbxLog.Add("from text", 0)
      printRichText(FileChooser1.Value)
    Case 2
      lsbxLog.Add("from image", 0)
    Case 3 
      lsbxLog.Add("from drawing", 0)
  End Select
  '
End
'
'
Public Sub Printer1_End()
  '
End
'
'
Public Sub printFromFile(sFileName As String)
  ' title = filename
  Paint.Font.Bold = True
  Paint.DrawText(sFileName, $fLeftMargin, $fStartLine, 700, 1400, Align.TopNormal)
  ' text
  Paint.Font.bold = False
  Paint.DrawText(File.Load(sFileName), $fLeftMargin, $fStartLine + 100, 700, 1400, Align.TopNormal)  ' this works but without further adjustments, the text in the lines runs from the page and is lost
  '
End
'
'
Public Sub printRichText(sFileName As String)
  '
  Dim myText As String
  '
  myText = "< H 3 >" & sFileName & "< / H 3 > " & gb.NewLine
  myText &= File.Load(sFileName)
  '
  Try Paint.Font = FontChooser1.Value
  '
  Paint.DrawRichText(myText, $fLeftMargin, $fStartLine, 9500, 1400, Align.TopNormal)
  '
End

nb:
De html codes een beetje uitgerokken om ze te kunnen zetten.
De juiste impact van de “width” bv 700 in eerste; geen?

In printRichText geeft 700 een smalle kolom, en 9500 een hele bladbreedte, maar dat hangt natuurlijk af van allerlei.

als ik tijd heb vul ik aan met de images/drawings

Gambas3 text string krijgt ampersand; tekst wordt &tekst

In een bepaalde combinatie van Gambas en KDE krijg ik een raar effect als ik een tekst toewijs aan een button en daarna daaruit haal voor een tekstveld.

Er komt een ampersand voor, en eigenaardig genoeg, soms zelfs tussen de letters.

Bv een form met een paar buttons en labels:

Public Sub Form_Open()
Button0.Text = "Button0"
Button0.Tag = "Button0"
End

klik op een knop en ..

Public Sub Button0_Click()
Label1.Text = Button0.Text ' this gets & in front
Label2.Text = Button0.Tag ' this works ok
End

De tekst krijgt een & teken vooraan: “&Button0”.

Omstandigheden:
(see system information at bottom of post)

Gambas 3.10 + KDE5 (GB_GUI: gb.qt5)
Components: gb, gb.form, gb.gui, gb.image
OpenSUSE Leap 42.2

Komt voor sinds ongeveer midden november of zo.
Niet op oudere gambas versie als 3.7.1 op opensuse 13.1/KDE 4.

Ik hoopte dat het een van de dagen zou verdwijnen met een update, maar tot nu toe nog niets.

Upd: Alt-letter
Op de gambasuser mailinglist merkte iemand op dat de ampersand duidt op de “shortcut”, de lettercombinatie die gebruikt kan worden om een knop te bedienen zonder muis; bv Alt-B. De ampersand duikt op waar de “aktieve” letter zit voor de knop.
Je kan dit zien door de alt knop in te duwen; dan komen zowel bij de menu’s als bij de knoppen sommige letters onderlijnd staan.

System Information:

Continue reading

Gambas user mailing list, bug list

Er is onlangs iets gebeurd met de gambas user mailing list:

https://sourceforge.net/p/gambas/mailman/gambas-user/?viewmonth=201710

Terwijl er meestal zo’n 400 berichten per maand zijn, is dat aantal in oktober plots teruggevallen tot 85.

In een van de posts lees je :

Please stop using the old mailing-list, and use the new one instead.

Er is ook een link te vinden naar de “nieuwe” mailinglist:

http://lists.gambas-basic.org/listinfo/user

De bug list zit nu op:
http://gambaswiki.org/bugtracker/

Gambas 3 op Sparky 5.0 (met omweg)

Sparky Linux 5.0 (ondertussen is ook 5.1 uit) heeft Gambas3 niet in zijn standaard software-aanbod zitten (via de desktop met softwarebeheer gezocht); evenmin Gambas2.
Sparky is een Debian-gebaseerde distributie (5.1: Debian Testing Buster), dus kan je proberen met apt-get:

apt-get install gambas3
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package gambas3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
apt-get install gambas2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gambas2

Ik probeerde nog:

Je zal dus een andere bron moeten zoeken.
De uitleg voor Debian: http://gambaswiki.org/wiki/install/debian
In debian is het blijkbaar standaard wel beschikbaar.

Een ander debian-derivaat?
De uitleg voor Ubuntu: http://gambaswiki.org/wiki/install/ubuntu

$ sudo add-apt-repository ppa:gambas-team/gambas3

geeft:
add-apt-repository ppa:gambas-team/gambas3
bash: add-apt-repository: command not found

Ik las ergens:
The add-apt-repository command is part of the software-properties-common package
dus ik probeerde:

apt-get install software-properties-common

Maar ook dat gaf me geen toegang tot gambas3:

sudo add-apt-repository ppa:gambas-team/gambas-daily
Traceback (most recent call last):
File “/usr/bin/add-apt-repository”, line 95, in
sp = SoftwareProperties(options=options)
File “/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py”, line 109, in __init__
self.reload_sourceslist()
File “/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py”, line 599, in reload_sourceslist
self.distro.get_sources(self.sourceslist)
File “/usr/lib/python3/dist-packages/aptsources/distro.py”, line 93, in get_sources
(self.id, self.codename))
aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Sparky/Nibiru

Ik heb Gambas dus niet aan de praat gekregen op deze Sparky 5

Een laatste poging:
(ik weet niet hoever je mag/kan gaan in het toevoegen van repo’s in debian)

$ sudo mcedit /etc/apt/sources.list

plak achteraan:
deb http://ftp.nl.debian.org/debian/ jessie main
deb-src http://ftp.nl.debian.org/debian/ jessie main

bewaar, sluit. Repo informatie terug inlezen en opnieuw proberen:

$ sudo apt-get update
$ sudo apt-get install gambas-ide

(die ide erachter is maar een probeersel, om niet enkel de runtime/compiler te krijgen maar ineens de hele programmeeromgeving.)

Daarna staat er netjes in het menu “Programming”: Gambas3.
Geinstalleerd is gambas 3.5.4.

Rapportgenerator 2 : Rapport met velden uit een databank

(vervolg van Gambas3 Rapportgenerator 2 basis)

Ik maak een eenvoudig rapport met drie kolommen gegevens; de lijnen zijn data uit een databank, de kolommen velden.
De datalijnen worden onder elkaar herhaald, en lopen over meer dan één blad.

Rapport layout

Aktiveer de module gb.report2 in Project, Properties, Components.

Maak een nieuw Rapport aan bij Sources, (rechtsklik) New, Report.

Teken op het scherm een titel met Report, ReportLabel, en vul de Titel in bij de eigenschap “Text”

Teken op het scherm een vertikaal kader met Container, ReportVBox; deze mag de overblijvende bladspiegel vullen.
Zet de eigenschap om de marge onderaan de pagina vrij te laten, bv: Margin Bottom: 16mm

Teken in die ReportVBox bovenaan een ReportHBox, over de hele breedte van de ReportVBox.
(alle eigenschappen op False, behalve Visible: True; marges en spacing naar wens)

Teken in die ReportHBox drie ReportLabels naast elkaar: ReportLabelColumn1, ..ReportLabelColumn2, ReportLabelColumn
(je kan ertussen bv een ReportTextLabel zetten met een scheidingsteken als – of ; )

Deze ReportLabels zullen in code gevuld worden met de inhoud van velden uit de databank.

Rapport code

Declareer een databankverbinding en een resultset in de Report1.Class:

  Private hConData As Connection
  Private hres As Result

Initialiseer; je maakt een procedure waarin je een verbinding maakt naar je databank:

Eenvoudige uitvoering:

Public Sub initDb()
  '
  With hConData
    .User="databank-gebruiker"
    .Password="mijn-wachtwoord"
    .Host="localhost" ' of hostnaam of ip adres
    .Type="mysql" ' in mijn geval
  End With
  hConData.Open()
  hres = hConData.Exec("SELECT * FROM test")
End

Voor elk data element dat je gemaakt hebt, maak je een _Data methode:

Public Sub ReportLabelColumn1_Data(Index As Integer)
  Dim s As String
  '
  hres.MoveTo(Index) ' dit moet je niet meer doen voor 2 en 3
  s = Str$(Index) & ") " & hres!id & " : " & hres!name ' overeenkomend met velden uit je tabel
  Last.Data = s
End

In Report_Open() roep je de databank initialisatie aan, en geef je de herhaling van de invulling tov de records aan:

  initDb()
ReportHBox1.DataCount = hres.Count

Shift-F5
De rest gebeurt wonderwel vanzelf bij het draaien van het rapport (je kan het rapport apart testen met “Shift-F5”; vgl Run=F5)

De report preview geeft de kans om te vergroten, verkleinen, enz…

Valkuil(en)

Crash

De preview in de report design mode werkt mogelijk niet als je de database routines in elders in modules initialiseert. Ook kreeg ik een crash (runtime/interpreter? met bom pixel art) in dat geval, maar had misschien met een andere variable definition fout te maken, die er ook was (index ipv integer).

Traag

Na het aktiveren van de “Report Preview” duurt het ellendig lang eer het preview scherm tevoorschijn komt, en de gebruiker kan nergens aan zien dat het programma bezig is.
Als je rechtstreeks uit een menu-item de preview aanroept, blijft het menu openstaan (en lijkt de app te hangen).
(Gambas 3.9.2)

Waarde blijft staan

Opgelet als je een voorwaarde inbouwt bij het vullen van de _Data! Data van de vorige record blijft er in staan!
(Gambas 3.10.0)

Inhoud velden onzichtbaar

Ik krijg de inhoud van de velden niet meer te zien bij het maken van het rapport. Pas als ik ze verwijderd heb (broncode laten staan), en terug toegevoegd, komen ze te voorschijn. (Zelfs vanuit vergelijking van de source van .report is me niet duidelijk wat er fout is. (font?).
(Gambas 3.9.2)

Printen in Gambas3

Printen in Gambas3 gaat een beetje anders dan printen in Gambas2.

upd jan 2018: zie ook printen in Gambas 3.9 (ev); vanaf 3.4 is Draw verouderd

Voor Gambas3 vind je documentatie op gambaswiki.org/wiki/howto/print

Je gebruikt de Klasse “Printer” om je eigen object van te maken.
Zoals je ziet gebeurt het eigenlijke werk in de _Draw() event:

Public MyPrinter AS Printer
'
..
'
MyPrinter = New Printer As "MyPrinter"
'
With MyPrinter
.Orientation = Printer.Portrait
.Paper = Printer.A4
.FirstPage = 0
End With
'
IF Not MyPrinter.Configure() ' toont een printkeuzebox aan gebruiker
  MyPrinter.Print() ' maakt alle stappen _Begin, (_Paginate), _Draw, _End
Endif
'
Public Sub MyPrinter_Begin()
  '  
  MyPrinter.Count = iPageCount
  '
End

' Public Sub MyPrinter_Paginate()
'   
'   (nog uitzoeken)
'   
' End

Public Sub MyPrinter_Draw()
  '
  Draw.FillColor = Color.Black
  Draw.Foreground = Color.Black
  Draw.Rect(20, 20, 100, 100)
  Draw.Text("ABCDEIFGQEFSDJFKLQ3", 100, 100)
  '
End

Public Sub MyPrinter_End()
  '
  Message.Info("Printed " & iPageCount & " page(s) ")
  '
End
'

ps: misschien komt het vierkantje in de hoek niet goed door, dan moet je de lijn wat dikker zetten, standaard staat ze nogal dun merk ik.

Let verder op de beschikbare bladspiegel; die is normaal kleiner dan het papierformaat (marges door beperking printer).

Printer.FullPage
De rechthoek om in te printen begint bij 0,0.
Je moet gebruikers de kans geven om te finetunen.

Afmetingen in mm opvragen kan met:
Printer.PaperWidth
Printer.PaperHeight

Paint.Scale laat je toe mm te gebruiken:

Paint.Scale(Paint.Width / MyPrinter.PaperWidth, Paint.Height / MyPrinter.PaperHeight)

Paint.Font.Size geeft de absolute lettergrootte in typografische punten, ong 0.353 mm.

Ps: merk op dat de printerresolutie verschilt van (meestal groter is dan) de schermresolutie.

Kijk ook naar Paint.Scale, Paint.Translate, Paint.Rotate, …