delphi使用新的FMX.DialogService.TDialogService类
描述
TDialogService提供了处理对话框的类函数和PreferredMode首选项属性,以根据该平台指定对话框的默认呈现模式。包含:
- ShowMessage
- MessageDialog
- InputQuery
ShowMessage
class procedure ShowMessage(const AMessage: string); overload; class procedure ShowMessage(const AMessage: string; const ACloseDialogProc: TInputCloseDialogProc); overload; class procedure ShowMessage(const AMessage: string; const ACloseDialogEvent: TInputCloseDialogEvent; const AContext: TObject = nil); overload;
FMX.DialogService.TDialogService.ShowMessage为显示带有指定消息和OK按钮的对话框。
ShowMessage可以根据首选模式同步或异步工作。ShowMessage内部调用ShowMessageAsync 或 ShowMessageSync。
当PreferredMode被设定为指定平台:
- 在desktop平台(Windows和Mac OS X),ShowMessage同步工作。仅当用户关闭对话框时掉用结束。
- 在移动平台(Android和iOS),ShowMessage异步工作。不等待用户关闭对话框而立即调用结束。
为了强制不同平台的特定行为,将PreferredMode设置为同步或异步(不支持Android)。
ShowMessage接受以下参数:
- AMessage:文本信息
- ACloseDialogProc 或 ACloseQueryEvent:一个可选的匿名方法或事件处理程序,在用户关闭对话框后调用它。
除了取代传统的ShowMessage方法, 您也可以实作程序或是事件在使用者关闭ShowMessage对话盒时直接触发您的程序或是事件.例如我们使用如下的一个小范例:
procedure TForm1.btnShowMessageClick(Sender: TObject); begin TDialogService.ShowMessage('您点选了OK按钮', ShowMessageCloseMethod); end; procedure TForm1.ShowMessageCloseMethod(const AResult: TModalResult); var alvi : TListViewItem; begin alvi := ListView1.Items.Add; alvi.Text := DateTimeToStr(Now); alvi.Detail := '关闭了ShowMessage对话框!'; end;
在呼叫TDialogService.ShowMessage时我们提了一个回调方法ShowMessageCloseMethod(), 那么当使用者关闭ShowMessage对话框时就会自动调用ShowMessageCloseMethod()方法:
MessageDialog
class procedure MessageDialog(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const ADefaultButton: TMsgDlgBtn; const AHelpCtx: THelpContext; const ACloseDialogProc: TInputCloseDialogProc); overload; class procedure MessageDialog(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const ADefaultButton: TMsgDlgBtn; const AHelpCtx: THelpContext; const ACloseDialogEvent: TInputCloseDialogEvent; const AContext: TObject = nil); overload;
FMX.DialogService.TDialogService.MessageDialog为显示具有自定义消息、对话框类型、按钮集和帮助上下文ID的对话框。
取决于首选模式,MessageDialog可以同步或异步工作。MessageDialog内部调用 MessageDialogAsync 或 MessageDialogSync.
当PreferredMode被设定为指定平台:
- 在desktop平台(Windows和Mac OS X),MessageDialog同步工作。仅当用户关闭对话框时掉用结束。
- 在移动平台(Android和iOS),MessageDialog异步工作。不等待用户关闭对话框而立即调用结束。
strong>为了强制不同平台的特定行为,将PreferredMode设置为同步或异步(不支持Android)。
MessageDialog接受以下参数:
- AMessage:文本信息
- ADialogTyp:对话框类型
- AButtons:一组按钮
- ADefaultButton:默认情况下有焦点的按钮。
- AHelpCtx:是帮助上下文ID。
- ACloseDialogProc 或 ACloseDialogEvent:用户关闭对话框后调用的匿名方法或事件处理程序。
- AContext:可选项,可以作为ACloseQueryEvent事件指定的事件处理程序提供上下文。
注意:“Help”帮助按钮不触发调用,因为它没有关闭对话框。
InputQuery
class procedure InputQuery(const ACaption: string; const APrompts: array of string; const AValues: array of string; const ACloseQueryProc: TInputCloseQueryProc); overload; class procedure InputQuery(const ACaption: string; const APrompts: array of string; const AValues: array of string; const ACloseQueryEvent: TInputCloseQueryWithResultEvent; const AContext: TObject = nil); overload;
FMX.DialogService.TDialogService.InputQuery为显示包含文本输入字段和OK按钮的对话框。
取决于首选模式,InputQuery可以同步或异步工作。InputQuery内部调用TDialogServiceAsync.InputQuery或TDialogServiceSync.InputQuery
当PreferredMode被设定为指定平台:
- 在desktop平台(Windows和Mac OS X),InputQuery 同步工作。仅当用户关闭对话框时掉用结束。
- 在移动平台(Android和iOS),InputQuery异步工作。不等待用户关闭对话框而立即调用结束。
为了强制不同平台的特定行为,将PreferredMode设置为同步或异步(不支持Android)。
InputQueryj接受以下参数:
- ACaption:对话框的标题
- APrompts:是一个字符串数组,在输入区域左侧用作文本标签
- AValues:定义字段的默认值的字符串数组。
- ACloseDialogProc 或 ACloseQueryEvent:是用户关闭对话框并接收用户输入后调用的匿名方法或事件处理程序。
- ACONTHEY:可选项,可以作为ACloseQueryEvent事件指定的事件处理程序提供上下文。
注:AValues 的长度必须大于或等于APrompts的长度。