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