|
Tip 108 -
Interactieve invulformulieren maken
Deze keer stelt iemand de volgende
vraag:
"In vragenlijsten is het soms
interessant om - bijvoorbeeld afhankelijk van het geslacht -
verschillende vragen te laten verschijnen in een bepaalde
lay-out, en natuurlijk de daarbijhorende velden. Is het dus
mogelijk om bepaalde velden in een layout te doen
verschijnen of verdwijnen in functie van de waarde van een
bepaald ander veld?"
Dat kan natuurlijk, en daar bestaat
een tamelijk tricky methode voor. Maar er is ook
een gemakkelijke manier: we laten de gegevens invullen, niet
op één, maar op verschillende schermen die in
elkaar overlopen via een knop die we "Verder"
noemen, of zoiets. Deze knop voert natuurlijk niet
gewoon naar het volgende scherm: hij doet veel
meer. Hij activeert namelijk een script dat op zijn
beurt een aantal controles uitvoert, bijvoorbeeld of alle
gevraagde velden ingevuld zijn, enzovoort. Het script
controleert ook - om te antwoorden op de vraag van onze
correspondent - of en hoe het veld Geslacht ingevuld
is. Afhankelijk van het resultaat wordt de gebruiker
naar deze of gene lay-out gestuurd, tot alle gegevens
ingevuld zijn.
Enkele voorbeeldjes:
Om te controleren of een veld
ingevuld is:
If(IsEmpty(Naam)
ShowMessage [U hebt de naam niet
ingevuld][OK]
Halt Script
EndIf
Deze Halt Script
dient uiteraard om de hele procedure stil te leggen en de
gebruiker te dwingen het veld in te vullen: anders kan hij
het scherm niet verlaten.
Om naar verschillende lay-outs te
gaan afhankelijk van wat ingevuld werd:
If(Geslacht) =
"Mannelijk"
GoTo Layout(Invulscherm2M)
Else
If(Geslacht) = "Vrouwelijk"
GoTo Layout(Invulscherm2V)
EndIf
Endif
Uiteraard moeten we er hier wel voor
zorgen dat de gebruiker niet zelf van de ene lay-out naar de
andere kan gaan via het statuspaneel links: ofwel moeten we
dat verbergen, ofwel moeten we de lay-out-namen uit het
lijstje houden.
|