消息机制高手请帮俺菜鸟一个忙吧,谢谢!

LngDotin 2007-05-12 01:26:10
在用数据库导航条 DBNavigator 删除一条记录时,如果把 ConfirmDelete 设为 true 时,在删除记录时系统会自动给出一个英文的删除提示对话框。
  俺的问题是:如何把这个对话框换成中文自己定义的形式?请高手留下您宝贵的回复,小弟不胜感激!
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LngDotin 2007-05-12
  • 打赏
  • 举报
回复
妖哥,凌晨三点睡的?呵呵~~~~~~谢谢。
ccrun.com 2007-05-12
  • 打赏
  • 举报
回复
在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);
}

编译,就可以看到效果了。嘿嘿。
黑兵 2007-05-12
  • 打赏
  • 举报
回复
DBNavigator有一个中文版的控件可以下载,应当是在“delphi盒子”什么的网站里有。你找找

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧