本文整理自网络,侵删。
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”之后显示一个对话框。
相关阅读 >>
Delphi 调试ios时出现 please specify exact device preset uuid
更多相关阅读请进入《Delphi》频道 >>