Dit is iets dat ik nog nooit ben tegengekomen en waar ik, tot op heden, geen weet van had, maar: er bestaan landen die (standaard) andere getallen gebruiken dan de doorgaans gebruikelijke Arabische karakters.
En dan heb ik het niet over de oude (en al heel erg dode) Romeinen met hun I, V, C, D en X, maar over mensen in landen die nog bestaan.
Vorige week heb ik de applicatie van het bedrijf waarvoor ik werk "Locale"-proof gemaakt.
Dat wil zeggen dat de applicatie onafhankelijk van de "Regional settings" instellingen van Windows een eigen instelling (instelbaar per gebruiker) kan aannemen.
Dit is nodig omdat we onze applicatie ook via RDP willen gaan aanbieden, waarbij de gebruiker dus inlogd op een server van ons, en gewoon lekker met zijn eigen formaat van getallen en datum en tijd kan blijven werken ongeacht de instellingen van de server.
Tot zover geen probleem: ik loop (na veel testen en herschrijven) nergens meer tegenaan en alles werkt als een tierelier.
Tot het moment dat ik het resultaat aan onze tester overgeef, inclusief tips over hoe je de code potentieel over de zeik zou kunnen helpen.
En ja hoor: de tester doet weer, heel irritant altijd, een "Grappige ontdekking": de code en formaten werken perfect, maar er blijken landen te zijn die andere cijfers hebben dan normaal en ik weet niet hoe ik deze "Feature" kan tegengaan.
Om het een en andere te verduidelijken heb ik een klein testprojectje gemaakt:
In de DPR wordt Application.UpdateFormatSettings op False gezet om aan te geven dat ik niet wil dat FormatSettings worden aangepast wanneer dit in Windows gebeurt.
Dit staat eigenlijk los van het probleem, maar het viel bij dit onderwerp op, dus heb het in het testproject meegenomen.
Wanneer je regional settings van Windows tijdens het starten gewoon op Nederlands (Nederland) oid zet, dan ziet de form er als boven uit.
Druk nu echter op de "Regional formats"-knop (dit opent het formaatinstellingen scherm van Windows) en stel een taal in dat andere karakters gebruikt voor de getallen, zoals "Khmer (Cambodia)" of "Dzongkha (Bhutan)"
Het scherm van de testapplicatie ziet er dan ineens zo uit:
Bij de TSpinEdit moet je even met je muis over de control heen voordat dit zichtbaar wordt.
Bovenstaande code is getest op nog een oude Windows 7 installatie, maar ik kwam het probleem oorsprokelijk tegen op Windows 10; de Windows versie is dus niet relevant (al kent Windows 7 minder regions, dan Windows 10).
Is er iemand die een manier weet om niet alleen de formatsettings van Windows te negeren, maar ook de karakterset van getallen?
Ik heb het idee dat dit door Windows zelf (omdat bijna alles afgeleid is van normale Windows controls) gedaan wordt, maar hoop op een mirakel.
Help!
Bookmarks