Modellen als invulformulieren (X-Forms)
X-Forms zijn modellen waarin Windows bedieningselementen
(controls) zoals knoppen, keuzevakjes, tekstvakken, keuzelijsten etc. worden toegepast met
het doel om invulformulieren of andere interactieve layouts te genereren. Bestaande
modellen kunnen eenvoudig omgezet worden naar X-Forms. Hiertoe dient de opdracht: Use_As_Input_Form
in het model te worden opgenomen en dienen de gewenste controls te worden gedeclareerd
m.b.v. de Control-declaratie. In het
geval dat b.v. een tekstvak, een keuzelijst, een annuleer- en een okeknop in de uitvoer
moet worden opgenomen dan kan de volgende declaratie worden gehanteerd: Control
EditCtl, DropdownCtl, AnnuleerCtl, OkeCtl. De volgorde waarin de controls zijn
gedeclareerd bepaald tevens de Tab-volgorde. D.w.z. dat door het indrukken van de Tab-toets
of Shift+Tab-toets de focus verplaatst naar de volgende respectievelijk
vorige control in volgorde van declaratie.
Een control wordt in de layout zichtbaar gemaakt door de naam van de control tussen rechte
haken te plaatsen in de tekstblokken van een model (b.v. de referentie: [DropdownCtl]).
Bij de weergave van een control wordt hetzelfde font (lettertype, grootte, cursief, vet
etc.) toegepast als waarmee de tekst van de referentie is opgemaakt. Vervolgens kan met de
functie SetControl de ControlClass, ControlStyles en de dimensies worden
vastgelegd. Elke ControlClass kent zijn eigen ControlStyles
naast een aantal standaard styles. De CC_BUTTON ControlClass kent b.v. de
BS_DEFPUSHBUTTON stijl. Met deze stijl wordt een drukknop weergegeven welke herkenbaar is
aan een dikkere omranding dan b.v. de BS_PUSHBUTTON stijl. Verder heeft het indrukken van
de Enter-toets in een willekeurige control van een formulier hetzelfde
effect als een muisklik op de drukknop met de BS_DEFPUSHBUTTON stijl.
Een control kan bij het optreden van een bepaalde gebeurtenis (ControlEvent) een bericht
naar het model sturen. De berichten kunnen per control m.b.v. de
Subroutine-declaratie
worden afgehandeld. De naam van de Subroutine is gelijk aan de naam van de betreffende
control gevolgd door de naam van de ControlEvent. Elke ControlClass kent zijn eigen ControlEvents of gebeurtenissen met
bijbehorende namen. De _OnInit gebeurtenis is voor elke control
gedefinieerd en vindt plaats zodra een control in de layout is gecreeerd. Op de _OnInit
gebeurtenis kan worden gereageerd door een Subroutine te declareren. B.v.: Subroutine
DropdownCtl_OnInit .. EndSub. Controls uit b.v. de CC_EDIT
ControlClass kennen de _OnChange gebeurtenis welke plaatsvindt zodra de
tekst in een tekstvak is gewijzigd. Indien deze gebeurtenis plaatsvindt bij een control
met de naam EditCtl kan hierop gereageerd worden met de declaratie: Subroutine
EditCtl_OnChange .. EndSub.
Naast ControlEvents zijn er nog algemene ModelEvents waarmee gerageerd kan worden op gebeurtenissen die het model zelf betreffen
Verder kunnen met de ControlMessage-functie
ControlMessages naar een control verstuurd
worden. Met deze berichten kunnen opdrachten worden verstuurd of kan informatie worden
opgevraagd. Elke ControlClass kent zijn eigen berichten naast een aantal standaard
berichten.
Nadat een control in de uitvoer is gecreeerd dan is deze nog niet geactiveerd (disabled)
zodat er geen invoer van de gebruiker kan worden ontvangen. Zodra de uitvoer of het
formulier volledig is opgebouwd worden alle controls automatisch geactiveerd (enabled).
Hiervan kan afgeweken door de ControlEnable-functie toe te passen in b.v.
de _OnInit gebeurtenis. Op deze wijze kunnen controls direct beschikbaar
voor invoer worden gemaakt zonder dat gewacht hoeft te worden totdat de uitvoer volledig
is opgemaakt.