我有以下的Delphi代码来显示Android上的模式消息,它在10.1柏林工作正常,但停止在Delphi 10.2.1东京工作。此过程现在挂起Android应用程序。使用Delphi 10.2.1的Modal Android对话框东京
procedure customShowMessage(AMessage: string);
//good idea to have our own procedure that we can tweak, as even for VCL and windows, we have done show message differently over the years due to all sorts of funny problems
var
LModalWindowOpen: boolean;
begin
LModalWindowOpen := true;
TDialogService.MessageDialog(AMessage, TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0,
procedure(const AResult: TModalResult)
begin
LModalWindowOpen := false;
end);
while LModalWindowOpen do
begin
Application.ProcessMessages; //since 10.2 Tokyo, popup never shows and this loops forever
end;
end;
我怀疑它可能与东京的变化有关,应用程序如何在主线程中运行。不知道我可以用什么替换Application.ProcessMessages,让对话框显示,以便用户可以点击某些东西。
我有很多地方这是使用,所以改变它使用回调工作将是很多工作,并重组。
'Application.ProcessMessages()'在Android上在东京被打破了(还有很多其他的事情 - 你是否安装了最新的Update?)。此外,Android上不支持模式对话框。英巴卡迪诺的文件说的很多。自XE5以来FMX已经支持异步对话框来解决这个问题。您需要重写此代码以异步工作。摆脱'ProcessMessages'循环,让对话在关闭时通知你。不要阻止调用线程等待对话框关闭。这是处理这个问题的正确方法。你不应该在你的设计中忽略这个。 –
谢谢雷米,我仔细检查了更新。目前可用的修补程序适用于东京10.2。我使用了东京10.2更新的最新安装程序。看起来像长期的解决方案将改为使用回调。 – Maya