Delphi XE5 for Android (二)


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

 

在虛擬機中運行如下:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM