Hoe

Project, nieuw

  • starten (in eigen project-subdirectory; die wordt gemaakt met de opgegeven projectnaam)
  • FMain is de standaardnaam voor het hoofdscherm, daarbij komen classes, forms, modules, …
  • Exit button voorzien, met als code bv:
    ME.Close()
    in gambas 1
    MainForm.Close?
  • ESC functie voorzien.
  • DEFAULT eigenschap zetten voor “bij enter automatisch in te drukken” knop
  • About kan in apart venster

Project, vertalen

  • Gambas gebruikt de instellingen van omgevingsvariabelen, op te vragen in een term door echo $LANG.
  • vertalingen komen terecht in een (onzichtbare) .lang directory met herkenbare .po en .mo bestandsnamen. Het project zelf als en_US.mo_nl, en_US.po_nl (op mijn systeem) en vertalingen als nl_BE.mo, nl_BE.po, de Duitse vertaling de.po en de.mo
  • De verborgen directory .lang wordt gemaakt als je bij Projects / Properties / Options, Translation “Project is translatable” op “yes” zet. Daar kies je ook de standaard taal van je applicatie (als je nog geen andere talen heb gemaakt - nog niet “vertaald” hebt)
  • In die directory staan eerst de bestanden:
    • FMain.pot (bevat de strings in basistaal)
    • .pot (bevat ook de strings)
    • #project.pot (dingen door de compiler geschreven)
  • Start het project bv in het Engels (algemene taal “en_US”), dwz maak de interface helemaal in het Engels. Vertaal daarna naar de taal die je zelf nodig hebt; dat geeft meeste mogelijkheden naar hergebruik.
  • Nadat je een taal bijgemaakt hebt (new), bv Nederlands, BelgiĆ«, verschijnen in de .lang directory:
    • nl_BE.po (bevat de originele tekst “message string”, en daaronder de vertaalde tekst.
    • nl_BE.mo
  • Alle teksten op het scherm komen automatisch in aanmerking voor vertaling, teksten in de code moet je aangeven voor vertaling met ()
  • Kies het vertaalsymbool (of menu Project/Translate), maak een taal bij, en vul de kolom in. Niets invullen gebruikt de originele tekst van programmatie. Een minstreepje - zetten geeft aan dat het niet vertaald moet worden.
  • Gambas zelf in een andere taal starten dan waarin je systeem draait kan door Gambas op te starten met een andere taalinstelling; LANG=nl_BE.UTF-8
    gambas2
  • Andere taalversie van je programma testen? Gambas opgestart als hierboven gebruikt ook de bijhorende taal voor de in Gambas geschreven programma’s die je start.
  • Je kan ook van in je applicatie de taal verzetten, bv in een string sLang:
    DIM sLang AS String
    sLang="nl_BE"
    System.Language = sLang

    Die geldt vanaf dat moment, dus een venster dat al openstaat blijft in de vorige taal, ook na ME.Refresh().

Project, verwijderen

  • databases verwijderen
  • datadirs en files buiten de prj dir verwijderen
  • de project directory verwijderen

Dynamisch gegenereerde knop (afhankelijk van class?)

DIM hButton AS Button
hButton = NEW Button ( Parent AS Container )

De h van hButton betekent hier “handle”
De container is bv de Form waarin hij staat.

Initialisatie code
Code die uitgevoerd wordt bij het begin van het scherm (form) is die tussen

PUBLIC SUB Form_Open()
  '
END

bv:
Form1.Caption = " Titel van het venster "

Her-initialisatie
Constructor terug oproepen kan met

_new
in gambas 1 zelfde ?

Andere form oproepen
bv vanuit een menu met menu-item-code:

PUBLIC SUB mniOpenForm2_Click()

  frmForm2.Show

END

Opgelet als je elders in je code een andere form oproept; er wordt niet gewacht tot de nieuwe form gesloten is om verder code uit te voeren … dus als je code afhankelijk is van iets wat in dat nieuwe venster gebeurt, kan dat problemen geven lijkt me.

Menu in toepassing
Op de form, klik rechts, kies Menu Editor (of ctrl-E).
Insert
Name (dit is in het programma de naam van het menu) bv mnuHelp
Caption (dit is de naam die zichbaar is als menu) bv Help
Submenu door inspringen (Insert, wijzig niveau door pijltjes)
Code voor submenu door in form op het menu, submenu-item te klikken.

Standaard knop

hButton.Default = TRUE ‘ voor enter
hButton.Cancel = TRUE ‘ voor escape

String

sString = "abc"
PRINT sString[1]

Strings worden geteld vanaf 1 (niet vanaf 0)

Image/picture

DIM hPic1 AS Picture
hPic1 = NEW Picture
hPic1.Load(”GridPic.png”)

locale var declareren, instantie maken, beeld laden

Focus volgende, vorige

hButton.next ‘ volgende control binnen zelfde container
hButton.previous ‘ vorige control binnen zelfde container

Volgorde knoppen: tab naar volgende knop.
Binnen de IDE worden deze eigenschappen niet als properties niet weergegeven maar als hierarchy!

Variabelen: resultset resSql AS result (resultaat van sql opvraging) op welk niveau?
In aparte module ; variabele niet bereikbaar vanuit hoofdprogramma.
Je kan de resultset wel laten invullen in de module door hem daar als RETURN te geven.

toetsindruk: key, keypress, keyrelease
Hier (vb uit calculator) in een aktieve valuebox:

PUBLIC SUB vlbxInput_KeyPress()
  SELECT Key.Code
    CASE Key.Enter
      Message.Info("enter : " & Key.Code, "ok")
    CASE Key.Return
      Message.Info("return : " & Key.Code, "ok")
    CASE ELSE
      Message.Info("other : " & Key.Code, "ok")
  END SELECT
END

MySQL db, verbinding, datarecords ophalen

Afdrukken van resultaten of rapporten

Een eenvoudige manier om af te drukken of te bewaren om op het scherm te bekijken, is html bestanden schrijven vanuit je toepassing. Je kan in de html pagina zelfs het commando om te printen steken, zodat bij openen onmiddellijk de print-keuze opduikt.

Zie ook Gambas Index