还有 就是 : If Application.MessageBox('你確定要删除'+trim(combobox1.Text)+'号记录?', '删除提示', MB_YESNO + MB_ICONQUESTION) = IDYES then 这句运行为什么报错[Error] Unit3.pas(306): Incompatible types: 'String' and 'PAnsiChar'而在 If messagedlg('你确定要删除'+trim(combobox1.Text)+'号记录?',Mtconfirmation,[Mbyes,Mbno],0)=Mryes then 可以正常运行 这是什么原因? 简要解释下
事实正是这样。 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 的内部系统资源,甚至还可以设想做个汉化包什么的,那就要看各位的功夫了。
'提示', MB_OKCANCEL + MB_ICONQUESTION);
'删除提示', MB_YESNO + MB_ICONQUESTION) = IDYES then 这句运行为什么报错[Error] Unit3.pas(306): Incompatible types: 'String' and 'PAnsiChar'而在 If messagedlg('你确定要删除'+trim(combobox1.Text)+'号记录?',Mtconfirmation,[Mbyes,Mbno],0)=Mryes then 可以正常运行 这是什么原因? 简要解释下