Delphi XE5 for Android (二)

按照Embarcadero的说法:Windows平台只能使用VCL,Windows、iOS和Android均可以使用FMX,而且VCL和FMX不能同时在一个程序中。FMX的用法与VCL有必定的差别,先从最简单的提及:函数

应用程序的关闭退出spa

在VCL中,关闭程序的主窗体也就意味着程序的主循环结束,主程序天然而然结束。因此在主窗体中使用窗体的关闭函数(Close)便可,以下:3d

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

 

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

uses 
  FMX.Platform.Android;
事件

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

此时程序直接关闭了,若是须要在退出前询问一下,能够参考VCL中的作法,在按钮事件中仍然使用关闭函数,在OnCloseQuery事件中询问是否退出,在OnClose事件中实现程序的关闭,以下:虚拟机

uses 
  FMX.Platform.Android;
it

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

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;

 

在虚拟机中运行以下:

image

相关文章
相关标签/搜索