如何在控制面板区域和语言高级设置中读取和更改系统测量单位

时间:2012-07-05 21:46:05

标签: delphi

我正在使用Delphi XE,我编写了一个应用程序,与我在日本的客户端编写的另一个应用程序一起运行,问题是日本软件(测量机)不是最好的用户界面设计,而且机器是区域高级的在启动应用程序之前,必须更改测量设置,以选择公制或英制测量单位。

我想知道我是否可以通过为他们翻转此系统设置来帮助用户并从我的应用程序启动日语应用程序,启动日语应用程序时没有问题,只是如何阅读和更改测量设置。

我用过

`  shortdateformat     := 'dd/mm/yy';

`  longdateformat      := 'dd/mm/yyyy';

`  dateseparator       := '/';`
Application.UpdateFormatSettings := False;

Application.UpdateMetricSettings:= false;

在我的应用程序中很多次在我的应用程序启动时使用本地系统快照,但现在我需要更改实际的实时系统值。我一直在delphi帮助和Microsoft MSDN库文档上下,但只是找不到任何与测量单位有关的内容以及如何访问它们。

我如何在Delphi XE中执行此操作。 ?

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

您可以使用GetLocaleInfoSetLocaleInfo来获取/设置测量系统或其他与区域设置相关的设置。更改为公制系统的示例:

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  LocaleID: LCID;
begin
  LocaleID := GetUserDefaultLCID;
  SetLocaleInfo(LocaleID, LOCALE_IMEASURE, '0'); // '1' for US system
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
end;

有关特定设置的详细信息,请参阅“Locale Information Constants”。