最近测试用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系统下正常执行了
但这种弹出式的对话框在平板下还好,在手机上如果弹出对话框时刚好来电话界面被切换时发现有时会出现假死现象,还需要继续研究
本文介绍了在使用Delphi XE7开发Android应用时遇到的对话框问题。传统的MessageDlg在Android平台上不适用,会报错。通过改用直接处理结果的方式或者定义回调函数来接收对话框返回值,可以在Android设备上正确显示提示信息。然而,这种方式在手机上接到来电时可能会出现假死现象,仍需进一步解决。
2039

被折叠的 条评论
为什么被折叠?



