2012-07-05 55 views
3

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

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

我已经使用

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

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

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

Application.UpdateMetricSettings:= FALSE;

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

我该如何在Delphi XE中做到这一点。 ?

感谢您的帮助

+0

'SetLocaleInfo'与LOCALE_IMEASURE,LOCALE_SSHORTDATE,LOCALE_SLONGDATE等..? – 2012-07-05 22:00:12

+0

Brilliant..anychance你可能可以告诉我将LOCALE_IMEASURE设置为公制的结构? – user1503844 2012-07-05 22:06:13

回答

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”。

+0

非常感谢我明天会试试这个,23:20 ...我离开家。 – user1503844 2012-07-05 22:19:40

+0

@user - 它是如何去的? – 2012-07-10 18:45:50

相关问题