TreeView问题

xmfan2000 2009-06-08 02:14:01
假设有一个窗体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;

请问,这个问题怎么解决,谢谢!
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmfan2000 2009-06-08
  • 打赏
  • 举报
回复
加个空节点是可以达到效果的,但是TreeView为什么会出现这样的情况呢?
zhouyemoye 2009-06-08
  • 打赏
  • 举报
回复
加个空节点?
xmfan2000 2009-06-08
  • 打赏
  • 举报
回复
楼上的,分类树节点前的加号不显示,OnCollapsing事件有问题。
阿三 2009-06-08
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(form2) then
form2 := TForm2.Create(Application);
Form2.Parent := Panel1;
form2.Align := alclient;
form2.Show;
end;

没有什么问题呀

xmfan2000 2009-06-08
  • 打赏
  • 举报
回复
楼上的,假设我将TreeView中的某一个节点保存到一个变量FTempNode中,该变量在整个Form2类有效,然后OnCollapsing事件中这样处理:
procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
AllowCollapse := Node <> FTempNode;
end;

这段代码的目的是不允许折叠FTempNode节点,按照第一种方法创建Form2,是正确的,但是按照第二种方法,这段代码就不对了。FTempNode始终能够折叠。
s11ss 2009-06-08
  • 打赏
  • 举报
回复
我这里测试,Node2前面的加号显示不出来,但TreeView的OnCollapsing事件有效

[Windows XP Home Edition + Delphi 7(Enterprise)]

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧