我想在程序中做一个功能,当点击实现该功能的按钮时,可以弹出一个子窗体在界面窗体的最左边,这个子窗体有一个叉叉,可以关闭它。我主要是想在这个子窗体中用TTreeView控件做一个树形结构列表,代替菜单,点击其中的命令,在右边的部分形成一个编辑页面。左右两部分之间有一个Spliter,可以改变两部分的相对大小。当然这整个界面是位于一个MDI子窗体中的.
    最难实现的是这个可以关闭的子窗体的实现。也许代码不多。
  请高手们不吝赐教!!!

解决方案 »

  1.   

    不太明白意思,mdi子窗体关闭close事件中:action := cafree
      

  2.   

    方法有两种:
    1、使用停放功能:
       a.在主窗体的左面放置一个panel(panel1)控件,设置dragkind=dkDock;dragmode=dmAutomatic;docksite=true;
       b.创建子窗体(form2),同样设置dragkind=dkDock;dragmode=dmAutomatic;
       c.主窗体按钮click事件,
          form2.ManualDock(panel1);
      
    2、使用API函数setwindowlong,代码段如下:
      Windows.SetParent(fForm.Handle2, panel1.Handle);
      Form2.BoundsRect:=panel1.ClientRect;
      form2.show;
      

  3.   

    关闭事件中写;
    actionL=cafree;
    formname:=nil;
    建立窗体
    if not assigned(formname) then application.createform(Tfromname,formname);
      

  4.   

    我原來也想這樣做,但比較困難,後來,我改成了panel,中間有個Spliter,右邊的grid的align設成alClient,利用一個按鈕來隱藏和顯示這個panel,也還不錯.
      

  5.   

    To:PaPaCong(小勇)   你好像搞反了,按你的第一种方式,结果Panel入坞到了Form2里。