【注】目前 QDialogBuilder 只支持 VCL,同时,为了兼容以前的 Delphi ,所以单元名称为 qdialog_builder。
使用 QDialogBuilder 的基本步骤如下:
1、设置搜索路径,包含 QDAC 的 Source 目录,qdialog_builder 单元位于该目录下。
2、在需要使用 QDialogBuilder 的单元,使用 uses 来增加对其的引用。
3、在需要创建的地方调用 NewDialog 来创建一个 IDialogBuilder 接口实例,假设名为 ABuilder。
4、调用 ABuilder 的 Add / AddControl / AddContainer 等接口添加对话框内容。
5、调用 ABuilder 的 ShowModal / Popup 接口来显示对话框
上面步骤中,ABuilder 的实例不需要手工释放,它是一个接口,在使用完成后会自动释放实例。当然,如果要手动控制释放的时间点,可以额外加一个变量来保存接口实例,在想释放的时候,设置为空即可。
下面,我们来用 QDialogBuilder 来模拟 Windows 的消息对话框:
1、首先是初始化一个对话框,标题为警告,自动调整大小,项目间隔为 5 像素:
var ABuilder:IDialogBuilder; begin ABuilder := NewDialog('警告'); ABuilder.AutoSize := True; ABuilder.ItemSpace := 5;
2、正常的 Windows MessageBox 警告对话框有一个警告图标、一段文字和一排按钮,我们假设这个警告窗口为警告用户是否真的删除当前记录,那么使用 QDialogBuilder 实现这一过程如下:
with ABuilder.AddContainer(amHorizLeft) do begin AutoSize := True; with TImage(AddControl(TImage).Control) do begin AlignWithMargins := True; AutoSize := True; LoadUser32Icon(Picture, 101); end; with TLabel(AddControl(TLabel).Control) do begin AlignWithMargins := True; Caption := '您真的想删除当前记录吗?'#13#10'是 - 删除'#13#10'否 - 取消操作'; end; end; with ABuilder.AddContainer(amHorizRight) do begin AutoSize := True; with TButton(AddControl(TButton).Control) do begin Caption := '是(&Y)'; ModalResult := mrYes; end; with TButton(AddControl(TButton).Control) do begin Caption := '否(&N)'; ModalResult := mrNo; end; end;
3、显示对话框并处理用户选择:
ABuilder.ShowModal; if ABuilder.ModalResult = mrYes then ShowMessage('删除记录') else ShowMessage('删除操作已取消'); end;
是不是和 Windows 的 MessageBox 很像了?
更多具体的示例代码参考 dialogBuilder 示例程序,参考效果动画: