12:如何让showmessage和messagedlg按钮中文?
这个内容,比较长,所以独立出来,不放在delphi技巧中。
阿佛提示:最便捷的方法是建议你使用messagebox代替。
如果你用
showmessage(),
不用修改源程序,也能达到将文字改为汉字的效果。
你可以这样:
1
。编译程序,关闭程序,选择
Project|Languages|Add..
2.
一步一步,直到出现
Translation Manager
窗口
3
。展开左边窗口树控件定位到
Resource Scripts
,修改右边窗口内容
4
。找到
ID
号为
consts_SMsgDlgOk
的内容将
’OK‘
改为
’
确定
‘
保存结果关闭窗口
5
。
File|Save all
6.
重新编译,
OK
!(此方法,摘自csdn,留给有兴趣的朋友验证)
---------------------------------------------------------------------------------------------------------------------------------------------
如果你使用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目录下。