Delphi 的 InputBox 输入对话框,其窗口标题、提示信息和默认输入值都可以使用汉字字符串,惟独它上面的两个按钮“OK”“Cancle”不能让用户进行自行设置。看来这要从 Delphi 系统本身来下手了,要对 Delphi 的系统内部资源进行汉化。
事实正是这样。 Delphi 的许多系统字符串是在 consts.pas 文件中进行定义的。打开 \Program Files\Borland\Delphi5\Source\Vcl 路径下的 consts.pas 文件,找到
SMsgDlgOK = 'OK';
SMsgDlgCancel = 'Cancel';
两条语句,把其中的'OK' 和'Cancel'分别修改为汉字'确定'、'取消',保存。然后新建一个工程,加入 consts.pas 文件,编译工程,会生成一个 consts.dcu 文件,把该 consts.dcu 文件拷贝到 \Program Files\Borland\Delphi5\lib 路径下,OK,您下一次再使用 InputBox 语句,就会显示“确定”“取消”按钮了!
但是问题还没完。你会发现 InputBox 对话框上的“确定”“取消”字体非常难看。为了得到更好的效果,我们还要修改另一个 Delphi 的系统文件 Graphics.pas。该文件也在 \Program Files\Borland\Delphi5\Source\Vcl 路径下,我们需要在其中的 InitDefFontData 过程中添加几句代码,使 Delphi 对 GB2312_CHARSET 字符集进行处理。以下显示了 InitDefFontData 过程及我们添加的代码:
procedure InitDefFontData;
var
Charset: TFontCharset;
begin
DefFontData.Height := -MulDiv(8, ScreenLogPixels, 72);
if not SysLocale.FarEast then Exit;
Charset := GetDefFontCharset;
case Charset of
SHIFTJIS_CHARSET:
begin
DefFontData.Name := '俵俽 俹僑僔僢僋';
DefFontData.Height := -MulDiv(9, ScreenLogPixels, 72);
DefFontData.CharSet := CharSet;
end;
//我们加入的语句
GB2312_CHARSET:
begin
DefFontData.Name :='';
DefFontData.Height :=-MulDiv(9,ScreenLogPixels,72);
DefFontData.Charset:=CharSet;
end;
//结束
end;
end;
经过以上两步修改,我们就对 InputBox 对话框进行了彻底的汉化。当然我们不能就此罢休,顺着这条思路,我们还可以汉化大量的 Delphi 的内部系统资源,甚至还可以设想做个汉化包什么的,那就要看各位的功夫了。笔者把自己汉化的一些资料放在了网站 http://helps100000.yeah.net 上,大家可以去下载,您也可以发信到 zhangking@263.net 让我分享您的成果。
张庆 Email: zhangking@263.net
Bp: 029-95808 呼 822686 QQ: 9365822
西安市雁塔区翠花南路瑞禾村副 30 号 710061
http://helps100000.yeah.net 2002.4.1
|
|