Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Dezimaltrennzeichen systemweit sofort ändern

  Alt 26. Jul 2006, 13:53
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!
  Mit Zitat antworten Zitat