博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi XE5 for Android (二)
阅读量:5840 次
发布时间:2019-06-18

本文共 1182 字,大约阅读时间需要 3 分钟。

按照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;

 

在虚拟机中运行如下:

转载地址:http://pxvcx.baihongyu.com/

你可能感兴趣的文章
Linux-网络连接-(VMware与CentOS)
查看>>
寻找链表相交节点
查看>>
linq 学习笔记之 Linq基本子句
查看>>
[Js]布局转换
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
docker 基础
查看>>
写一个bat文件,删除文件名符合特定规则,且更改日期在某
查看>>
我的友情链接
查看>>
写Use Case的一种方式,从oracle的tutorial抄来的
查看>>