FileMaker - Tip 108

 

Klik op om terug te keren naar het selectiemenu.

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.

 
avd@avd-ci.be - contactformulier