C++ Builder下如何使用Android对话框
来源:互联网 发布:mysql视频教程 编辑:程序博客网 时间:2024/06/06 19:22
在讲解Android的对话框之前,我们先来看下面这个例子:
void __fastcall TForm1::Button1Click(TObject *Sender){ ShowMessage("OK1"); ShowMessage("OK2"); ShowMessage("OK3"); ShowMessage("OK4");}
点击按钮后,四个对话框连续出现,最后一个对话框显示在最上面。并不是象Windows的程序那样,出现一个后,点击确定才会出现下一个。
这是因为Android系统不支持阻塞对话框,对话框出现后立即返回,执行后面的代码。
那么把ShowMessage换成MessageDlg函数又会怎么样呢?再看下面的例子:
void __fastcall TForm1::Button1Click(TObject *Sender){ int n = MessageDlg(L"这是一个演示对话框", TMsgDlgType::mtConfirmation, TMsgDlgButtons()<<TMsgDlgBtn::mbYes<<TMsgDlgBtn::mbNo<<TMsgDlgBtn::mbCancel, 0); if(n == mrYes) ShowMessage(L"您选择了是"); else if(n == mrNo) ShowMessage(L"您选择了否"); else if(n == mrCancel) ShowMessage(L"您选择了取消");}
点击按钮后,将会提示“Blocking dialogs not implemented on this platform”,该平台不支持阻塞对话框。
同样,MessageBox和InputBox函数在Android系统下都无法被执行。
如果我们需要在对话框显示之后,接受用户的选取或输入操作,再根据用户的选择运行不同的代码,应该如何做呢?这就需要给MessageDlg或InputBox传入一个类对象,该类对象继承自TInputCloseDialogProc,由用户自己实现,并在其中编写对话框显示之后的下一步执行代码。具体过程如下:
1. 以C++ Builder XE7为例,创建一个Android工程
2. 放置四个按钮,分别是信息对话框、询问对话框、输入对话框和退出。
3. 为这四个对话框分别编写四个实现类,用于执行对话框中的选择操作:
//---------------------------------------------------------------------------class TMyDialogProc1 : public TCppInterfacedObject< TInputCloseDialogProc >{private:TForm *FForm;public:__fastcall TMyDialogProc1(TForm * AForm) : FForm(AForm){}void __fastcall Invoke(const System::Uitypes::TModalResult AResult){if(AResult == mrOk){ShowMessage(L"您点击了OK");}}};//---------------------------------------------------------------------------class TMyDialogProc2 : public TCppInterfacedObject< TInputCloseDialogProc >{private:TForm *FForm;public:__fastcall TMyDialogProc2(TForm * AForm) : FForm(AForm){}void __fastcall Invoke(const System::Uitypes::TModalResult AResult){if(AResult == mrYes){ShowMessage(L"您选择了确定");}else if(AResult == mrCancel){ShowMessage(L"您选择了取消");}}};//---------------------------------------------------------------------------class TMyDialogProc3 : public TCppInterfacedObject< TInputCloseBoxProc>{private:TForm *FForm;public:__fastcall TMyDialogProc3(TForm * AForm) : FForm(AForm){}void __fastcall Invoke(const System::Uitypes::TModalResult AResult, const System::UnicodeString AValue){if(AResult == mrOk){ShowMessage(L"修改后的文字:" + AValue);}}};//---------------------------------------------------------------------------class TMyDialogProc4 : public TCppInterfacedObject< TInputCloseDialogProc >{private:TForm *FForm;public:__fastcall TMyDialogProc4(TForm * AForm) : FForm(AForm){}void __fastcall Invoke(const System::Uitypes::TModalResult AResult){if(AResult == mrYes){ShowMessage(L"您选择了退出程序");FForm->Close(); //关闭程序}else if(AResult == mrNo){ShowMessage(L"您选择了取消退出");}}};//---------------------------------------------------------------------------
4. 在四个按钮的OnClick事件中,显示不同的对话框(注意最后一个参数):
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){_di_TInputCloseDialogProc ADialogProc1 = new TMyDialogProc1(this);MessageDlg(L"您好,欢迎使用Android对话框。",TMsgDlgType::mtInformation,TMsgDlgButtons() << TMsgDlgBtn::mbOK,0,ADialogProc1);}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){_di_TInputCloseDialogProc ADialogProc2 = new TMyDialogProc2(this);MessageDlg(L"你确定要删除该文件吗?",TMsgDlgType::mtInformation,TMsgDlgButtons() << TMsgDlgBtn::mbYes << TMsgDlgBtn::mbCancel,0,ADialogProc2);}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){_di_TInputCloseBoxProc ADialogProc3 = new TMyDialogProc3(this);InputBox(L"输入",L"请输入文字:",L"默认文字",ADialogProc3);}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){_di_TInputCloseDialogProc ADialogProc4 = new TMyDialogProc4(this);MessageDlg(L"您确定要退出程序吗?",TMsgDlgType::mtWarning,TMsgDlgButtons() << TMsgDlgBtn::mbYes << TMsgDlgBtn::mbNo,0,ADialogProc4);}//---------------------------------------------------------------------------
5. 程序运行效果如图所示:
0 0
- C++ Builder下如何使用Android对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- 如何解决win7下C++Builder不能使用help
- android—使用AlertDialog.Builder对话框
- C++Builder下使用ACE
- 如何在C++Builder中使用ACE
- 如何在C Builder中使用全局变量
- 如何在C++Builder中使用全局变量
- Android 使用AlertDialog.Builder构造对话框dialog全过程
- 如何关闭AlertDialog.Builder对话框
- Android对话框AlertDialog.Builder使用方法
- 使用AlertDialog.Builder自定义对话框
- 使用AlertDialog.Builder创建对话框
- mongodb 在windows 下的启动与关闭
- Android初级-ADT的安装
- Spring事务管理的前世今生
- Xshell传输文件
- Thinkcpp学习笔记 c11 成员指针 Pointer to member
- C++ Builder下如何使用Android对话框
- Python元组类型
- 使用PLSQL批量导出、导入表的数据(精简版的Oracle客户端亦可)
- 今天开始CSDN,留个纪念
- JAVA 继承的注意点
- Ant的使用 - 简单介绍
- 条款2:最好使用C++转型操作符
- popcorn maker 配置session,修改登录机制
- iOS复习笔记4:内存管理