Entwickler-Ecke

Sonstiges (Delphi) - Anwender fummelt in "Region- und Spracheinstellung" herum -


Uwe.F. - Di 17.07.07 19:04
Titel: Anwender fummelt in "Region- und Spracheinstellung" herum -
Hi Kollegen!

Habe ein komisches Problem: wenn die Jungz (die Anwender) in der "Region- und Spracheinstellung" über "Anpassen" das Dezimaltrennzeichen umstellen (z.B. von "," auf "."), gehen einige Komponenten nicht mehr (z.B. PBNumEdit).
Wenn dagegen alles auf Englisch steht (also Englisch in Verbindung mit "." als Dezimaltrennzeichen), geht alles. Nur der Mischbetrieb geht halt nicht :(

Hat jemand eine Idee, wie ich eine derartige Manipulation feststellen kann?

Beste Grüße,
Uwe


mkinzler - Di 17.07.07 19:14

Setzte die Konstanten (DecimalSeparator, ThousandSeparator) am Programmstart oder verwende die überladenen Version der Konvertierungsroutinen mit der Übergabe des Formats.


Uwe.F. - Di 17.07.07 19:43

user profile iconmkinzler hat folgendes geschrieben:
Setzte die Konstanten (DecimalSeparator, ThousandSeparator) am Programmstart

Habe ich schon probiert (DecimalSeparator:='.'), ergibt aber den gleichen Effekt wie die Einstellung über "Region- und Spracheinstellung".
Was ich machen könnte wäre ein Zurückstellen der Einstellung mittels DecimalSeparator. Aber woher weiss ich, ob ich Punkt oder Komma einstellen muss?


mkinzler - Di 17.07.07 19:46

Mit der Konstante kannst du nicht die Systemeinstellungen ändern. Sie wird aber von den Routinen von Delphi verwendet.


Uwe.F. - Di 17.07.07 19:54

Würde mir ja reichen (dann geht meine Applikation ja einschließlich der "zickigen" PBNumEdit-Komponente).
Ich muss nur feststellen, dass Ländereinstellung und Dezimaltrennzeichen nicht zueinander passen ...
Und da fehlt mir noch ein guter Tip ;)


mkinzler - Di 17.07.07 19:57

Bei Start des Delphiprogammes werden die Ländereinstellungen des Systems normalerweise in diese Konstanten kopiert. Wäre ja komisch, wenn diese Komponente diese selber noch einmal aus dem System lesen würde.


Lannes - Di 17.07.07 20:05

Hallo,

kleiner Hinweis:
Sie wird nicht nur beim Start der Delphi-Anwendung gesetzt, sondern auch zur Laufzeit, vorrausgesetzt es ist keine Konsolenanwendung.

Ein Auszug aus der Delphi-Hilfe:
Die Anfangswerte der Variablen werden aus der Registrierdatenbank mit der Win32-API-Funktion GetLocaleInfo API ausgelesen. Delphi VCL-Anwendungen (dies sind keine Konsolenanwendungen) aktualisieren diese Formatvariablen automatisch als Reaktion auf WM_WININICHANGE-Botschaften. Über Application.UpdateFormatSettings kann eine Änderung der Systemeinstellungen erlaubt oder verhindert werden. Die Voreinstellung für UpdateFormatSettings lautet True. Wenn diese Eigenschaft auf False gesetzt wird, können die Systemeinstellungen nicht geändert werden.


Uwe.F. - Mi 18.07.07 16:56
Titel: Gelöst :)
So - ich hab's hin bekommen.

Ich hatte erste nur den DecimalSeparator auf "." umgestellt, nicht jedoch den ThousandSeparator (der hatte mich nicht interessiert, weil ich mit dem nicht arbeite). Und genau der stand dann auch auf "." - damit gab's Probleme.
Nachdem ich beide umgestellt hatte (also ThousandSeparator auf ",") ging alles.

@Markus (mkinzler): deinen ersten Beitrag hätte ich genauer lesen sollen :D

Beste Grüße und vielen Dank für die Tips!
Uwe