如果你使用messagedlg(对showmessage也适用)可以汉化定义按钮caption的常量,具体操作步骤如下:
1. 打开文件consts.pas(在Delphi安装目录的/source/vcl下)
2.
将以下资源字符串常量的值进行改动:
SMsgDlgWarning = '警告';
SMsgDlgError = '错误';
SMsgDlgInformation = '信息';
SMsgDlgConfirm = '确认';
SMsgDlgYes = '(&Y)是';
SMsgDlgNo = '(&N)否';
SMsgDlgOK = '确定';
SMsgDlgCancel = '放弃';
SMsgDlgHelp = '(&H)帮助';
SMsgDlgHelpNone = '无效的帮助';
SMsgDlgHelpHelp = '帮助';
SMsgDlgAbort = '(&A)放弃';
SMsgDlgRetry = '(&R)重试';
SMsgDlgIgnore = '(&I)忽略';
SMsgDlgAll = '(&A)全部';
SMsgDlgNoToAll = '(&o)全不';
SMsgDlgYesToAll = '(&A)全是';
----
经过这样改动后,对应按钮的热键仍然可以使用。
3.打开文件dialogs.pas(在Delphi安装目录的/source/vcl下)
4.查到ButtonCaptions:
把
ButtonCaptions: array[TMsgDlgBtn] of Pointer = (
@SMsgDlgYes, @SMsgDlgNo, @SMsgDlgOK, @SMsgDlgCancel,
@SMsgDlgAbort,@SMsgDlgRetry, @SMsgDlgIgnore, @SMsgDlgAll,
@SMsgDlgNoToAll, @SMsgDlgYesToAll, @SMsgDlgHelp);
改为
ButtonCaptions: array[TMsgDlgBtn] of string = (
'是',
'否',
'确定',
'取消',
'退出','重试',
'跳过',
'所有',
'全不',
'YesToAll', '帮助');
把
LoadResString(ButtonCaptions[B]) 改为ButtonCaptions[B]
(注意共有二处,因为上面已经将指针类型改为String,所以这里直接用ButtonCaptions[B] )
5. 修改后编译生成dialog.dcu、consts.dcu文件。(如何编译请参照本博客delphi技巧13)
6. 将dialog.dcu、consts.dcu文件拷贝到../delphi6/lib目录下。