按照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;
在虛擬機中運行以下: