Faq/Base/134
TDF LibreOffice Document Liberation Project Blogs gemeenschap Weblate Nextcloud Redmine Ask LibreOffice Doneren
Hoe kan ik een veld opmaken met hoofdletters / kleine letters?
Dit is de manier om van een veld "Achternaam" alle letters hoofdletters te maken en van het veld "Voornaam" alleen de eerste letter.
Dit kan op twee manieren: met een masker of met een macro.
Ongeacht de methode is het nuttig om de relevante velden in de tabel te definiëren met het formaat "Text [VARCHAR_IGNORECASE]". De zoek en selecties van queries zijn gemakkelijker omdat ze hoofdletterongevoelig worden.
Met een masker
In het invoerformulier kies het besturingselement "Masker" / "Patroon". Dit is een invoerveld met twee voor deze taak relevante eigenschappen.
Invoer masker | Plaats de tekencodes, niet de in te voeren gegevens: een code = een teken[1]
Elke code op een positie bepaalt wat aan invoer op die positie zal worden geaccepteerd. |
Veld validatie | Ja: Alleen de als geldig gespecificeerde tekens worden geaccepteerd
Nee: Ongeldige tekens worden verwijderd bij het verlaten van het invoerveld |
Om het veld "Achternaam" automatisch naar hoofdletters om te zetten, gebruik de code "X":
- Alle tekens zijn toegestaan (ook cijfers en leestekens)
- Automatische conversie van kleiner letters naar hoofdletters
- Het aantal toegestane tekens wordt door het aantal X-tekens bepaald
- Veld validatie: Ja
Om alleen de eerst letter van de "Voornaam" een hoofdletter te maken, gebruikt een keer de code "A" gevolgd door een "x" voor elke volgende positie:
- Bij een "A" kan alleen een letter worden ingevoerd, die dan naar een hoofdletter wordt omgezet.
- Bij een "x" is elke invoer toegestaan.
Met een macro
Aan de gebeurtenis "Voor het bijwerken" van een tekstveld kan een macro worden gekoppeld. Deze macro wordt dan uitgevoerd voordat er gegevens worden opgeslagen.
We kunnen alles wijzigen dat is ingevoerd met conversie tussen kleine letters en hoofdletters en omgekeerd.
Hieronder staat de code voor de twee Python procedures "PysCapitaliseAll" en "PysCapitaliseOne" die gekoppeld zijn aan resp. het veld "Achternaam" en het veld "Voornaam".
Beide procedures hebben als parameter de inhoud van het veld. Die inhoud wordt door de macro gewijzigd.
- PysCapitaliseAll zet alle kleine letters om in hoofdletters.
- PysCapitaliseOne maakt van een letter op positie 1 een hoofdletter en wijzigt andere letter naar kleine letters.
option explicit
sub PysCapitaliseOne(PysEvent)
PysEvent.Source.text = Ucase(left(PysEvent.Source.text, 1)) & Lcase(mid(PysEvent.Source.text, 2))
end sub
sub PysCapitaliseAll(PysEvent)
PysEvent.Source.text = Ucase(PysEvent.Source.text)
end sub
NB: