XE6实现停靠窗体效果
LeftDockTabSet
左侧边栏
LeftDockPanel
停靠窗体容器
TSplitter
拖动
TForm
停靠窗体(树列表)
TFormMain
主窗体
新建树列表窗体
procedure TMainForm.dockform1Click(Sender: TObject);
begin
frmDockform1.Create(Application);
frmDockform1.ManualDock(LeftDockTabSet);
frmDockform1.Show;
end;
procedure TFrmMain.LeftDockTabSetTabAdded(Sender: TObject);
begin
//点了最小化,窗体自动隐藏消失,侧边栏显示
LeftDockTabSet.Visible := true;
end;
procedure TFrmMain.LeftDockTabSetTabRemoved(Sender: TObject);
begin
//窗体固定 钉住 侧边栏消失
// dockTabSet当标签页移除时隐藏LeftDockTabSet
// 如果不隐藏,左侧一直有白边
LeftDockTabSet.Visible := LeftDockTabSet.Tabs.Count > 0;
end;
procedure TFrmWeeklogDisp.pnlDockLeftDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer);
begin
if (pnlDockLeft.Width = 0) then
pnlDockLeft.Width := 150;
Splitter1.Visible := true;
Splitter1.Left := pnlDockLeft.Width;//没有这句固定窗体后无法左右拉伸伸缩啊
end;
procedure TFrmWeeklogDisp.pnlDockLeftUnDock(Sender: TObject; Client: TControl; NewTarget: TWinControl; var Allow: Boolean);
begin
if (pnlDockLeft.DockClientCount = 1) then
begin
pnlDockLeft.Width := 0;
Splitter1.Visible := true;
end
end;
停靠属性设置