如何使messagedlg函数中的英文信息变成相应的中文信息?(100分)

  • 主题发起人 主题发起人 HongKong4
  • 开始时间 开始时间
H

HongKong4

Unregistered / Unconfirmed
GUEST, unregistred user!
如何修改Delphi自带的库文件(而不是自己建的函数),使该函数实现中文显示功能。
 
修改源代码或者用
try
finally
//自已触发
end;
 
为什么不用 Application.MessageBox (显示中文的)
 
可以,汉化consts.pas文件就行了,步骤是这样。

1.先创建一个工程文件,然后添加consts.pas到这个工程中。
2.将consts.pas文件中相应的英文信息改成汉语。
3.编译该工程,将生成的consts.dcu文件拷到Delphi的Lib目录下覆盖原文件就行了;

以后如果调用Delphi的信息对话框就变成中文的了。
 
HongKong4:
给你一篇文章,有点长哦:

Delphi程序设计中系统提示信息的汉化方法

引用位置:CPCW电子版 > 2000年 > 37期 > 软件世界 > {Delphi程序设计中系统提示信息的汉化}

  对广大的编程爱好者来说,最尴尬的事莫过于在执行自己编写的中文软件时却弹出一条英文的提示信息。本文介绍一种快速简便的方法,对Delphi中的系统提示信息进行汉化。
  在Delphi中,定义系统资源字符串常量的源文件(.pas)都放在了Delphi安装目录的/Source目录下,并按其类别分布在几个子目录中,而其编译后的单元文件(.dcu)则全部放在Delphi安装目录的/Lib目录中,系统编译链接应用程序时会自动从这些单元文件中找到所需的字符串常量将其替换。因此,我们只要将/Source目录下的源文件中的提示信息字符串汉化后,编译成单元文件,再将该单元文件拷贝到/Lib目录中,覆盖原先的单元文件就可以达到汉化的目的。我们需要汉化某条提示信息时,找到包含该提示信息的源文件,将该提示信息字符串汉化就可以了。
  首先,在Delphi中建立一个新的项目,该项目中会自动包含一个名为Unit1的窗体文件,将其从项目中移去。然后从菜单中选择Project→Options,在弹出的Project Options对话框中,选择Directories/Conditionals标签,其中的Unit output directory文本框可以指定项目编译后单元文件的存放路径,在这里填上/Lib目录的完整路径,在笔者的系统中该路径为C:/Program Files/Borland/Delphi5/lib。最后将该项目文件存盘,并取名为HanHua.dpr。至此,这个用于汉化的项目文件就建立起来了,那么,怎么利用这个项目文件开始工作呢?下面,我就用一个实例来说明其使用的方法。
  在用Delphi编制某应用软件时,软件编译后,在运行时出现提示信息“Delete record?”,其汉化的步骤如下:
  1.在Delphi中打开项目文件HanHua.dpr。
  2.选择菜单Search→Find in Files,在弹出的对话框中,在Text to find:文本框里输入要查找的文本,在这里我们输入“Delete record?”,然后在Where组件框里选中Search in directories,并在Search Directory Options中输入/Source目录的完整路径,在我的系统中该路径为C:/Program Files/Borland/Delphi5/Source,最后别忘了将Include subdirectories选中,单击“OK”按钮开始查找。
  3.在代码编辑器底部会新增一个窗口,显示出所有包含你所要查找的文本的文件,在这个例子中,只找到一个文件,显示“C:/Program Files/Borland/Delphi5/Source/Vcl/dbconsts.pas(100):SDeleteRecordQuestion='Delete record?';”,双击可以打开该文件,系统会自动将光标移到“Delete record?”前面,将其改为“删除记录?”。
  4.选择菜单Project→Add to Project,在弹出的对话框中,系统会自动将当前打开的文件(这里为consts.pas.db 和consts.pas)作为默认打开文件,可以直接单击“打开”按钮将其添加到项目中。
  5.编译项目HanHua.dpr。
  最后,我们只要把前面的应用软件重新编译一次,其提示信息“Delete record?”就变成了“删除记录?”。怎么样,用这种方法进行汉化是不是又快又准?不过,因为我们是直接在系统目录中对源文件进行修改,有两个方面还存在一点问题,其一,如果在修改过程中出现错误,就找不到可以参照的源文件了;其二,重装Delphi后,所有的汉化结果就全部没有了。所以我们还需要对上面的汉化过程作一点改进,其实,我们只要在上面第3步和第4步之间增加下面这个步骤就可以了:
  选择菜单File→Save As,在弹出的对话框中,将文件换名存盘到别的目录中。
  在增加上面这个步骤后,前面提到的两个问题都得到了解决:系统源文件没有被修改,修改后的文件都放在了我们自己的目录中;重装Delphi后,只要重新编译项目HanHua.dpr就可以将以前汉化过的系统提示信息重新汉化。
(湖南 黄根明)}
页 首


《电脑报》版权所有,YESKY网站编辑部设计制作发布
 
用MessageBox不也满好的吗?
全是中文的。
 
application.messagebox(const Text, Caption: PChar; Flags: Longint);
 
如果你非要汉化MessageDlg的话,就去修改consts.pas,它存放Dephi的一些常量
在consts.pas中查找以下内容:
"SMsgDlgWarning"

SMsgDlgWarning = 'Warning';
SMsgDlgError = 'Error';
SMsgDlgInformation = 'Information';
SMsgDlgConfirm = 'Confirm';
SMsgDlgYes = '&Yes';
SMsgDlgNo = '&No';
SMsgDlgOK = 'OK';
SMsgDlgCancel = 'Cancel';
SMsgDlgHelp = '&Help';
SMsgDlgHelpNone = 'No help available';
SMsgDlgHelpHelp = 'Help';
SMsgDlgAbort = '&Abort';
SMsgDlgRetry = '&Retry';
SMsgDlgIgnore = '&Ignore';
SMsgDlgAll = '&All';
SMsgDlgNoToAll = 'N&o to All';
SMsgDlgYesToAll = 'Yes to &All';
改成
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)';
然后重新编译Consts.pas,把Consts.duc 拷到delphi的lib子目录下,就完事了。
 
同意only you And Fyx
 
//agree unreal
 
有现成的 const.pas 和 dbconsts.pas 下载的,以前的贴子里有。
 
多人接受答案了。
 
后退
顶部