Delphi 中使用Dialog API


本文整理自网络,侵删。

 
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之伪造referer下载文件

Delphi systemparametersinfo 用法

Delphi监控文件夹

Delphi实现文件下载urldownloadtofile

Delphi 把pf8bit位图变换成pf24bit位图

monthdays:给出一个月的天数

Delphi idhttp上传图给asp完美解决

Delphi webbrowser1 保存文档为 .mht

Delphi 设置combobox组合框的高度方法总结

Delphi 字符串变形替换

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...