Ich bin bislang nicht dazu gekommen und habe es so gelassen, wie es momentan ist:
- Das VCL-Touchkeyboard zeigt an, was auch auf der physischen Tastatur ist
- Es wird auch eingegeben, was auf den Tasten steht. Ein Franzose gibt also einen Punkt ein.
- Das Programm prüft einfach auf alle bekannten Trennzeichen. Wenn bei einem ein vernünftiger Wert rauskommt dann ist das Programm zufrieden
Also so:
Delphi-Quellcode:
function TFloatInputPopup.tryParse(out value: Single): Boolean;
const
knownSeparators: TArray<Char> = ['٫', ',', '.']; // 1st = Momayyez
var
testedSeparator: Char;
formatSettings: TFormatSettings;
begin
Result := False;
formatSettings := TFormatSettings.Create(LOCALE_INVARIANT);
for testedSeparator in knownSeparators do begin
formatSettings.DecimalSeparator := testedSeparator;
Result := Result or Single.TryParse(inputEdit.Text, value, formatSettings);
if Result then Break;
end;
end;
Und ja, im Endeffekt ist das die billigste Methode. Und beinhaltet noch gar nicht die Arbeit welche du dir mit dem TouchKeyboard gemacht hast