怎样用代码把一个Form,dock到一个panel中

解决方案 »

  1.   

    在TWinControl类中有一个DockSite属性(boolean),它的作用是是否允许别的控件停靠在它的上面,在TControl类中有一个DragKind属性,如果要这个控件能停靠在别的控件上,就把DragKind属性设成dkDock。就这么简单,只要设置一下属性,一个支持停靠的程序就完成了。所以你的问题只要用下面的代码就可以实现:
    Panel.DockSite:=True;
    Form1.DragKind:=dkDock;
    Form1.DragMode:=dmAutomatic;//表示可以自动停靠不过这里只是完成了很简单的停靠任务,如果要做比较高级的停靠效果,还需要对多个停靠事件进行编码,看看这个联结,介绍的很详细啊http://www.5xsoft.com/data/200109/1708121601.htm
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Rect:TRect;
    begin
      Rect :=Panel1.ClientRect;
      Form2.Dock(Panel1,Rect);
      Form2.Show;
    end;
      

  3.   

    设置属性:Form1.DragKind:=dkDock;
    Form1.DragMode:=dmAutomatic;//Panel1.DockSite:=True;
    Panel1.UseDockManager:=True;停靠:  Form1:=TForm1.Create(Self);
      Form1.HostDockSite:=Panel1;
      Form1.Show;