Delphi: как переопределить ShortDateFormat? - PullRequest
4 голосов
/ 25 июня 2010

Я понимаю, что ShortDateFormat переменная представляет предпочтения пользователя.

Я также понимаю, что если настройки изменятся, Delphi автоматически обновит переменную ShortDateFormat с настройками пользователя.

mm/dd/yy

У меня есть клиент, который хочет, чтобы все "короткие даты" отображались в определенном виде, но они не хотят, чтобы их настройки Windows.

mm/dd/yyyy

Каков хороший способ глобально в моем приложении изменить переменную ShortDateFormat, учитывая, что она может быть сброшена в любое время?

Примечание: пример маски формата даты в кодовом формате включен, чтобы сделать сообщение более визуально привлекательным

Ответы [ 2 ]

9 голосов
/ 25 июня 2010

Имейте свои собственные FormatSettings и используйте их явно со всеми подпрограммами форматирования вместо использования неявной версии.

Он также обладает тем преимуществом, что обеспечивает безопасность потоков.

function DateTimeToStr(const DateTime: TDateTime): string;

function DateTimeToStr(const DateTime: TDateTime; const FormatSettings: TFormatSettings): string;

Обновление : чтобы приложение не реагировало на изменения локали, вы можете изменить Application.UpdateFormatSettings на False.
По умолчанию True в TApplication.Create.
Но будьте осторожны, это не на 100% пуленепробиваемый для всех настроек, так как некоторые процедуры получают непосредственно ThreadLocale.

8 голосов
/ 25 июня 2010

Я согласен с Франсуа, но хочу упомянуть еще одну опцию: установите

Application.UpdateFormatSettings := False;

, чтобы запретить автоматическое обновление настроек формата при глобальном изменении их в Windows.

...