You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Delphi 2007中TMonthCalendar控件‘Today’文本本地化失效问题?

解决Delphi 2007中TMonthCalendar佛兰芒语本地化问题

TMonthCalendar是封装的Windows原生控件,它的“Today”文本直接读取系统或控件的区域设置,Localizer工具通常无法直接覆盖这类原生控件的内置文本,可尝试以下几种方案:

方案1:通过API强制设置控件区域语言

在窗体初始化阶段,调用Windows API将TMonthCalendar的区域设置为佛兰芒语(比利时):

uses
  Windows, CommCtrl;

procedure TForm1.FormCreate(Sender: TObject);
var
  LCID: LCID;
begin
  // 生成佛兰芒语(比利时)对应的LCID
  LCID := MAKELCID(MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH_BELGIAN), SORT_DEFAULT);
  // 发送MCM_SETLOCALE消息切换控件区域
  SendMessage(MonthCalendar1.Handle, MCM_SETLOCALE, WPARAM(LCID), 0);
  // 刷新控件生效
  MonthCalendar1.Invalidate;
end;

需确保项目引用CommCtrl单元,该方法会让控件使用指定区域的原生文本,替换默认法语内容。

方案2:子类化控件替换文本(API失效时)

若系统未安装nl-BE语言包或API调用无效,可通过子类化控件直接替换目标文本:

type
  TForm1 = class(TForm)
    MonthCalendar1: TMonthCalendar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FOldWndProc: TWndMethod;
    procedure NewWndProc(var Message: TMessage);
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldWndProc := MonthCalendar1.WindowProc;
  MonthCalendar1.WindowProc := NewWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MonthCalendar1.WindowProc := FOldWndProc;
end;

procedure TForm1.NewWndProc(var Message: TMessage);
const
  TODAY_TEXT = 'Vandaag'; // 佛兰芒语“Today”
begin
  if Message.Msg = WM_NOTIFY then
  begin
    with PNMHDR(Message.LParam)^ do
    begin
      // 查找显示法语“aujourd'hui”的静态子控件并替换文本
      var hStatic: HWND;
      hStatic := FindWindowEx(MonthCalendar1.Handle, 0, 'Static', 'aujourd''hui');
      if hStatic <> 0 then
        SetWindowText(hStatic, TODAY_TEXT);
    end;
  end;
  FOldWndProc(Message);
end;

该方法直接定位控件内的静态文本元素,替换为佛兰芒语内容。

方案3:检查系统区域设置

确保Windows系统已安装佛兰芒语(比利时)语言包,并调整非Unicode程序语言设置:

  • 打开控制面板→区域和语言选项→高级标签,将“非Unicode程序的语言”设置为“荷兰语(比利时)”
  • 重启Delphi及应用程序,控件可能自动读取系统区域文本

注:Delphi 2007对非英语区域原生控件支持有限,优先尝试方案1,这是最直接的原生解决方案。

内容的提问来源于stack exchange,提问作者Nomi Fenoglio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:54:59