2023年6月22日发(作者:)
TreeView详细⽤法Treeview⽤于显⽰按照树形结构进⾏组织的数据。
Treeview控件中⼀个树形图由节点(TreeNode)和连接线组成。TtreeNode是TTreeview的基本组成单元。
⼀个树的节点⼜包含⽂本(Text)和数据(Data)。Text为String类,Data则为⽆定形指针(Untyped Pointer),
可以指向⼀个与节点相联系的数据结构。
每⼀个节点下⼦节点形成这⼀节点的Items属性,当前节点有⼀个唯⼀的Index(TreeNode的Index属性),
⽤于说明⼦节点在Items中的位置,每⼀个节点下的⼦节点是顺序编号的,第⼀个是0,第⼆个是1,依次类推。
⽤IndexOf⽅法获得⼦节点的顺序,绝对顺序(AbsoluteIndex)则是指从Treeview第⼀个项开始的顺序值,
第⼀个是0,如此推下去。Item属性则根据Index的值返回当前节点的第Index个⼦节点。Count则表明属于
此项的所有⼦节点的数量。⽤MoveTo⽅法将Item由⼀个位置移到另⼀个位置。
Expanded属性表明是否所有的⼦项都全部展开(包括⼦项的⼦项),为True表⽰全部展开。
IsVisible属性表明⼀个项是否在树中能被看到,如果树全部展开那么这个Item是肯定可以
被看到。
HasChildren属性表明⼀个项是否有⼦项。 GetFirstChild, GetLastChild, GetPrevChild,
and GetNextChild分别返回当前项⼦项的第⼀个、最后⼀个和前⼀个、后⼀个项。
GetNextSibling and GetPrevSibling则返回在同⼀Level下的下⼀个和上⼀个项。
GetNextVisible and GetPrevVisible则返回能看得到的下⼀个和上⼀个项。如果⼀个节点
有Parent,则HasAsParent⽅法返回True. Parent为当前项的⽗项。Focused属性确定焦点是
否落在此节点上,被Focus时会⼀个标准的⽅框围住。很显然,只有⼀个节点会被聚焦。
Selected属性表明⼀个节点是否被选中,同样只有⼀个节点会被选中。
DropTarget属性表明节点在拖动操作中是源还是⽬标。
.1.添加、删除、修改节点:
静态的⽅法可以在设计时通过Items的编辑器设置各节点的内容。
在添加和删除前必须保证有节点被选中(ed = nil)
⽤AddFirst, AddFirstChild, AddChild等先添加根节点,如st( nil, 'Root');
然后以此为基础,添加此项的⼦节点。
删除节点
编辑节点内容
xt
注意:由于根节点没有⽗节点 (= nil)
此外,在⼤批量添加数据到Treeview中时最好使⽤
pdate;
添加节点
ate
这样能加快显⽰速度。
2.在节点上添加图象
Treeview中⼏个与图象相关的属性:
SelectedIndex:当节点被选中时在TimageList 中选什么样的图象
OverlayIndex:选那副图象作为掩图(⼀幅图象透明地显⽰在另⼀幅图象的前⾯),
⽐如⼀个节点不可⽤时加⼀副X图象在其前⾯。
ImageIndex:在常态时选⽤的图的序号
StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显⽰图象
⽐较典型的,象在⽂件管理器中的所显⽰的⼀样,Treeview控件在节点之前也可以
显⽰图象。在Form中放置⼀ImageList控件,加⼊⼏个图⽚,分别被Index为0,1,…
在Treeview的Image属性项填⼊你所加⼊的ImageList的控件名称。TreeNode的ImageIndex
表⽰节点未被选中时(Selected=nil)的图⽚序号,SelectedIndex表⽰节点被选中时图⽚序号。
3.关于Level
Level的概念可以⽤下图表⽰:
Level0 Level1 Level2
4.排序
SortType决定什么时候进⾏排序; ort对节点进⾏排序,如果不能满⾜要求,你可以定义⾃⼰的CustomSort⽅法。
&Drop操作,与标准的拖放操作使⽤⽅法⼀样
----------------------------------------------------------------------------
TreeView的使⽤⽅法
基本信息:
TreeView 是⼀个显⽰树型结构的控件,每⼀个节点都是⼀个新类,
使⽤具有代表性
每个节点都有四个值:
TEXT:显⽰⽂字 Image Index:显⽰图形序号
Selected Index:
State Index:
(1)建⽴⽬录项(本例中使⽤的TREEVIEW名称为:TvwTips)
增加根⽬录下的节点:(节点)
var
CatNode : TTreeNode; //先建⽴⼀个TREEVIEW使⽤的⼦对象
begin
us; //将焦点置到这个TREEVIEW控件上
{ 在根标题下建⽴⼀个新的⼦标题 }
CatNode := ld(
stNode,'New Category' );
ndex := 1;
edIndex := 2;
xt; { 允许⽤户改变这个标题 }
end;
增加下⼀级⽬录(内容):
var
ParentNode, TipNode : TTreeNode; //先建⽴TREEVIEW使⽤
的⼦对象
VersionNum : Integer;
begin
us; //将焦点置到这个TREEVIEW控件上
VersionNum := TMenuItem( Sender ).Tag; { Ver num of new tip }
ParentNode := ed; { 取出当前的选中节点 }
if = nlTip then{ Parent cannot be a tip node }
ParentNode := ;
TipNode := ldObject( ParentNode,'New
Subject',Pointer( VersionNum ) );
ndex := 3; { Normal tip bitmap }
edIndex := 4; { Highlighted tip bitmap }
sible; { Move new tip node into view }
xt; { Immediately allow user to edit subject }
EnableTreeViewFunctions( );
;
ed := False;
end;
(2)说明
stNode 返回TREEVIEW的第⼀个节点,函数类型为
:TTreeNode
返回当前TreeView的全部节点数,整数
返回当前选中节点的在⽬录树中的级别,
根⽬录为0
返回当前选中节点上级节点,函数类型为
:TTreeNode〖暴风侧影〗特别提⽰: Expand(False)不展开其⼦孙结点, Expand(True)全部展开。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687381490a5815.html
评论列表(0条)