Delphi XE7 开发Android对话框方式

来源:互联网 发布:ubuntu 休眠设置 编辑:程序博客网 时间:2024/06/16 11:15

最近测试用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系统下正常执行了

但这种弹出式的对话框在平板下还好,在手机上如果弹出对话框时刚好来电话界面被切换时发现有时会出现假死现象,还需要继续研究



0 0