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;
 

FMX 模态窗体的更多相关文章

  1. VB6关于判断模态窗体的问题

    模态窗体也有人叫模式窗体,是否为模态窗体由Show方法的参数决定: 语法 object.Show style, ownerform Show 方法的语法包含下列部分: 部分 描述 object 可选的 ...

  2. delphi模态窗体最小化会隐藏的问题

    在使用delphi创建模态窗体的时候最小化窗体会导致最小化的窗体不可见,再次点击主窗体才会显示. 在这个模态窗体中增加以下函数 procedure WmSysCommand(var msg: TMes ...

  3. 游戏UI框架设计(四) : 模态窗体管理

    游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗 ...

  4. 关于DatePicker在模态窗体下失效的问题

    最近用bootstrap做了一个租赁相关的管理系统,由于前端知识薄弱,也是编查资料边做.关于一些控件的用法,也是从网上查资料.下面,来说一下在写前端页面时遇到的几个坑. 这个系统中,日期控件用的是Da ...

  5. Sharepoint模态窗体(实战)

    分享人:广州华软 无名 一. 前言 对SharePoint二次开发时,需要知道SharePoint有什么.没有什么,才能在开发过程中避免重复造轮子.SharePoint提供了许多开箱即用的功能,这次要 ...

  6. 自制模态窗体闪烁效果: MessageBeep & FlashWindowEx

    SetFocus(hwnd_frame_preview); //设置焦点 /** 模拟模态窗口动作 **/ MessageBeep(0xFFFFFFFF); //0xFFFFFFFF SystemDe ...

  7. Delphi: 模态窗体最小化

    源起: 近期所介入的几个项目中,最后视频生成窗体,为一模态对话框.因生成时间可能较长,所以其窗体可以最小化,它最小化时同时最小化主程序,唤醒时主程序再复原. 代码亦是8年前本人所写,一直那样用了,也没 ...

  8. Qt无边框窗体-模拟模态窗体抖动效果

    目录 一.概述 二.效果展示 三.功能实现 四.相关文章 原文链接:Qt无边框窗体-模拟模态窗体抖动效果 一.概述 用Qt开发windows客户端界面确实是一大利器,兼顾性能的同时,速度相对来说也不错 ...

  9. Electron基础 - 如何创建模态窗体

    在开发桌面端应用我们常常需要弹出一个提示窗体或者对话框,而提示窗体和对话框和普通窗体的区别是,在提示框出现时,其它窗体就被锁定了,必须要等到提示框被正确关闭时其它窗体才能“解锁”,这种类型的窗体叫做模 ...

随机推荐

  1. 不小心把服务器上的/usr/lib下的所有文件删除,恢复办法

    手贱,使用root用户,rm -rf 多了一个"*"……导致了万分惊恐的悲剧,/usr/lib下的所有文件被删除…… 修复办法: linux系统是基于文件的,所以只要能拷贝到和原来 ...

  2. [转]理解Object.assign

    本节内容我们继续探讨关于ES2015的一些新的内容,Object.assign函数的使用,使用该函数我们可以快速的复制一个或者多个对象到目标对象中,本文内容涉及es6,es7相关的对象复制的内容,以及 ...

  3. Jedis源代码探索

    [连接池实现] [一致性hash实现]   [Redis客户端-Jedis源代码探索][http://blog.sina.com.cn/s/blog_6bc4401501018bgh.html]   ...

  4. 机器学习(二)—支持向量机SVM

    1.SVM的原理是什么? SVM是一种二类分类模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器.(间隔最大是它有别于感知机) 试图寻找一个超平面来对样本分割,把样本中的正例和反例 ...

  5. Xcode 查找 TODO 清单

    在 Xcode 中按 Shift+Command+F,显示在项目中查找窗口,选择按正则表达式查找(Find > Regular Expression): TODO:  //\s*\bTODO\s ...

  6. hdu 5238 Calculator(线段树,中国剩余定理¥)

    Calculator Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  7. poj 1324 状态压缩+bfs

    http://poj.org/problem?id=1324 Holedox Moving Time Limit: 5000MS   Memory Limit: 65536K Total Submis ...

  8. lucene搜索之facet查询原理和facet查询实例——TODO

    转自:http://www.lai18.com/content/7084969.html Facet说明 我们在浏览网站的时候,经常会遇到按某一类条件查询的情况,这种情况尤以电商网站最多,以天猫商城为 ...

  9. vue项目组件的全局注册

    在vue-cli项目中,我们经常会封装自己的组件,并且要在多个界面中引用它,这个时候就需要全局注册组件. 首先我们会封装自己的组件,比如twoDimensionTable文件夹下的index.vue: ...

  10. 项目管理理论与实践(6)——利用Excel制作项目文档的设计技巧

    这篇是使用的Excel 2007 进行文档设计,Excel的设计也是一门学问,这里主要介绍一些Excel的设计技巧,后面也会陆续更新该文章. 1. 固定某行某列 首先设计这样的任务管理文档: 现在我想 ...