假设有一个窗体Form1,上面有一个Panel控件,名字叫Panel1,再有一个窗体Form2,上面放一个TreeView控件,然后在TreeView控件中添加几个节点:var
  Node1, Node2: TTreeNode;
begin
  Node1 := TreeView1.Items.AddChild(nil, 'AAA');
  Node2 := TreeView1.Items.AddChild(Node1, 'BBB');
  Node2.HasChildren := True;当使用下面的方式创建Form2时,Node2前面会显示一个+号,此时,TreeView没有任何问题。Form2 := TForm2.Create(nil);
Form2.Show;当使用下面的方式创建Form2是,Node2前面的加号显示不出来,同时,TreeView的OnCollapsing事件无效:Form2 := TForm2.Create(nil);
Form2.Parent := Form1.Panel1;
Form2.Show;请问,这个问题怎么解决,谢谢!

解决方案 »

  1.   

    我这里测试,Node2前面的加号显示不出来,但TreeView的OnCollapsing事件有效[Windows XP Home Edition + Delphi 7(Enterprise)]
      

  2.   

    楼上的,假设我将TreeView中的某一个节点保存到一个变量FTempNode中,该变量在整个Form2类有效,然后OnCollapsing事件中这样处理:
    procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
      var AllowCollapse: Boolean);
    begin
      AllowCollapse := Node <> FTempNode;
    end;这段代码的目的是不允许折叠FTempNode节点,按照第一种方法创建Form2,是正确的,但是按照第二种方法,这段代码就不对了。FTempNode始终能够折叠。
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if not assigned(form2) then
        form2 := TForm2.Create(Application);
      Form2.Parent := Panel1;
      form2.Align := alclient;
      form2.Show;
    end;没有什么问题呀
      

  4.   

    楼上的,分类树节点前的加号不显示,OnCollapsing事件有问题。
      

  5.   

    加个空节点是可以达到效果的,但是TreeView为什么会出现这样的情况呢?