不知道大家注意没有,Delphi代码编辑窗口的很多部分都能够单独用鼠标从主窗口中托拽出来成为单独的窗口,并且还能够托拽回去,甚至能够融入PageControl的一个Tabsheet。比如编译消息窗口就是这样的。这样的东西停靠进DockSite以后在一端大都有两个横线或者竖线,并有一个关闭样式的带叉的小按钮。我在此之前了解一些关于所谓"Dock技术"的vcl实现的方法,就是很多vcl组件都有docksite属性,设成true就能接受托来的其他控件,如果把另一个控件的dragkind设成dkDrag,dragmode设成dmAutomatic就能够从所在的DockSite托出成为单独窗口,或者托进融合到docksite里面。可是在实际的实现过程中,似乎并不像那么"智能化"。比如:
1。你无法控制(至少我不知道)"浮动控件"停泊进docksite以后的对齐方式,一个align=altop的toolbar托进align=alleft的Controlbar以后,无法自动的变成竖排的,本来横向排列的很多按钮都被隐去了,即便强制设置toolbar的autosize和align属性也不顶用。2。怎样出现那个小关闭按钮。3。不知道大家是否用过MS Visual InterDev 6,它不但能有上面叙述的功能,还能够在窗口停靠进入Docksite以后出现代表独立窗口标题栏的蓝条,而并不是两条线,这怎样实现?////////////////////////////
希望不吝赐教!!
1。你无法控制(至少我不知道)"浮动控件"停泊进docksite以后的对齐方式,一个align=altop的toolbar托进align=alleft的Controlbar以后,无法自动的变成竖排的,本来横向排列的很多按钮都被隐去了,即便强制设置toolbar的autosize和align属性也不顶用。2。怎样出现那个小关闭按钮。3。不知道大家是否用过MS Visual InterDev 6,它不但能有上面叙述的功能,还能够在窗口停靠进入Docksite以后出现代表独立窗口标题栏的蓝条,而并不是两条线,这怎样实现?////////////////////////////
希望不吝赐教!!
在formcreate事件里
鲁小班的停靠控件虽然Bug多多,但是很不错,我一直在用
带源码,你可以研究一下
我們曾做過這樣的軟件包含這個功能﹐請參考以下的代碼﹕
procedure CreateCNForms(aDockSite : TWinControl);
begin
UID := GetUsrID;
if frmCNSummary = nil then NewForm(TfrmCNSummary, frmCNSummary);
if frmOpenCN = nil then NewForm(TfrmOpenCN, frmOpenCN);
if frmCNTermNot = nil then NewForm(TfrmCNTermNot, frmCNTermNot);
if frmCNWithdrw = nil then NewForm(TfrmCNWithdrw, frmCNWithdrw);
if frmCNAck = nil then NewForm(TfrmCNAck, frmCNAck);
if frmCnclLic = nil then NewForm(TfrmCnclLic, frmCnclLic);
if frmAL = nil then NewForm(TfrmAL, frmAL);
frmCNSummary.ManualDock(aDockSite, aDockSite, alClient);
frmOpenCN.ManualDock(aDockSite, aDockSite, alClient);
frmCNTermNot.ManualDock(aDockSite, aDockSite, alClient);
frmCNWithdrw.ManualDock(aDockSite, aDockSite, alClient);
frmCNAck.ManualDock(aDockSite, aDockSite, alClient);
frmCnclLic.ManualDock(aDockSite, aDockSite, alClient);
frmAL.ManualDock(aDockSite, aDockSite, alClient);
dmCNApp.adsCNAdv.Open;
end;2. 自己在在From上的一個角落上加一個小关闭按钮﹐可以和系統的形狀相同﹐最好用TSpeedButton.
3. MS Visual InterDev 6沒用過,不知有沒有這樣的功能。
begin
panel1.ManualFloat(panel1.ClientRect);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
panel1.ManualDock(controlbar1,nil,altop)
end;停靠以后出现的那条线似乎只能在左边,跟alXXX无关啊
http://www.cx66.com/cxgzs/program/delphi/961.htm