代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

德尔菲:如何覆盖shortdateformat?

  •  4
  • Ian Boyd  · 技术社区  · 14 年前

    我意识到 ShortDateFormat 变量表示用户的首选项。

    我也意识到如果设置改变,Delphi会自动刷新 短格式 用户设置的变量。

    mm/dd/yy
    

    我有一个客户希望所有的“短日期”都显示在一个特定的位置,但他们不想显示他们的Windows首选项。

    mm/dd/yyyy
    

    在我的应用程序中,更改 短格式 变量,考虑到它可以随时重置?

    注: 包含代码格式的示例日期格式掩码,使日志更具视觉吸引力

    2 回复  |  直到 14 年前
        1
  •  8
  •   Ondrej Kelle    14 年前

    我同意弗朗索瓦的观点,但我想提出另一个选择:设置

    Application.UpdateFormatSettings := False;
    

    防止在Windows中全局更改格式设置时自动更新格式设置。

        2
  •  9
  •   Francesca    14 年前

    拥有自己的格式设置,并将其明确地用于所有格式例程,而不是使用隐式版本。

    它还具有线程安全的优点。

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

    更新 :为了避免应用程序对区域设置更改做出响应,可以更改 Application.UpdateFormatSettings False .
    默认为 True 在里面 TApplication.Create .
    但要注意,这并不是所有设置的100%防弹,因为有些例程直接获得线程区域设置。