[求助]系统自动弹出的对话框,要怎么把里面的(确定,取消)按钮改成英文?

xinxin26 2010-01-22 10:27:23
系统自动弹出的对话框,要怎么把里面的(确定,取消)按钮改成英文?
这个对话框的语句是这种类型的,Application->MessageBox("Storing Complete!"," Complete",MB_OK+MB_ICONINFORMATION);Application->MessageBox("Delete Finish!","Finish",MB_ICONINFORMATION); 我不知道要怎么改,PS我是菜鸟,现在要把一个用C++ BUILDER6.0写的的软件的界面全部改成英文版的,问了别人也不懂。
...全文
901 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxin26 2010-01-23
  • 打赏
  • 举报
回复
你好ccrun,我还有一个问题,就是弹出对话框要显示的信息比较长,还包括一个时间范围,而这个世界范围是根据选择而不同的,用MessageDlg(DeleteMessage.c_str(),mtWarning, mbOKCancel,0)==mrOk这种方法是很容易实现的,但是用你那种方法我就不知道怎么把选择的世界范围放进去了?我把代码贴出来再麻烦你看一下。

void __fastcall TForm8::Button1Click(TObject *Sender)
{
AnsiString DeleteMessage;
DeleteMessage="Are You Sure You Want To Delete ";
switch(CallType)
{
case 1:
DeleteMessage+="The Record Of The Missed Calls ";
break;
case 2:
DeleteMessage+="The Record Of The Noanswer Calls ";
break;
case 3:
DeleteMessage+="The Record Of Incoming Calls ";
break;
case 4:
DeleteMessage+="The Record Of Dialing Calls ";
break;
}

DeleteMessage+="From ";
AnsiString TimeTemp=ShortDateFormat;
ShortDateFormat="yyyy-mm-dd";
DeleteMessage+=DateToStr(DateTimePicker1->Date);
DeleteMessage+=" TO ";
DeleteMessage+=DateToStr(DateTimePicker2->Date);
ShortDateFormat=TimeTemp;
DeleteMessage+=" ?";
//if((Application->MessageBox(DeleteMessage.c_str(),"Warning",MB_OKCANCEL+MB_ICONQUESTION))==1)
if(MessageDlg(DeleteMessage.c_str(),mtWarning, mbOKCancel,0)==mrOk)
//if(CrnShowMessage(TEXT("MessageBox(DeleteMessage.c_str()"), TEXT("Warning"), mtInformation, TMsgDlgButtons() << mbOK << mbCancel))
{
DataModule35->Exe_Query->Close();
DataModule35->Exe_Query->SQL->Clear();
DataModule35->Exe_Query->SQL->Add("Delete from CallRecord where CallType = :cCallType and CallTime >= :StartDate and CallTime <= :EndDate");
DataModule35->Exe_Query->Parameters->ParamByName("StartDate")->Value = DateTimePicker1->Date;
DataModule35->Exe_Query->Parameters->ParamByName("EndDate")->Value = DateTimePicker2->Date+1;
DataModule35->Exe_Query->Parameters->ParamByName("cCallType")->Value = CallType;
DataModule35->Exe_Query->ExecSQL();


Edit1->Text="";
ComboBox1->ItemIndex=0;
Label1->Enabled=false;
Edit1->Enabled=false;
DateTimePicker1->Date=Date();
DateTimePicker2->Date=Date();
DataModule35->CallRecordQuery->Close();
DataModule35->CallRecordQuery->SQL->Clear();
DataModule35->CallRecordQuery->SQL->Add("Select * from CallRecord where CallType = :cCallType and CallTime >= :StartDate and CallTime <= :EndDate order by CallTime desc");
DataModule35->CallRecordQuery->Parameters->ParamByName("cCallType")->Value = CallType;
DataModule35->CallRecordQuery->Parameters->ParamByName("StartDate")->Value = DateTimePicker1->Date;
DataModule35->CallRecordQuery->Parameters->ParamByName("EndDate")->Value = DateTimePicker2->Date+1;
DataModule35->CallRecordQuery->Open();
Label17->Caption=IntToStr(DataModule35->CallRecordQuery->RecordCount);
CrnShowMessage(TEXT("Delete Finish!"), TEXT("Finish"), mtInformation, TMsgDlgButtons() << mbOK);
//Application->MessageBox("Delete Finish!","Finish",MB_ICONINFORMATION);
}
}
xinxin26 2010-01-23
  • 打赏
  • 举报
回复
你好ccrun,我改了可以了,谢谢你!
xinxin26 2010-01-23
  • 打赏
  • 举报
回复
你好ccrun,我改了可以了,谢谢你!
lghndyz 2010-01-22
  • 打赏
  • 举报
回复
其他方法就是在英文版系统上编译!!自然就显示是英文了!!
lghndyz 2010-01-22
  • 打赏
  • 举报
回复
ShowMessage("Complete");
用这个顶着先,要是真的不行的话,自己做一个对话框!!
ccrun.com 2010-01-22
  • 打赏
  • 举报
回复

出现Statement Missing的提示,仅仅是因为你这一句代码后面少了个分号;

CrnShowMessage(TEXT("This Is An Invalid Input, Please Enter A Value Between 0-255!"),
TEXT("Please Enter Again"), mtInformation, TMsgDlgButtons() << mbOK)

改成:
CrnShowMessage(TEXT("This Is An Invalid Input, Please Enter A Value Between 0-255!"),
TEXT("Please Enter Again"), mtInformation, TMsgDlgButtons() << mbOK);

即可.

接下来的事情,就是把你代码中其他的MessageBox改成CrnShowMessage的格式就ok了.
xinxin26 2010-01-22
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
void __fastcall TForm7::FormShow(TObject *Sender)
{
char addr[10];
char tmpIP[20];

Edit2->Text = IntToStr(Form1->Local.IP[0]);
Edit3->Text = IntToStr(Form1->Local.IP[1]);
Edit4->Text = IntToStr(Form1->Local.IP[2]);
Edit5->Text = IntToStr(Form1->Local.IP[3]);

memcpy(addr, Form1->Local.Addr + 1, 4);
addr[4] = '\0';
Edit1->Text = AnsiString(addr);
Edit7->Text = IntToStr(Form1->Local.IP_Server[0]);
Edit8->Text = IntToStr(Form1->Local.IP_Server[1]);
Edit9->Text = IntToStr(Form1->Local.IP_Server[2]);
Edit10->Text = IntToStr(Form1->Local.IP_Server[3]);
Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm7::BitBtn2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm7::BitBtn1Click(TObject *Sender)
{
bool CDTOK=true;
AnsiString DeleteMessage;
if(Edit2->Text=="")
Edit2->Text="10";
if(Edit3->Text=="")
Edit3->Text="10";
if(Edit4->Text=="")
Edit4->Text="10";
if(Edit5->Text=="")
Edit5->Text="10";

if(Edit7->Text=="")
Edit7->Text="10";
if(Edit8->Text=="")
Edit8->Text="10";
if(Edit9->Text=="")
Edit9->Text="10";
if(Edit10->Text=="")
Edit10->Text="10";

if(CDTOK)
if((StrToInt(Edit5->Text)==0)||(StrToInt(Edit5->Text)==255))
{
Application->MessageBox("Sorry, The IP Address Is Illegal!","Please Enter Again",MB_ICONSTOP);
CDTOK=false;
Edit5->SetFocus();
}

if(CDTOK)
if(StrToInt(Edit2->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit2->SetFocus();
Edit2->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit3->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit3->SetFocus();
Edit3->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit4->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit4->SetFocus();
Edit4->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit5->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit5->SetFocus();
Edit5->SelectAll();
CDTOK=false;
}
if(StrToInt(Edit7->Text)==0)
Edit7->Text="10";
if(CDTOK)
if(Edit1->Text == "")
{
Application->MessageBox("Sorry, The IP Address Is Illegal!","Please Enter Again",MB_ICONSTOP);
CDTOK=false;
Edit1->SetFocus();
}
if(CDTOK)
if(Edit1->Text.Length() != 4)
{
Application->MessageBox("Sorry, The Address Must Be 4 Digits!","Please Enter Again",MB_ICONSTOP);
CDTOK=false;
Edit1->SetFocus();
}
if(CDTOK)
if((StrToInt(Edit10->Text)==0)||(StrToInt(Edit10->Text)==255))
{
Application->MessageBox("Sorry, The IP Address Is Illegal!","Please Enter Again",MB_ICONSTOP);
CDTOK=false;
Edit10->SetFocus();
}

if(CDTOK)
if(StrToInt(Edit7->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit7->SetFocus();
Edit7->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit8->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit8->SetFocus();
Edit8->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit9->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit9->SetFocus();
Edit9->SelectAll();
CDTOK=false;
}
if(CDTOK)
if(StrToInt(Edit10->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit10->SetFocus();
Edit10->SelectAll();
CDTOK=false;
}
if(CDTOK)
{
char tmpchar[15];
char tmpchar1[15];
Form1->Local.Addr[0] = 'Z';
memcpy(Form1->Local.Addr + 1, Edit1->Text.c_str(), 4);

Form1->Local.IP[0] = StrToInt(Edit2->Text);
Form1->Local.IP[1] = StrToInt(Edit3->Text);
Form1->Local.IP[2] = StrToInt(Edit4->Text);
Form1->Local.IP[3] = StrToInt(Edit5->Text);
sprintf(tmpchar1, "%d.%d.%d.%d\0", Form1->Local.IP[0], Form1->Local.IP[1],
Form1->Local.IP[2], Form1->Local.IP[3]);

Form1->Local.IP_Server[0] = StrToInt(Edit7->Text);
Form1->Local.IP_Server[1] = StrToInt(Edit8->Text);
Form1->Local.IP_Server[2] = StrToInt(Edit9->Text);
Form1->Local.IP_Server[3] = StrToInt(Edit10->Text);
sprintf(tmpchar, "%d.%d.%d.%d\0", Form1->Local.IP_Server[0], Form1->Local.IP_Server[1],
Form1->Local.IP_Server[2], Form1->Local.IP_Server[3]);

DataModule35->Exe_Query->Close();
DataModule35->Exe_Query->SQL->Clear();
DataModule35->Exe_Query->SQL->Add("Select * from Config");
DataModule35->Exe_Query->Open();
if(DataModule35->Exe_Query->RecordCount>0)
{
DataModule35->Exe_Query->Close();
DataModule35->Exe_Query->SQL->Clear();
DataModule35->Exe_Query->SQL->Add("Update Config set Addr = :cAddr, IP = :cIP, IP_Server = :cIP_Server");
DataModule35->Exe_Query->Parameters->ParamByName("cAddr")->Value = AnsiString(Form1->Local.Addr);
DataModule35->Exe_Query->Parameters->ParamByName("cIP")->Value = AnsiString(tmpchar1);
DataModule35->Exe_Query->Parameters->ParamByName("cIP_Server")->Value = AnsiString(tmpchar);
DataModule35->Exe_Query->ExecSQL();
}
else
{
DataModule35->Exe_Query->Close();
DataModule35->Exe_Query->SQL->Clear();
DataModule35->Exe_Query->SQL->Add("Insert into Config (Addr, IP, IP_Server) values(:cAddr, :cIP, :cIP_Server)");
DataModule35->Exe_Query->Parameters->ParamByName("cAddr")->Value = AnsiString(Form1->Local.Addr);
DataModule35->Exe_Query->Parameters->ParamByName("cIP")->Value = AnsiString(tmpchar1);
DataModule35->Exe_Query->Parameters->ParamByName("cIP_Server")->Value = AnsiString(tmpchar);
DataModule35->Exe_Query->ExecSQL();
}
CrnShowMessage(TEXT("Storing Complete!"), TEXT("Complete"), mtInformation, TMsgDlgButtons() << mbOK);
Close();
// if(MessageDlg("Storing Complete!",mtInformation,TMsgDlgButtons()<<mbOK,0) ==mrOk)
//{

/*Table1->Post();
else
Table1->Cancel(); */
//if(MessageDlg(DeleteMessage.c_str(),mtComplete, ,0)==mrOk)
//{
//Application->MessageBox("Storing Complete!"," Complete",MB_OK+MB_ICONINFORMATION);
//if((Application->MessageBox(DeleteMessage.c_str(),"Warning",MB_OKCANCEL+MB_ICONQUESTION))==1)
//Application->MessageBox("Delete Finish!","Finish",MB_ICONINFORMATION);
//Close();
// }
}
}
xinxin26 2010-01-22
  • 打赏
  • 举报
回复
你好ccrun,你提供的方法我有试过了,对Button2Click有用,但是对Edit框输入的值不符合条件然后弹出一个对话框的情况我试了一下好像不太行,不知道是不是我不懂语法,写法有误。麻烦你再帮我看一下。以下程序中每个Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);弹出对话框我都得改成英文的,开始我改成你的那种方式,但是系统提示
Edit框Statement Missing.编译失败。
void __fastcall TForm7::Edit7Change(TObject *Sender)
{
//if length is 3, move focus to next component
if(dynamic_cast<TEdit*>(Sender) == Edit2 && Edit2->Text.Length() == 3)
{
if(StrToInt(Edit2->Text)>255)
{
CrnShowMessage(TEXT("This Is An Invalid Input, Please Enter A Value Between 0-255!"), TEXT("Please Enter Again"), mtInformation, TMsgDlgButtons() << mbOK)
//Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit2->SetFocus();
Edit2->SelectAll();
}
else
Edit3->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit3 && Edit3->Text.Length() == 3)
{
if(StrToInt(Edit3->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit3->SetFocus();
Edit3->SelectAll();
}
else
Edit4->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit4 && Edit4->Text.Length() == 3)
{
if(StrToInt(Edit4->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit4->SetFocus();
Edit4->SelectAll();
}
else
Edit5->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit5 && Edit5->Text.Length() == 3)
{
if(StrToInt(Edit5->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit5->SetFocus();
Edit5->SelectAll();
}
else
Edit1->SetFocus();
}

if(dynamic_cast<TEdit*>(Sender) == Edit7 && Edit7->Text.Length() == 3)
{
if(StrToInt(Edit7->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit7->SetFocus();
Edit7->SelectAll();
}
else
Edit8->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit8 && Edit8->Text.Length() == 3)
{
if(StrToInt(Edit8->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit8->SetFocus();
Edit8->SelectAll();
}
else
Edit9->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit9 && Edit9->Text.Length() == 3)
{
if(StrToInt(Edit9->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit9->SetFocus();
Edit9->SelectAll();
}
else
Edit10->SetFocus();
}
else if(dynamic_cast<TEdit*>(Sender) == Edit10 && Edit10->Text.Length() == 3)
{
if(StrToInt(Edit10->Text)>255)
{
Application->MessageBox("This Is An Invalid Input, Please Enter A Value Between 0-255!","Please Enter Again",MB_ICONSTOP);
Edit10->SetFocus();
Edit10->SelectAll();
}
else
BitBtn1->SetFocus();
}
}
//---------------------------------------------------------------------------

void __fastcall TForm7::Edit7KeyPress(TObject *Sender, char &Key)
{
if(Key == 13) //return
{
if(dynamic_cast<TEdit*>(Sender) == Edit2)
Edit3->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit3)
Edit4->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit4)
Edit5->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit5)
Edit1->SetFocus(); //"Default" Property has been set to false

if(dynamic_cast<TEdit*>(Sender) == Edit7)
Edit8->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit8)
Edit9->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit9)
Edit10->SetFocus();
else if(dynamic_cast<TEdit*>(Sender) == Edit10)
BitBtn1->SetFocus(); //"Default" Property has been set to false
}
else if((Key<48 || Key>57) && Key!=8)//out of 0~9 and not Backspace
Key = '\0';
}
ccrun.com 2010-01-22
  • 打赏
  • 举报
回复
另外,楼上有位朋友的说法有误.
Application->MessageBox和API中的::MessageBox(前者调用的后者)所显示的消息框,按钮的文字是和当前运行的系统有关,与编译时的系统并没有关系.也就是说,不管在英文还是中文的系统中编译生成的可执行文件,在英文系统下运行,将显示英文的按钮,如"OK",在中文的系统下运行,将显示中文的按钮,如"确定"
而Windows提供的几个增强式消息框的API函数,貌似对LanguageId的支持仍然没有实现,所以,借助VCL中的函数来实现是最好不过了.
我站上有一篇我写的文档,就是利用CreateMessageDialog实现自定义消息框.可以实现更多的效果.
ccrun.com 2010-01-22
  • 打赏
  • 举报
回复
Windows提供的MessageBoxEx和MessageBoxIndirect虽然都提供了LanguageId的参数,但是实现并不起作用. 还是用VCL提供的函数来实现比较方便:
// ---------------------------------------------------------------------------
int __fastcall CrnShowMessage(String strMsgText, String strCaption,
TMsgDlgType mdt, TMsgDlgButtons mdb)
{
// 这里定义的是英文字符串,改成中文的,消息框的按钮将显示中文,与系统无关
String ButtonNames[12] =
{
"Yes", "No", "OK", "Cancel", "Abort", "Retry", "Ignore", "All", "NoToAll",
"YesToAll", "Help", "Close"
};

TForm *pMsgForm = CreateMessageDialog(strMsgText, mdt, mdb);
pMsgForm->Caption = strCaption;
int nResult = pMsgForm->ShowModal();
delete pMsgForm;

return nResult;
}

// ---------------------------------------------------------------------------
//
void __fastcall TForm1::Button2Click(TObject *Sender)
{
CrnShowMessage(TEXT("Storing Complete!"), TEXT("Complete"),
mtInformation, TMsgDlgButtons() << mbOK);
}
xinxin26 2010-01-22
  • 打赏
  • 举报
回复
好像下面这种方法是部分可以,可是改完后我的弹出对话框的标题不一样了不是我想的标题。请高手们进来帮帮忙,看能不能改标题不是那5种(mtWarning,mtError,mtInformation,mtConfirmation,mtCustom)。
extern PACKAGE int _fastcall MessageDlg(const AnsiString Msg,TmsgDlgType DlgType,TmsgDlgButtons Buttons,int HelpCtx):用来在

计算机屏幕中央显示对话框。
其中,参数Msg是指定要对话框中显示的字符串。
参数DlgType是TMsgDlgType类的变量,它用来指定对话框的显示特征。TmsgDlgType是一个集合,它可以取以下的值:
mtWarning:对话框中包含黄色的惊叹符号;
mtError:对话框中包含红色的惊叹符号;
mtInformation:对话框中包含蓝色的“I”符号;
mtConfirmation:对话框中包含绿色的问号;
mtCustom:对话框中不包含位图符号,标题名称为应用程序名称。
参数Buttons是用来指定对话框中包含的按钮的类型,它是一个集合,可以是以下若干个元素的组合:
mbYes:对话框含有“Yes”按钮;
mbNo :对话框含有“No”按钮;
mbOK:对话框含有“OK”按钮;
mbCancel :对话框含有“Cancel”按钮;
mbAbort :对话框含有“Abort”按钮;
mbRetry :对话框含有“Retry”按钮;
mbIgnore :对话框含有“Ignore”按钮;
mbAll :对话框含有“All”按钮;
mbNoToAll :对话框含有“NoToAll”按钮;
mbYesToAll :对话框含有“YesToAll”按钮;
mbHelp :对话框含有“Help”按钮.

C Builder还专门定义了三个常用的按钮组合:
mbYesNoCancel:包含了mbYes、mbNo和mbCancel元素;
mbOKCancel:包含了mbOK和mbCancel元素;
mbAbortRetryIgnore:包含了mbAbort、mbRetry和mbIgnore元素。
参数HelpCtx用来指定当用户选择帮助时,帮助系统中的上下文编号。这个函数根据用户选择的按钮,将返回相应的值,它有以下返回值:

mrNone、mrAbort、mrOK、mrRetry、mrNo、mrCancel、mrIgnore、mrAll。
hind24 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lghndyz 的回复:]
其他方法就是在英文版系统上编译!!自然就显示是英文了!!
[/Quote]我还以为在什么系统上运行就显示什么语言,运行时与操作系统相关

13,868

社区成员

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

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