Async InputQuery 不处理取消按钮
Async InputQuery doesn't handle Cancel button
我正在使用对 TDialogServiceAsync.InputQuery()
的简单调用,只需一个输入。它只是忽略 Cancel
按钮和 window 的 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 window 不会关闭,并且不会调用我的回调过程。
如何在按下 Cancel
按钮时关闭 InputQuery 表单?
我正在使用 RADStudio 10.1 Berlin。
编辑:
我做了几个测试:
- 开启 Windows 32 位取消按钮 不 有效
- 在 Windows 64 位取消按钮上 不 有效
- 开启 iOS 64 位取消按钮 工作正常
- 开启 Android 32 位取消按钮 工作正常
这是一个已知错误。在 Embarcadero 的 Quality Portal:
中已经有针对此问题的错误报告
RSP-16148 TDialogService.InputQuery() - Cancel button doesn't work
RSP-16670 Problem of TDialogService.InputQuery dialog box.
后一张票提供了 FMX.DialogHelper.pas
的修复:
open
FMX.DialogHelper.pas
find
class function TDialogBuilder.InputQuery(const ACaption: string; const APrompts: array of string;
find
Button := CreateButton(LForm, BorderSize, WorkArea, Layout, SMsgDlgCancel, mrCancel, LForm.ButtonOnClick);
after this line, add
//fix or add by flyign wang.
Button.Cancel := True;
LForm.FCanCancel := True;
我正在使用对 TDialogServiceAsync.InputQuery()
的简单调用,只需一个输入。它只是忽略 Cancel
按钮和 window 的 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 window 不会关闭,并且不会调用我的回调过程。
如何在按下 Cancel
按钮时关闭 InputQuery 表单?
我正在使用 RADStudio 10.1 Berlin。
编辑:
我做了几个测试:
- 开启 Windows 32 位取消按钮 不 有效
- 在 Windows 64 位取消按钮上 不 有效
- 开启 iOS 64 位取消按钮 工作正常
- 开启 Android 32 位取消按钮 工作正常
这是一个已知错误。在 Embarcadero 的 Quality Portal:
中已经有针对此问题的错误报告RSP-16148 TDialogService.InputQuery() - Cancel button doesn't work
RSP-16670 Problem of TDialogService.InputQuery dialog box.
后一张票提供了 FMX.DialogHelper.pas
的修复:
open
FMX.DialogHelper.pas
find
class function TDialogBuilder.InputQuery(const ACaption: string; const APrompts: array of string;
find
Button := CreateButton(LForm, BorderSize, WorkArea, Layout, SMsgDlgCancel, mrCancel, LForm.ButtonOnClick);
after this line, add
//fix or add by flyign wang. Button.Cancel := True; LForm.FCanCancel := True;