按照Embarcadero的说法:Windows平台只能使用VCL,Windows、iOS和Android都可以使用FMX,并且VCL和FMX不能同时在一个程序中。FMX的用法与VCL有一定的差异,先从最简单的说起:

应用程序的关闭退出

在VCL中,关闭程序的主窗体也就意味着程序的主循环结束,主程序自然而然结束。所以在主窗体中使用窗体的关闭函数(Close)即可,如下:

procedure TfrmMain.btncloseClick(Sender: TObject);
begin
Close;
end;

在FMX中,由Activity替代了Form的概念,虽然TForm类仍然存在,但MainForm通过关闭函数无法结束程序,使用Application.Terminate均无效,调整为:

uses
FMX.Platform.Android;

procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
MainActivity.finish;
end;

此时程序直接关闭了,如果需要在退出前询问一下,可以参考VCL中的做法,在按钮事件中仍然使用关闭函数,在OnCloseQuery事件中询问是否退出,在OnClose事件中实现程序的关闭,如下:

uses
FMX.Platform.Android;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{退出程序}
MainActivity.finish;
end;

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageDlg('是否退出?',
TMsgDlgType.mtConfirmation,
[TMsgDlgBtn.mbOK, TMsgDlgBtn.mbCancel],
-1) = mrOK then
CanClose := true
else
CanClose := false;
end;

procedure TfrmMain.btncloseClick(Sender: TObject);
begin
Close;
end;

procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin

//当按下硬件键盘的返回按钮时,关闭当前窗体
if Key = vkHardwareBack then
Close;
end;

在虚拟机中运行如下:

更多相关文章

  1. Android:初窥手势识别
  2. Volley的简单使用
  3. Android(安卓)应用进程启动过程
  4. 谨慎使用第三方软件!安卓新型恶意软件,可窃取用户银行密码与电子钱
  5. Android开发实践:JNI层线程回调Java函数示例
  6. Android开发人员得让短信应用程序准备好迎接巧克力棒
  7. 两分钟彻底让你明白Android(安卓)Activity生命周期
  8. 细数Android原生工程接入EasyAR-SurfaceTracking遇到的坑
  9. android中自带的开发模板

随机推荐

  1. android图片上传
  2. Android如何调试程序(一)
  3. Android修改TitleBar标题栏详解
  4. android解析httpresponce内容
  5. 整理Android的列表的一行布局
  6. android四种动画
  7. Android L下载
  8. Android中数据存储的三种方式--基础
  9. Android: 模拟器system分区没有可用空间
  10. 关于微信登陆报错的解决方法 Caused by: