我正在使用单个输入对TDialogServiceAsync.InputQuery()
进行简单调用。它只是忽略了Cancel
按钮和窗口的X
关闭按钮。
但是Ok
按钮工作正常。
这是我的代码:
uses
FMX.DialogService.Async;
procedure TForm1.Button1Click(Sender: TObject);
begin
TDialogServiceAsync.InputQuery('Title',
['Insert value'], ['bla bla'],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
if Aresult = mrOk then
ShowMessage('Ok!');
if Aresult = mrCancel then
ShowMessage('Cancel!'); // this is never called
end);
end;
如果按Cancel
,则InputQuery窗口不会关闭,并且不会调用我的回调过程。
按Cancel
按钮时,如何关闭InputQuery表单?
我正在使用RADStudio 10.1柏林。
编辑:
我做了一些测试:
答案 0 :(得分:6)
这是一个已知的错误。在Embarcadero的Quality Portal中已经有关于此问题的错误报告:
RSP-16148 TDialogService.InputQuery() - Cancel button doesn't work
RSP-16670 Problem of TDialogService.InputQuery dialog box
后一张票提供了FMX.DialogHelper.pas
的修复:
开放
FMX.DialogHelper.pas
找到
class function TDialogBuilder.InputQuery(const ACaption: string; const APrompts: array of string;
查找
Button := CreateButton(LForm, BorderSize, WorkArea, Layout, SMsgDlgCancel, mrCancel, LForm.ButtonOnClick);
在此行之后,添加
//fix or add by flyign wang. Button.Cancel := True; LForm.FCanCancel := True;