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

use*_*844 3 delphi

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

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

我用过

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

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

`  dateseparator       := '/';`
Application.UpdateFormatSettings := False;
Run Code Online (Sandbox Code Playgroud)

Application.UpdateMetricSettings:= false;

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

我怎么能在Delphi XE中做到这一点.?

谢谢你的帮助

Ser*_*yuz 5

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

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;
Run Code Online (Sandbox Code Playgroud)

有关特定设置的详细信息,请参阅" 区域设置信息常量 ".