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.