[教程]QDialogBuilder 使用教程

【注】目前 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 示例程序,参考效果动画:

分享到: