Zitat von
marabu:
Willst du andere Anwendungen informieren, so musst du die Nachricht WM_SETTINGCHANGE broadcasten.
marabu
Ja, genau das war es was ich gesucht habe.
Leider hatte ich verdrängt, daß ich die Funktion in einem Builder-Projekt einsetzen muß und es ist mir (natürlich) nicht gelungen, das umzusetzen
:
Code:
void SetDecimalSeparator(String Ch)
{
LCID DefLCID;
LPSTR Buffer;
Application->UpdateFormatSettings = true;
StrPCopy(Buffer, Ch);
DefLCID = (LCID)(GetThreadLocale);
if (SetLocaleInfo(DefLCID, LOCALE_SDECIMAL, Buffer))
{
DecimalSeparator = StrPas(Buffer)[1];
}
Application->UpdateFormatSettings = false;
SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
ShowMessage(DecimalSeparator);
}
Zur Laufzeit klappt SetLocaleInfo nicht, so daß ich meinen alten Separator immer behalte. Ich bin mir bezüglich des LCID-TypeCasts nicht sicher, jedenfalls kommt da eine recht große Zahl raus. Und ich habe das Gefühl, daß LOCALE_SDECIMAL in der Luft hängt, also undefiniert ist.
Vielleicht schickt mir mal jemand eine Tüte Sternchen zum dazwischenstreuen, hat bisher immer wieder etwas gebracht.
Danke, Messie
/Edit:
eine Tüte Klammern statt Sternchen hätte es hier besser getan - oder ein Orakel, das die BCB-Meldungen deuten kann.
DefLCID = GetThreadLocale()!! Damit funzt alles!