1. 程式人生 > 其它 >Delphi XE5 for Android (二)

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;

在虛擬機器中執行如下: