1. 程式人生 > >Delphi XE7 開發Android對話方塊方式

Delphi XE7 開發Android對話方塊方式

最近測試用XE7編寫Android移動端軟體,其中對話方塊可以直接使用showmessage將資訊顯示到手機介面,使用MessageDlg總是提示錯誤資訊“Blocking dialogs not implemented on this platform”

  if MessageDlg('確認退出系統嗎?', TMsgDlgType.mtConfirmation,[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
    begin
      Showmessage('Yes');
    end
  else
    begin
      Showmessage('No');
    end;


經測試,修改為如下寫法後,能在手機上正確顯示提示資訊

  MessageDlg('確認退出系統嗎?', System.UITypes.TMsgDlgType.mtInformation,[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo,TMsgDlgBtn.mbCancel], 0,
     procedure(const AResult: TModalResult)
     begin
       if AResult = mrYES then
          ShowMessage('Yes') else
       if AResult = mrNo then
          ShowMessage('No') else
       if AResult = mrCancel then
          ShowMessage('Cancel');
     end);

直接將結果處理過程作為MessageDlg的引數可在android下正確執行,據我估計使用if MessageDlg()=mrYes then的傳統寫法應該是一個模式窗體形式,在android下不支援,需要採用第二種定義回撥函式的方式來接收MessageDlg對話方塊的返回值就可以在android系統下正常執行了

但這種彈出式的對話方塊在平板下還好,在手機上如果彈出對話方塊時剛好來電話介面被切換時發現有時會出現假死現象,還需要繼續研究