delphi 中使用Dialog API  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

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”之后显示一个对话框。

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.050700187683105 seconds