电竞比分网-中国电竞赛事及体育赛事平台

分享

Delphi XE5 for Android (二)

 quasiceo 2013-11-15

Delphi XE5 for Android (二)

按照Embarcadero的說法:Windows平臺只能使用VCL,Windows、iOS和Android都可以使用FMX,并且VCL和FMX不能同時在一個程序中。FMX的用法與VCL有一定的差異,先從最簡單的說起:

應(yīng)用程序的關(guān)閉退出

在VCL中,關(guān)閉程序的主窗體也就意味著程序的主循環(huán)結(jié)束,主程序自然而然結(jié)束。所以在主窗體中使用窗體的關(guān)閉函數(shù)(Close)即可,如下:

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

 

在FMX中,由Activity替代了Form的概念,雖然TForm類仍然存在,但MainForm通過關(guān)閉函數(shù)無法結(jié)束程序,使用Application.Terminate均無效,調(diào)整為:

uses
  FMX.Platform.Android;

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

此時程序直接關(guān)閉了,如果需要在退出前詢問一下,可以參考VCL中的做法,在按鈕事件中仍然使用關(guān)閉函數(shù),在OnCloseQuery事件中詢問是否退出,在OnClose事件中實現(xiàn)程序的關(guān)閉,如下:

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

  //當(dāng)按下硬件鍵盤的返回按鈕時,關(guān)閉當(dāng)前窗體
  if Key = vkHardwareBack then
    Close;
end;

 

在虛擬機中運行如下:

image

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多