【发布时间】:2011-08-02 12:48:05
【问题描述】:
我想在应用程序启动时展开主窗体上的树。 我该怎么做?我找不到相应的属性。 C++ 建设者 2009。
【问题讨论】:
标签: delphi delphi-2009 c++builder
我想在应用程序启动时展开主窗体上的树。 我该怎么做?我找不到相应的属性。 C++ 建设者 2009。
【问题讨论】:
标签: delphi delphi-2009 c++builder
有很多方法可以做到这一点。最简单的应该是
TreeView1.FullExpand;
在接受的答案中 - 或者
if TreeView1.items.GetFirstNode <> nil then
TreeView1.items.GetFirstNode.Expand(True);
或
if TreeView1.items[0] <> nil then
TreeView1.items[0].Expand(True);
如果您想从不是根节点的特定节点完全展开,则 TTreeNode 上的 Expand 方法很有用。
【讨论】:
添加树节点时,使其扩展属性为true
你会发现 treeNode 对象的属性,在添加到节点列表之前将其设置为 true。
您还可以为 treeView 找到一个名为 ExpandAll 的方法
我的问候
试试这个代码
//this will expand all nodes of Level and their parents
procedure ExpandTree(Tree: TTreeView; Level: integer);
procedure ExpandParents(Node: TTreeNode);
var
aNode : TTreeNode;
begin
aNode := Node.Parent;
while aNode <> nil do begin
if not aNode.Expanded then
aNode.Expand(false);
aNode := aNode.Parent;
end;
end;
var
aNode : TTreeNode;
begin
if Tree.Items.Count > 0 then begin
aNode := Tree.Items[0];
while aNode <> nil do begin
if aNode.Level = Level then begin
aNode.Expand(false);
ExpandParents(aNode);
end;
aNode := aNode.GetNext;
end;
end;
end;
//this will expand the Node and it's parents
procedure ExpandNode(Node: TTreeNode);
var
aNode : TTreeNode;
begin
Node.Expand(false);
aNode := Node.Parent;
while aNode <> nil do begin
if not aNode.Expanded then
aNode.Expand(false);
aNode := aNode.Parent;
end;
end;
并查看参考 http://www.delphipages.com/forum/showthread.php?t=159148
我的问候
【讨论】:
like so.
您只需在树视图上调用FullExpand()。
【讨论】:
TopItem 和/或Select。
tvTreeView.Selected := tvTreeView.TopItem或tvTreeView.Select(tvTreeView.Item[0])- 它对我不起作用。你是怎么解决的?
TopItem 属性上,我必须手动设置它。也许它会对某人有所帮助。 tvTreeView.FullExpand;tvTreeView.TopItem := tvTreeView.Items.GetFirstNode;