如题,相反,在取消一个子节点的打勾状态后让其父节点的打勾状态也随即取消(Delphi)

解决方案 »

  1.   

    个人认为用checkbox比较麻烦,不如做两个类似于checkbox的图片:一个打钩,一个不打钩
    然后利用treeview的item的相关属性,递归地来实现
      

  2.   

    我觉得慢前前后后你得到的代码里早都已经解答了你的问题:
    正在打勾的TreeNode: TreeView.GetNodeAt(X, Y)
    取得打勾的代码也有了
    设置打勾状态 TreeNode.StateIndex := Byte(boolCheckState)+1
    得到父节点 TreeNode.Parent
    得到子节点 TreeNode.getFirstChilde/GetNextChiled(AChildNode)你还有什么解决不了的导致写不出来代码的问题呢?
      

  3.   

    对了,你可以把你参考的MSDN版本给我说说不,我用的以前2001版的,貌似没有你所说的Delphi相关信息
      

  4.   

    msdn本来就不写delphi的东西,delphi又不是ms家的
      

  5.   

    我记得有人给我讲过在MSDN......
    比如说我知道了GetTreeNodeChecked这个function,我是否可以从哪里查到呢?就像是从MSDN查API DeviceIoControl那样
    你给了我很多例子,我非常感谢,但对于才接触Pasic语言的我来说要弄懂需要时间,难在比如说Byte(chkStat)+1这样的表达式的意义,您高估了我的理解力
      

  6.   

    其实我知道这方面的学习不能靠这样问的,我宁可debug一个星期没有结果,也不愿意别人帮搞定,做.sys是这样的目前我刚接触delphi,希望完成个小事情,时间紧迫,请谅解
    而且您知道我不可能有debug方法,一旦code出问题我只能一行一行看,根据自己掌握的语法,结合逻辑来看。
    最费劲的问题还是目前我没有一个工具可查询对象,结构,函数等。
      

  7.   

    查消息啊,只要知道一个跟TreeView有关的东西就可以找过去了。msdn上都有纯的c代码(虽然写的不一定都很标准),就很容易看懂了。像那个function就是查到的消息里有个例子,然后我就稍微翻译了一下再改一点儿变成delphi能用的了delphi中的Boolean是1byte的数据类型,只有0或1两种值,Byte(ABoolean)就是什么都没做把它当成一个Byte值,实际上和Ord()的作用是一样的,写成Byte()算是我的思维惯性吧