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


