delphi -----TTreeView
TTreeView 与两个重要的类相关:TTreeNodes、TTreeNode 。
TTreeNodes即是TTreeView 的Items属性,TTreeNodes是TTreeNode的合集,TTreeNode代表的是TTreeView的节点,不按主从关系,节点依次存储在Items中。
TTreeView的Select方法用来指定TTreeView选择的节点,可以选择多个节点。
TTreeNodes使用add添加同级节点,使用addChild添加下级节点。node.parent表示node节点的上级节点。
1、添加节点方法:http://www.cnblogs.com/del/archive/2008/03/11/1100604.html
2、获取节点的层级,个数等信息,该节点详细信息内容:http://www.cnblogs.com/del/archive/2008/03/12/1101356.html
Node.Count //下一级个数
Node.Level//层级
Node.Index//兄弟排行
3、定位:和文本框匹配:http://www.cnblogs.com/yangxuming/p/6636134.html
node := node.Parent;//定位到父节点
node:= Node.GetNext;//定位到下个点
node:=Node.Parent.getNextSibling; //定位到子节点的父节点的下个兄弟节点
Node:=TreeView1.Selected; //定位到已选择的点
4、if treeview1.Selected=nil then Exit;//判断有没有选择内容
5、删除
删除一个父节点,其子节点会自动被删除。
一个节点的属性Count表示其直接的子节点数(不包括其“孙”节点),通过Item[]属性可以访问其子节点。
例如要删除1个节点下所有的子节点:
for i:=Node.Count-1 downto 0 do
Node.Item[I].Delete;
如此即可。
或者 Node.DeleteChildren;
TreeView1.Items.Clear;//删除所有
6、 例子:查询当前节点所有父节点内容
nlevel:= Node.Level;
for I := 0 to nlevel do
begin
parentArr[i]:= Node.Parent.Text; //父节点存到一个数组
Node:=Node.Parent; //循环后再查询更上级父节点
end;
7、方法:
OnCollapse:闭合
onExpanded:展开
onMouseDown:鼠标点下
8、关联一个poupupmenu,和以前一样关联一下,发现不能获取节点信息,所以要添加一个方法
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TreeNode:TTreeNode;
begin
if Button<>mbRight then Exit;
TreeNode:=TreeView1.GetNodeAt(x,y);
if TreeNode<>nil then
begin
TreeView1.Selected:=TreeNode;
end;
end;
9、是否有选 中
if treeview1.Selected=nil then //如果没有被选中的则。。。
10、在一个控件 中定义TreeView2
var Nodes: TTreeNodes; {尽早习惯使用 TTreeNodes} begin Nodes := TreeView2.Items;