在应用程序启动时覆盖区域设置

时间:2019-09-25 08:29:04

标签: delphi delphi-10.2-tokyo

我想通过FormatSettings全局变量强制我的应用程序始终使用西班牙语区域设置,但是应用程序将忽略这些设置。你知道我错过了吗?。

program TestProject;

uses
  Vcl.Forms,
  SysUtils,
  Rutinas in 'Rutinas.pas',
  Conexion in 'Conexion.pas' {dmConexion: TDataModule},
  MainForm in 'MainForm.pas' {frmMainForm};

{$R *.res}

begin
  Application.Initialize;

  FormatSettings := TFormatSettings.Create('es-ES');

  Application.MainFormOnTaskbar := True;
  Application.Title := Application_Name;
  Application.CreateForm(TdmConexion, dmConexion);
  Application.CreateForm(TfrmMainForm, frmMainForm);
  Application.Run;
end.

谢谢。

PS:我知道不建议使用FormatSettings,因为它不是线程安全的,但在这里应该不成问题,因为我只在应用程序启动时更改过一次,而在其他任何时候我都需要自定义转换一个本地TFormatSettings变量。

1 个答案:

答案 0 :(得分:3)

很抱歉,问题不在Delphi中,而是在我用来显示数据的DevExpress控件上。

DevExpress使用自己的格式设置:https://www.devexpress.com/Support/Center/Question/Details/A517/how-to-use-custom-formats-for-editors

现在这可以正常工作:

program TestProject;

uses
  Vcl.Forms,
  SysUtils,
  cxFormats,
  Rutinas in 'Rutinas.pas',
  Conexion in 'Conexion.pas' {dmConexion: TDataModule},
  MainForm in 'MainForm.pas' {frmMainForm};

{$R *.res}

begin
  Application.Initialize;

  FormatSettings := TFormatSettings.Create('es-ES');
  Application.UpdateFormatSettings := False;
  cxFormatController.BeginUpdate;
  cxFormatController.UseDelphiDateTimeFormats := True;
  cxFormatController.EndUpdate;
  cxFormatController.GetFormats;
  cxFormatController.NotifyListeners;

  Application.MainFormOnTaskbar := True;
  Application.Title := Application_Name;
  Application.CreateForm(TdmConexion, dmConexion);
  Application.CreateForm(TfrmMainForm, frmMainForm);
  Application.Run;
end.