- efficiëntie van de input
- controle van de input
Door punt “controle” zou je geneigd kunnen zijn meer aparte tekstvelden te gaan gebruiken, waarvan je telkens de invoer controleert. Waarbij de gebruiker, om zijn hele invoer te kunnen doen, dan wel telkens van veld moet veranderen (indien: implementeer TAB mogelijkheid!).
Een tekstgebied (TextArea), dat je eventueel “in de hoogte” vormgeeft, laat toe snel opeenvolgende woorden (zinnen) in te geven, hier vooral een reeks onder elkaar dus.
Ik laat de gebruiker achtereenvolgens de invoer doen, en op het moment dat hij het tekstgebied verlaat, doe ik de controle en geef feedback. Daarvoor worden de regels van het tekstgebied gesplitst in “zinnen”, die elk als één invoer beschouwd worden.
PUBLIC SUB doImportClassValues() DIM sLine AS String DIM hArrStr AS NEW String[] hArrStr = Split(txaeClassNames.Text, gb.NewLine) setState(cAdd) FOR EACH sLine IN hArrStr doCheckSave(sLine) NEXT
Om het toetsenbord niet te moeten verlaten bij het einde van de invoer, tel ik twee achtereenvolgende “volgende regel” (enter/return) als teken om te stoppen: gebruiker heeft een lege regel ingevoerd, en daarna nog één. Dat is het teken voor “klaar”, de verwerking van de invoer wordt gestart.
Om gemakkelijk toegang te geven tot de invoer in het tekstgebied gebruik ik bv een dubbelklik op het tekstgebied.
De teller voor het aantal enters is vooraf hoger gedefinieerd als
PRIVATE $iLastEnter AS integer
De toets voor enter/return wordt zo getest en geteld:
PUBLIC SUB txaeClassNames_KeyPress() ' IF Key.Code = Key.Enter OR Key.Code = Key.Return INC $iLastEnter IF $iLastEnter = 2 doCheckSaveValues(txaeClassNames.Text) $iLastEnter = 0 ENDIF ELSE $iLastEnter = 0 ENDIF ' END