Хорошо здесь является то, что я сделал, чтобы решить мою собственную проблему. То, что я хотел сделать, - просто изменить приложение FormatSettings.CurrencyString
и FormatSettings.CurrencyFormat
и сохранить их в безопасности. Я могу сделать это легко, но когда я перейду в «Региональные настройки» и «Валюта», мое приложение вернет его обратно. Я нашел 2 решения:
1.Set Application.UpdateFormatSettings := False;
Однако вы не получите никаких других изменений. Я имею в виду, что ничего не будет обновлено.
2.Это один решил мою проблему. Просто слушайте WM_WININICHANGE
и используйте PostMessage
, чтобы поставить собственное собственное обновление. Вы можете найти полный код ниже:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
const
CM_CHANGEFORMAT = WM_USER + 101;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure ChangeFormatSettings(var Msg: TMessage); message CM_CHANGEFORMAT;
procedure WinIniChange(var Msg: TMessage); message WM_WININICHANGE;
public
{ Public declarations }
end;
var
Form1: TForm1;
MyCurrencyString: string = '€';
MyCurrencyFormat: byte = 3;
implementation
{$R *.dfm}
procedure TForm1.ChangeFormatSettings(var Msg: TMessage);
begin
FormatSettings.CurrencyString := MyCurrencyString;
FormatSettings.CurrencyFormat := MyCurrencyFormat;
end;
procedure TForm1.WinIniChange(var Msg: TMessage);
begin
{
You will receive WM_WININICHANGE when you change regional settings.
Just use PostMessage to update your own settings because your
formatsettings will change after this message.
}
PostMessage(Self.Handle, CM_CHANGEFORMAT, 0, 0);
end;
end.
Спасибо всем, кто пытался мне помочь. Я ценю это.
Мне нужно только сохранить настройки CurrencyString и CurrencyFormat. Остальное должно измениться. Вот почему я не могу убедиться. Я даже могу ждать WM_WININICHANGE, но что, если мне нужно изменить десятичный формат? – blacksun
Вам просто нужно сделать то, что я сказал в ответ –
Когда я создаю fs, он не меняет CurrencyString в моем приложении – blacksun