Delphi / C ++ Builder 10.1 Belrin的新功能之一是“简化对话框API”。
使用的函数是InputQuery。
TDialogService.InputQuery关数
TDialogService.InputQuery函数显示一个带有输入字段的对话框。
procedure TForm1.ButtonInputDialogClick(Sender: TObject);
begin
TDialogService.InputQuery(
'Input String',
['Enter Your Name'],
['Your Name'],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
Memo1.Lines.Add('Your Name = ' + AValues[0]);
end);
Memo1.Lines.Add('ButtonInputDialogClick');
end;
执行上述代码
后,在Windows和OSX上显示对话框后,将输出“ ButtonInputDialogClick”。
取决于操作系统,此功能的行为似乎有所不同。
THE 处理中
视窗 同期
OSX 同期
安卓系统 异步的
的iOS 异步的
此外,TDialogService.InputQuery,你可以有多个输入字段。
procedure TForm1.ButtonInputDialogClick(Sender: TObject);
begin
TDialogService.InputQuery(
'Input String',
['Enter Your First Name', 'Enter Your Family Name'],
['First Name', 'Family Name'],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
Memo1.Lines.Add('First Name = ' + AValues[0]);
Memo1.Lines.Add('Family Name = ' + AValues[1]);
end);
Memo1.Lines.Add('Button1Click');
end;
在iOS上,此代码导致运行时错误。
看来您不能有多个输入字段。
它适用于Windows,OSX和Android。
THE 多个领域
视窗 ○
OSX ○
安卓系统 ○
的iOS ×
IFMXDialogServiceSync.InputQuerySync关数
IFMXDialogServiceSync.InputQuerySync函数将被阻止,直到关闭对话框。
procedure TForm1.ButtonIFMXDialogServiceSyncClick(Sender: TObject);
var
Service: IFMXDialogServiceSync;
AValues: array of string;
begin
AValues := ['Your Name'];
if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceSync, IInterface(Service)) then
begin
if Service.InputQuerySync('Input String', ['Enter Your Name'], AValues) then
begin
Memo1.Lines.Add('Your Name = ' + AValues[0]);
end;
end;
Memo1.Lines.Add('ButtonIFMXDialogServiceSyncClick');
end;
在Windows,OSX和iOS上,显示对话框后输出“ ButtonIFMXDialogServiceSyncClick”。
在Android上,不显示对话框,仅输出“ ButtonIFMXDialogServiceSyncClick”。
THE 函授
视窗 ○
OSX ○
安卓系统 ×
的iOS ○
此功能在iOS上也不支持多个字段。
IFMXDialogServiceAsync.InputQueryAsync关数
IFMXDialogServiceSync.InputQueryAsync函数将继续处理,而无需等待对话框关闭。
procedure TForm1.ButtonIFMXDialogServiceAsyncClick(Sender: TObject);
var
Service: IFMXDialogServiceAsync;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(Service)) then
begin
Service.InputQueryAsync('Input String', ['Enter Your Name'], ['Your Name'],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
Memo1.Lines.Add('Your Name = ' + AValues[0]);
end);
end;
Memo1.Lines.Add('ButtonIFMXDialogServiceAsyncClick');
end;
在Windows,OSX,Android和iOS上,在输出“ ButtonIFMXDialogServiceAsyncClick”之后显示一个对话框。