Selectie uit een rolluiklijst (combobox)

ComboBox Events … Een rolluiklijst of dropdownlist heet in Gambas “combobox”.ComboBox
Het is namelijk een combinatie van 2 verschillende schermobjecten:

op de knop drukken laat het rolluik met mogelijkheden neer; het opent de lijst.

Helaas zijn hier nogal veel mogelijkheden ingebouwd, en is het niet altijd zo snel duidelijk wat ze wanneer doen.

ComboBox Events …Wat een combobox doet is bv afhankelijk van de “events” (klik rechts, “events”, zie afbeelding )

ReadOnly: TRUE
ComboBox Read Only
op “pijltje” openen: ok
_Activate: nvt
cmbx1.Popup() doet niets
_MouseDown() –
_Change: nvt
_LostFocus: –
_Click() ook bij “enter”
meeste akties hier
  ReadOnly: FALSE
ComboBox 1
op “pijltje” openen: ok
_Activate: opgeroepen bij “enter” vlgs DEBUG
cmbx1.Popup() Automatisch openen lijst – niet?
_MouseDown() : cmbx1.Popup() om ipv tekst met cursor lijst te krijgen
_Change: als de tekst wijzigt …
_LostFocus: controleer of waarde …
_Click()

Dus cmbx_change wordt niet geaktiveerd door het veranderen van de selectie in de combobox (bv scrollen van de waarden).
cmbx_change wordt alleen geaktiveerd in een “writeable” cmbx, waarin je op de plek van de selectie de tekst verandert. Ook als je een keuze maakt uit de waarden van de rolluiklijst wordt dat als een verandering van die tekst beschouwd en wordt _change uitgevoerd. (waardoor het lijkt op de reaktie van _click bij een readonly combobox)

Project source download en run

Ontwikkeling in Gambas op verschillende computers, en het project heen en weer kopieren:

  • – overbodige Form files verwijderen
  • – opletten met “deel compilatie” *

* (ik weet niet waardoor het veroorzaakt wordt)

Eerste computer:
Project dat uit verschillende forms, modules en classes bestaat. Make source package. Upload source.tar.gz.

Andere computer:
download source.tar.gz
uitpakken.
Run: niet alle vensters lijken helemaal mee te zijn met de development versie van Eerste.
Compile all

Opgelost met: Project, Compile All.
Uit menu of dubbele groene pijl (ze schermafbeelding)

(Gekozen tussen “Compile all”, Project, “refresh” en Tools, “update all forms”)

Shell script draaien vanuit Gambas

Uit de mailing list begreep ik dat het mogelijk is een shell script te laten draaien vanuit Gambas:
( het voorbeeld gaat uit van een script in de project map)

DIM sTempScript as String
'
sTempScript = Temp$
'
COPY "update.sh" TO sTempscript
'
SHELL sTempScript WAIT

Als het project in een andere subfolder staat is het :

COPY "subfolder/update.sh" TO sTempscript

Voorbeeld van mysql gebruik in Gambas

Deze blog post geeft een volledig uitgewerkt voorbeeld, met code, data-beschrijving, en scherm:
How to program Gambas with MySQL in Ubuntu

De installatie is gericht op Ubuntu, maar het voorbeeld is natuurlijk voor alle Gambas gebruikers geldig.

Er wordt teruggegrepen naar een bestaande artikel van 2003 (Gambas versie 1), hier als zip-file die een pdf bevat:
http://www.ilmukomputer.com/wp-content/uploads/2007/02/tamrin-gambasdanmysql.zip

en er wordt verwezen naar een inleiding hier (Maleisische site, ook Ubuntu gericht):
Gambas : Visual Basic untuk linux dan tutorial penggunaanya

Installatiepakket maken van je Gambas programma

Menu Project / Make / Installation package
of het icoon van de doos, hier helemaal rechts: Install package
ps: Ik kreeg eerst een foutmelding omdat een directory niet (meer) bestond waarin (?) tijdelijke bestanden geschreven worden.

Dan start een procedure in 7 stappen:
(hier ingevuld met vb waarden)

  • 1. Package information name, e-mail maintainer, vendor, Description, Licence …
  • 2. Changes : “initial release”
  • 3. Target distribution: openSuse
  • 4. Package group Productivity/Office/Finance
  • 5. Menu entry: Office/Finance Categories: Finance; Office
  • 6. Destination directory: upload/mijnproject/distribution
  • 7. Ok ; the packages have been successfully created.

Het resultaat zijn in dit geval twee bestanden:

mijnproject-0.0.80-1suse.src.rpm
mijnproject-0.0.80-1suse.noarch.rpm

  • 1. Informatie over het programma en contactpersoon
  • 2. Normaal de wijzigingen tov de vorige versie
  • 3. Alleen de distributies waarvoor je paketten kan maken zijn als keuze beschikbaar.
  • 4. Package group Productivity/Office/Finance
  • 5. Waar in de menu struktuur het programma komt
  • 6. Waar het resultaat moet gezet worden (lokaal – niet installatie)
  • 7. Ze komen in de in 6. opgegeven bestemmingsdirectory.

3.: om bv een Ubuntu pakket te maken op openSuse moet je “debhelper” installeren; in openSuse 10.3 zit dat in de “deb” package.

Een eigen Gambas-2 programma starten

Binnen de programmeeromgeving:

project openen en dan een van de volgende:
– Menu Debug, Run
– F5
– run-knop met als symbool een pijl |>

Vanop de Command prompt:

Een gambas project bestaat uit een map of directory met een aantal bestanden.
Eén ervan is uitvoerbaar (executable zichtbaar als eigenschap x in directory listing met ls -lF) en heeft de naam van het project met als extentie .gambas, bv:

mijnproject.gambas

Het begin van dat uitvoerbaar bestand doet zich voor als shell script en laat zich uitvoeren door de gambas interpreter, hier gbr2.

Het commando head mijnproject.gambas toont het begin van dat bestand:

#! /usr/bin/env gbr2

~ħ8��O�$# Gambas Project File 2.0
Title=Mijnproject
Startup=MMain
Icon=mijnproject.png
Version=0.0.70
Library=gb.qt
Library=gb.form
Library=gb.db

Starten vanuit een Konsole kan bv met:

./mijnproject.gambas

Starten vanuit een grafische desktop werkt daarom niet vanzelf: als je via Konqueror (bestandsbeheer) naar het facs.gambas bestand gaat, en erop klikt, vraagt die “Open met” en toont het menu van “Bekende programma’s”. Je kan dan zelf invullen:

gbr2

Het gemakkelijkste: maak uit de gambas IDE een executable met de ingebouwde tool via:

  • tandwiel icoon “make executable”;
  • Project, Make, Executable”
  • CTRL-ALT-M

dat maakt een link op je desktop aan die de juiste instellingen bevat. De link krijgt het icoon dat je in je project voor je programma koos.

Je kan je uitvoerbaar programma ook opnemen in een menu: KDE Menu Editor, door een nieuw menu-item aan te maken, geef een naam en bij programma command kies je via de bestandsbeheer knop ernaast je “mijnproject.gambas”. Dan wordt niet automatisch je project-icoon toegevoegd; kan via klik op het icoon, andere iconen, browse en dan moet je het icoon ergens apart hebben staan. (het gecompileerde project bevat het maar dat is niet zichtbaar vanuit de bestandsbeheerder)

64-bit Gambas2

Hier op openSUSE 11.0 en KDE 3.5

OpenSUSE vers geïnstalleerd, met updates, en packages (zie onderaan)

Download of via installer, zypper bv.add repository met naam gambasValor:

zypper ar http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.0/x86_64 gambasValor

Geeft:

Adding repository ‘gambasValor’ [done]
Repository ‘gambasValor’ successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.0/x86_64

Foutmelding bij gebruik; url was fout, laatste stuk moet eraf – gefixt via Yast, installatiebronnen.

– Yast, Software Management, search “gambas2”, select, all in this list + autocheck, accept
– 7 extra packages selected, continue
– ok, menu: Development, Gambas

Geïnstalleerde packages lijst: Continue reading

Een Gambas leerboek

Nog een gambas handleiding ontdekt:
Getting Started with Gambas Version 2: A Tutorial
Het werk is van Timothy Marshal-Nichols (aan e-mail adres vermoed ik Brits)

De gevonden versie dateert van 2006, lijkt gemaakt in openoffice.org/odt formaat en bestaat als pdf.
Ik heb maar weinig vermeldingen gevonden, nergens iets over een mogelijke uitgave als boek, en slechts 2 sites met een download:

  • een arabische met de pdf (1.0/193)
  • een heel commercieel uitziende met een zip van een pdf. (niet geprobeerd)

Het boek vertrekt van 3 projecten: SimpleEdit, ImageShow, Notations.

Toetsindruk, KeyPress() verwerken: rekenveld

Rekenveld Form
Een formulier met een veld waar getallen worden ingegeven, en na elk getal (enter) wordt het totaal berekend. Rekenveld Run

Toetsindrukken als “enter” kunnen gevolgd worden in het “log” schermdeel rechts.
Als de “tab” toets ingedrukt wordt, wordt het resultaat naar het Target veld gestuurd.

Hierbij het ontwerpscherm, de code (onderaan) en het aktieve programma.

Gemaakt in Gambas 2.8

PUBLIC SUB vlbxInput_KeyPress()

  SELECT Key.Code
    CASE Key.Enter
      lsbxLog.Add("enter : " & Key.Code)
      CalcResult()
    CASE Key.Return
      lsbxLog.Add("return : " & Key.Code)
      CalcResult()
    CASE Key.Tab
      TransferResult()
    CASE ELSE
      lsbxLog.Add("other : " & Key.Code)
  END SELECT 

END

PUBLIC SUB CalcResult()

  vlbxResult.Value += vlbxInput.Value
  vlbxInput.Value = vlbxResult.Value
  vlbxInput.Select()

END

PUBLIC SUB TransferResult()

  vlbxTarget.Value = vlbxInput.Value

END

De lijn met vlbxInput.Value = vlbxResult.Value afzetten geeft het resultaat alleen in het resultaatveld.

Waarom niet vertaald?

Hoewel heel het project vertaald is en volledig in het NL draait, is een deelvenster FEdit plots helemaal in het Engels. Het verschil met de andere Forms is dat de teksten op het scherm geschreven worden vanuit code :

txtlb.text=”Titel op scherm”

Wordt deze teksttoewijzing in code niet mee aangeboden bij het vertalen?

Upd 26/6: Om teksten in code in de vertaal-lijst te krijgen moet je ze voorzien van extra haakjes:

txtlb.text=("Titel op scherm")