消息机制高手请帮俺菜鸟一个忙吧,谢谢!
在用数据库导航条 DBNavigator 删除一条记录时,如果把 ConfirmDelete 设为 true 时,在删除记录时系统会自动给出一个英文的删除提示对话框。
俺的问题是:如何把这个对话框换成中文自己定义的形式?请高手留下您宝贵的回复,小弟不胜感激!
[解决办法]
DBNavigator有一个中文版的控件可以下载,应当是在“delphi盒子”什么的网站里有。你找找
[解决办法]
在C++Builder或Delphi中实现中文的删除确认对话框,一般的做法是修改VCL源码,替换掉dbconsts.pas和consts.pas文件中相关的英文字符串为中文,然后再将修改过的VCL源文件添加到工程中,在需要中文化的字符串比较多时用这种方法比较好,不过在编译时需要取消工程选中中的设置(取消Project--> Options--> Packages--> Build with runtime packages前的对钩)。如果需要汉化的地方不太多,完全可以用另外一种方法,简单方便:
在单元文件中随便一个地方插入以下代码:
void __fastcall TDBNavigator::BtnClick(TNavigateBtn Index)
{
if(DataSource != NULL && DataSource-> State != dsInactive)
{
if(!(ComponentState.Contains(csDesigning)) && FBeforeAction != NULL)
FBeforeAction(this, Index);
//
switch(Index)
{
case nbPrior: DataSource-> DataSet-> Prior();
case nbNext: DataSource-> DataSet-> Next();
case nbFirst: DataSource-> DataSet-> First();
case nbLast: DataSource-> DataSet-> Last();
case nbInsert: DataSource-> DataSet-> Insert();
case nbEdit: DataSource-> DataSet-> Edit();
case nbCancel: DataSource-> DataSet-> Cancel();
case nbPost: DataSource-> DataSet-> Post();
case nbRefresh: DataSource-> DataSet-> Refresh();
case nbDelete:
{
if(!FConfirmDelete ||
MessageBox(0, "确定要删除这条记录吗? ",
"确认 ", MB_OKCANCEL | MB_ICONQUESTION) != IDCANCEL)
DataSource-> DataSet-> Delete();
}
}
}
if(!(ComponentState.Contains(csDesigning)) && FOnNavClick != NULL)
FOnNavClick(this, Index);
}
编译,就可以看到效果了。嘿嘿。