• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

关于如何在treeview中打出结点下的所有子结点。

ctrlqrj 2004-12-22 09:49:46
如题,主要是在权限设置用的树状如下。

基本资料(a)
  员工资料(b)
  客户资料(c)
  商家资料(d)
在此树中,主要是通过节点的imageindex来决定是否拥有此权限,imageindex=1为是,为2则否,
在程序中,是通过双击节点来改变imageindex的值的。
在此我想要的效果是当a点为2时,那么bcd要为2,另一种情况是,当bcd中任何一个为1时,那a必须为1.

现在的问题是小弟对此控件不清楚,具体要如何实现呢?
...全文
132 点赞 收藏 10
写回复
10 条回复
g961681 2004年12月30日
简单说明一下
1。这个程序里有一个treeview和一个imglist控件。
其中就两个图标0和1,分别为勾和叉:0为叉,1为勾。
同时,是与否,也是用0和1表示的,不是用1和2来表示的。
2。至于你说的两个功能均以实现。
3。帖子时间很长了,在这么长时间内,你自己应该能够在相关资料上找到答案的!
回复 点赞
g961681 2004年12月30日
procedure TForm1.tv1DblClick(Sender: TObject);
var
i: Integer;
begin
if tv1.Selected = nil then Exit;
tv1.Selected.ImageIndex := (tv1.Selected.ImageIndex + 1) mod 2;
tv1.Selected.SelectedIndex := tv1.Selected.ImageIndex;
if (tv1.Selected.ImageIndex = 0) and (tv1.Selected.Parent <> nil) then
begin
tv1.Selected.Parent.ImageIndex := 0;
tv1.Selected.Parent.SelectedIndex := 0;
end;
if (tv1.Selected.ImageIndex = 1) and (tv1.Selected.HasChildren) then
begin
for i := 0 to tv1.Selected.Count - 1 do
begin
tv1.Selected.Item[i].ImageIndex := 1;
tv1.Selected.Item[i].SelectedIndex := 1;
end;
end;
tv1.Repaint;
tv1.FullExpand;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
tv1.FullExpand;
end;
回复 点赞
Blakhawk 2004年12月30日
在change事件中写代码来实现就可以了。
回复 点赞
ctrlqrj 2004年12月29日
好象还未有我想要的答案,再顶。。。
回复 点赞
ctrlqrj 2004年12月25日
现在我不懂的就是如何通过getfirstchild来找出基本资料(a)下面的三个子节点啊,而且前提是不知道,他下面有多少个子节点。
回复 点赞
ctrlqrj 2004年12月25日
现在我不懂的就是如何通过getfirstchild来找出a下面的b、c、d这三个子节点啊。
回复 点赞
何鲁青 2004年12月23日
明白你的意思
相应双击事件为节点的imageIndex赋值就是了
先用TreeView1.select取到被选中的节点
如果是将此节点赋1,那么就用item.getparent查找它的父节点,将父节点的也赋1
如果是将此节点副2,那么就用item.getfirstchild查找它的自节点,然后循环将所有自节点副2
这样就应该可以了。
回复 点赞
ctrlqrj 2004年12月23日
没有人来,只好自己顶了。。。
回复 点赞
ctrlqrj 2004年12月23日
可怜我等了成晚。。。
回复 点赞
ctrlqrj 2004年12月22日
在线等待
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1472

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告