下面的代码可以让Treeview前面显示CheckBox. const TVS_CHECKBOXES = $00000100; procedure SetComCtrlStyle(WinCtrl: TWinControl; Value: Integer; UseStyle: Boolean); var Style: Integer; begin if WinCtrl.HandleAllocated then begin Style := GetWindowLong(WinCtrl.Handle, GWL_STYLE); if not UseStyle then Style := Style and not Value else Style := Style or Value; SetWindowLong(WinCtrl.Handle, GWL_STYLE, Style); end; end; 然后 在 OnCreate 调用: SetComCtrlStyle(TreeView1, TVS_CHECKBOXES, True); 或者干脆简单点,一句话完事: SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100); |
正在打勾的TreeNode: TreeView.GetNodeAt(X, Y)
取得打勾的代码也有了
设置打勾状态 TreeNode.StateIndex := Byte(boolCheckState)+1
得到父节点 TreeNode.Parent
得到子节点 TreeNode.getFirstChilde/GetNextChiled(AChildNode)
Delphi中的Boolean是1byte的数据类型,只有0或1两种值,Byte(ABoolean)就是什么都没做把它当成一个Byte值,实际上和Ord()的作用是一样的