Delphi XE5 for Android (二)

原始文章:Delphi XE5 for Android (二)

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

应用程序的关闭退出

 

在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;

在虚拟机中运行如下:

 

posted @ 2021-12-21 13:52  麦麦提敏  阅读(165)  评论(0编辑  收藏  举报