在已添加checkbox的TreeView中,选中了父节点(获得输入焦点后打勾)如何让子节点自动被选中(选中意义为打勾,不是得到输入焦点),请给源码提示,谢谢

masterkill 2009-02-09 01:15:33
如题,相反,在取消一个子节点的打勾状态后让其父节点的打勾状态也随即取消(Delphi)
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seamour 2009-02-09
  • 打赏
  • 举报
回复
查消息啊,只要知道一个跟TreeView有关的东西就可以找过去了。msdn上都有纯的c代码(虽然写的不一定都很标准),就很容易看懂了。像那个function就是查到的消息里有个例子,然后我就稍微翻译了一下再改一点儿变成delphi能用的了

delphi中的Boolean是1byte的数据类型,只有0或1两种值,Byte(ABoolean)就是什么都没做把它当成一个Byte值,实际上和Ord()的作用是一样的,写成Byte()算是我的思维惯性吧
masterkill 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Seamour 的回复:]
msdn本来就不写delphi的东西,delphi又不是ms家的
[/Quote]
其实我知道这方面的学习不能靠这样问的,我宁可debug一个星期没有结果,也不愿意别人帮搞定,做.sys是这样的。。。目前我刚接触delphi,希望完成个小事情,时间紧迫,请谅解
而且您知道我不可能有debug方法,一旦code出问题我只能一行一行看,根据自己掌握的语法,结合逻辑来看。
最费劲的问题还是目前我没有一个工具可查询对象,结构,函数等。
masterkill 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Seamour 的回复:]
msdn本来就不写delphi的东西,delphi又不是ms家的
[/Quote]
我记得有人给我讲过在MSDN......
比如说我知道了GetTreeNodeChecked这个function,我是否可以从哪里查到呢?就像是从MSDN查API DeviceIoControl那样
你给了我很多例子,我非常感谢,但对于才接触Pasic语言的我来说要弄懂需要时间,难在比如说Byte(chkStat)+1这样的表达式的意义,您高估了我的理解力。。。
Seamour 2009-02-09
  • 打赏
  • 举报
回复
msdn本来就不写delphi的东西,delphi又不是ms家的
臭你个臭臭 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Seamour 的回复:]
我觉得慢前前后后你得到的代码里早都已经解答了你的问题:
正在打勾的TreeNode: TreeView.GetNodeAt(X, Y)
取得打勾的代码也有了
设置打勾状态 TreeNode.StateIndex := Byte(boolCheckState)+1
得到父节点 TreeNode.Parent
得到子节点 TreeNode.getFirstChilde/GetNextChiled(AChildNode)

你还有什么解决不了的导致写不出来代码的问题呢?
[/Quote]
对了,你可以把你参考的MSDN版本给我说说不,我用的以前2001版的,貌似没有你所说的Delphi相关信息
Seamour 2009-02-09
  • 打赏
  • 举报
回复
我觉得慢前前后后你得到的代码里早都已经解答了你的问题:
正在打勾的TreeNode: TreeView.GetNodeAt(X, Y)
取得打勾的代码也有了
设置打勾状态 TreeNode.StateIndex := Byte(boolCheckState)+1
得到父节点 TreeNode.Parent
得到子节点 TreeNode.getFirstChilde/GetNextChiled(AChildNode)

你还有什么解决不了的导致写不出来代码的问题呢?
zwk_9 2009-02-09
  • 打赏
  • 举报
回复
个人认为用checkbox比较麻烦,不如做两个类似于checkbox的图片:一个打钩,一个不打钩
然后利用treeview的item的相关属性,递归地来实现

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧