FMX 模态窗体

FMX 模态窗体

dlg := TForm2.Create(nil);
  dlg.ShowModal(procedure(ModalResult: TModalResult)
  begin      
     if ModalResult = mrOK then      
     begin
     .....
     end;

 

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_FireMonkey_Modal_Dialog_Boxes

https://forums.embarcadero.com/thread.jspa?threadID=117516

http://blog.marcocantu.com/blog/xe5_anonymous_showmodal_android.html

为何我的ModalForm全屏了呢?

 Displaying a Modal Dialog Box

Use the following code to display a modal dialog box in your FireMonkey application:

Delphi:

procedure MyCurrentForm.MyButtonClick(Sender: TObject); var dlg: TMyModalForm; begin // Create an instance of a form. dlg := TMyModalForm.Create(nil);   // Configure the form. For example, give it a display name. dlg.Caption := 'My Modal Dialog Box';   // Show your dialog box and provide an anonymous method that handles the closing of your dialog box. dlg.ShowModal( procedure(ModalResult: TModalResult) begin // Do something. end ); end;

C++:

1. Define a class that takes the TProc__1 interface, and define a function to handle the closing of your dialog box:
class TModalFormCallback : public TCppInterfacedObject<TProc__1<TModalResult> > { public: TMyModalForm *dlg; TMyCurrentForm *MyCurrentForm;   void __fastcall Invoke(TModalResult ModalResult) { // Do something. } };
2. Then pass an instance of this class to ShowModal:
void __fastcall TMyCurrentForm::MyButtonClick(TObject *Sender) { // Create an instance of a form. TMyModalForm *dlg = new TMyModalForm(NULL);   // Configure the form. For example, give it a display name. dlg->Caption = "My Modal Dialog Box";   // Create and configure an instance of your callback method. TModalFormCallback* ModalFormCallback = new TModalFormCallback(); ModalFormCallback->dlg = dlg; ModalFormCallback->MyCurrentForm = this;   // Show your dialog box and provide an anonymous method that handles the closing of your dialog box. dlg->ShowModal(ModalFormCallback); }

Freeing Your Modal Dialog Box

You cannot free the memory allocated for your modal dialog box form within the method than handles the closing of your modal dialog box form. To free your modal dialog box form, you must handle its OnClose event as follows:

Delphi:

procedure TMyModalForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end;

C++:

void __fastcall TMyModalForm::FormClose(TObject *Sender, TCloseAction *Action) { Action = TCloseAction::caFree; }


Tokyo 10.2.2 Firemonkey下的模态窗口解决方案。

https://community.embarcadero.com/blogs/entry/tdialogservice

FMX.DialogService

 

  TDialogService.MessageDialog();
  TDialogService.InputQuery();

TDialogService.ShowMessage('hello');

复制代码
procedure TForm2.btnShowMessageClick(Sender: TObject);
begin
  TDialogService.ShowMessage('您点选了OK按钮', ShowMessageCloseMethod); end; procedure TForm2.ShowMessageCloseMethod(const AResult: TModalResult); var alvi : TListViewItem; begin alvi := ListView1.Items.Add; alvi.Text := DateTimeToStr(Now); alvi.Detail := '关闭了ShowMessage对话盒!'; end;
复制代码
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>