各位大侠,我用treeview做的连接数据库,我想问一下怎么样才能实现以下目标:
当我选择到一个父节点的时候,我能知道这是第几个父节点
这样才能准确寻找数据库中的相关记录,因为有的时候id号有相同的,treeview节点基本设置是:id1
name
sex
buwei
sheye1
sheye2
id2
name
sex
buwei
sheye1
sheye2
.
.
.
.
.
.
.
.
.
当我选择到一个父节点的时候,我能知道这是第几个父节点
这样才能准确寻找数据库中的相关记录,因为有的时候id号有相同的,treeview节点基本设置是:id1
name
sex
buwei
sheye1
sheye2
id2
name
sex
buwei
sheye1
sheye2
.
.
.
.
.
.
.
.
.
TreeView1.Selected.Parent.Index利如,在一个三级树里,一个节点的index是1 ,其父节点的index是3, 其父节点的父节点的index是4,那 ID 就是431另外,也可以把节点ID标记在TreeNode的Data属性里
在数据库中有的时候可能是重复登记一个人,当你要在treeview 中删除你选择的其中的一个的时候,就容易出错,为了避免这个错误,我想把我选择的节点的最顶层节点(也就是代表id的那个节点的序号)找出来,并由当前id的序号在数据库中找到对应记录删除,比如说:
id name sex buwei sheye xuhao
0001 zhangsan f shou 11 ???
0002 lisi m shou 11 ???
0001 zhangsan f tou 11 ???
......
我的中显示的是
0001
zhangsan
f
shou
11
0002
lisi
m
shou
11
0001
zhangsan
f
tou
11
............
这个时候就有重复的记录了
431 zhangsan f shou 11 ???
882 lisi m shou 11 ???
431 zhangsan f tou 11 ???上面这个id , 每个人都是唯一的, 那就是我在前面举例的 431
你只要删除那个 431 的节点, 就用代码在数据表中删除 id 为431的所有记录.
var
Node : TTreeNode;
begin
Node := TreeView1.Items.AddChild(某父节点, '张三');
Node.Data := Pointer(0001);//假设ID是0001
end;使用时
integer(TreeView1.Selected.Data)就是选中节点的ID
AbsoluteIndex :相对于树的第一个节点的位置
Index :相对于其父节点的第一个子节点位置
Data :指针,一般用它来保存节点详细数据结构的变量地址
HasChildren :是否有孩子节点
ImageIndex :节点的图片的imagelist里的index
Level :级数,一级根节点为0
Parent :父节点对象
ID PID Name ID是自己的id PID是父ID 这样就一目了然了 ^_^ 其他的haschildren之类的都可以看情况处理
但是我觉得象LZ说的那样的话,建树没有任何意义,还不如用DBGRID来显示。
树一般是表现多个记录间上下级关系用的,对于单条记录没什么用