窗体的拆分!请教高手!(200分)

K

kofxdm

Unregistered / Unconfirmed
GUEST, unregistred user!
如何做到像VC的那样拆分窗体。在主窗体上拆分出N个小窗体,各自拥有独立的句柄。
希望能提供source或是控件。
(不使用Tspliter控件。)
 
视(CView),delphi 中的概念不一样吧。
 
现在就是要研究这个问题。我想delphi中应该可以实现吧,只是我的技术不够。
所有特来请教高手。
大家帮忙想想办法。
 
Dock技术.
几乎所有的组建都能实现.

procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.DockSite := true;//让Panel1可以停泊窗体或其它控件
Panel2.DragKind :=dkDock; //
Panel2.DragMode :=dmAutomatic;//
Panel2.ManualDock(panel1);//把Panel2停泊到Panel1上
end;

执行后看看Panel是不是到了Panel1上,用鼠标拽一下看看什么效果.
你也完全可以把Panel换成是Form
 
效果差很多。
不知道楼上的有没有看过VC的窗体拆分。建议看看。
不过还是十分感谢你的回答。
 
frame好象就是搞这个的吧,可能我没理解概念,但绝对可以达到楼主的要求。
 
看看是不是这样
procedure TForm1.FormCreate(Sender: TObject);
var
ChildForm: TForm2;
i: integer;
begin
for i := 0 to 10 do
begin
ChildForm := TForm2.Create(Application);
ChildForm.Parent := self;
ChildForm.Left := 10 * (i + 1);
ChildForm.Top := 10 * (i + 1);
ChildForm.Show;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
i: integer;
begin

for i := ControlCount - 1 downto 0 do
begin
if Assigned(Controls) and (Controls is TForm) then
Controls.Free;
end;
end;
 
Frame的概念我也不是很清楚。不知道是不是能实现。

to Linwolf
效果不行哦。

 
将wr960204兄的Panel2换成form2即可。
 
我没有用过VC能不能举个例子,说明一下你的用途和目的。
 
Delphi和VC的Dock技术的显示风格是不一样的。
如果非要VC风格的就去下载一个控件。
有三种Dock的风格VC,Delphi,VD。
大富翁上前两天就由此作者的宣传帖子
 
51delphi上有一个这样的控件
 
用frame组成的窗体,各个部分有自己的句柄,我不太清楚vc中的那个东西是什么样的?能具体点吗?
 
windows的资源管理器就是窗体拆分的例子。
还有w2k,nt等的计算机管理这个东东也是窗体拆分。

它拆分了两个窗口。在VC中控制拆分是非常容易的事情。(VC引入了视图的概念,
但,我想这个不是重点,也不应该是问题)。
另,窗口拆分和Dock技术是两回事,至少在我看来是这样的。

Frame是不是能实现,我不清楚。谁能做个出来。

to yanghai0437,具体的控件名是什么?
 
1。 你的意思是将一个窗体分割成多个操作区域,就像windows的资源管理器
2。 在windows中window 的概念不是窗体,是所有能在屏幕上显示,并且拥有
输入焦点的控件。他们都有独自的句柄。
3。使用TSplitter控件并设置其他控件的Align属性,可以很轻松的实现将一个
窗体分割成多个区域。
 
对啊,用tsplitter很容易实现的。并且拆分后的没个部分也不是你说的窗体。你可以将拆分
后的每个部分放在一个容器里如panel中。
 
太简单了,用TPanel和TSplitter就是了。
 
事实上用TSplitter很难做到我要的效果。大家还是看看VC里的窗体拆分吧
用TPanel和Tsplitter的效果让我后怕。我的操作非常的麻烦的。如果能用
控件什么的作到拆分窗体的那是最好了。
标题说了不用Tsplitter。
我要实现的效果是一个窗口拆分N个窗口,一个子窗口再继续拆分。。。。(大概是这样了)
 
顶部