TreeView1Changing(Sender: TObject; Node: TTreeNode;
  var AllowChange: Boolean);
begin
  AllowChange:=false;
  if 关闭 then exit;
  关闭;
  释放;
end;
TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  创建;
  打开;
end;
用node.data保存窗体的类名,用findclass或getclass创建窗体

解决方案 »

  1.   

    TreeView1Changing(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    begin
      AllowChange:=false;
      if 关闭 then exit;
      关闭;
      释放;
      AllowChange:=true;
    end;
    TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      创建;
      打开;
    end;
    用node.data保存窗体的类名,用findclass或getclass创建窗体
      

  2.   

    设计想法不错,我想可以通过改变它的标志图片,即加上imagelist,通过它显示的不同状态来控制panel里面的窗口的打开、关闭,至于创建和释放可以用treeview的右击来控制。只是建议,仅做参考。
      

  3.   

    你可以利用ttreeview的onchanging和onchange两个事件,以下是伪代码:
    onchanging事件中
    procedure ttreeview1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    begin
         AllowChange:=False;
         for i:=0 to ControlCount-1 do           
              if controls[i] is Tfrom then 
              begin
                   Tform(form1.controls[i]).close;
                   AllowChange:=True;
                   break;                
              end;
    end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var myform:Tform;
    begin
         myForm:=Tform.Create(sender);
         ....
    end;
      

  4.   

    在Treeview的click事件里加入如下代码
    Form2.ManualDock(form1.panel, nil, altop);
    及将设计好的form2 dock到form1.panel上
    大体思路就是这样
      

  5.   

    你可以利用ttreeview的onchanging和onchange两个事件,以下是伪代码:
    onchanging事件中
    procedure ttreeview1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    begin
         AllowChange:=False;
         for i:=0 to ControlCount-1 do           
              if controls[i] is Tfrom then 
              begin
                   Tform(controls[i]).close;     //关闭
                   AllowChange:=True; 
                   Tform(controls[i]).free;      //释放
                   break;                
              end;
    end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var myform:Tform;
    begin
         myForm:=Tform.Create(sender);        //创建
         ....
    end;
      

  6.   

    十分感谢newwen , 你真是用心啊!!接受,给钱了...