使用Android应用使用Java或Android Studio开发的Android应用程序,我发现消息对话框提示下一行执行,直到对话框提示。我一直在尝试使用tdialogService.messageDialog(Amessage,AdialogType,Abuttons,AdefaultButton,0,ProcedureXyz)来做到这一点。在显示提示时,执行下一行,使该提示无用,因为用户应该决定下一个操作。我需要任何人的帮助才能获得一个主动的块消息对话框提示。
embarcadero文档说,在Android平台上,您只能使用ShowMessage
,
MessageDialog
,myForm.ShowModal
和等的非障碍呼叫。
要获得“阻止”模式,您可以使用解决方法,这样:
function myMessageDialog(const AMessage: string; const ADialogType: TMsgDlgType;
const AButtons: TMsgDlgButtons; const ADefaultButton: TMsgDlgBtn): Integer;
var
mr: TModalResult;
begin
mr:=mrNone;
// standart call with callback anonimous method
TDialogService.MessageDialog(AMessage, ADialogType, AButtons,
ADefaultButton, 0,
procedure (const AResult: TModalResult)
begin
mr:=AResult
end);
while mr = mrNone do // wait for modal result
Application.ProcessMessages;
Result:=mr;
end;
您的建议@kami @kami提出了这一点,尽管对我持开放态度,但它对我来说非常有效。
function MsgBox(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons;
const ADefaultButton: TMsgDlgBtn ): Integer;
var
myAns: Integer;
IsDisplayed: Boolean;
begin
myAns := -1;
IsDisplayed := False;
While myAns = -1 do
Begin
if IsDisplayed = False then
TDialogService.MessageDialog(AMessage, ADialogType, AButtons, ADefaultButton, 0,
procedure (const AResult: TModalResult)
begin
myAns := AResult;
IsDisplayed := True;
end);
IsDisplayed := True;
Application.ProcessMessages;
End;
Result := myAns;
end;