创建一个带有CheckBox的TreeView

转载 2007年09月16日 14:54:00
void __fastcall TForm1::FormCreate(TObject *Sender)
{
SetWindowLong(TreeView1->Handle,GWL_STYLE,
GetWindowLong(TreeView1->Handle,GWL_STYLE) | TVS_CHECKBOXES);

}
//判断一个节点是否处于Checked状态
bool GetNodeChecked(TTreeNode *ANode)
{
TVITEM tvItem;
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = ANode->ItemId;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
TreeView_GetItem(ANode->TreeView->Handle, %26amp;tvItem);
return ((BOOL)(tvItem.state >> 12) -1);
}
//设置一个节点为Checked状态或者Unchecked状态,由参数IsSetToChecked来确定
void SetNodeChecked(TTreeNode *ANode,bool IsSetToChecked)
{
TVITEM tvItem;
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = ANode->ItemId;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
tvItem.state = INDEXTOSTATEIMAGEMASK(IsSetToChecked?2:1);
TreeView_SetItem(ANode->TreeView->Handle, %26amp;tvItem);
}
void SetChildChecked(TTreeNode *ANode,bool yn)
{ // 把它的子孙都置成一样
int count=ANode->Count;
SetNodeChecked(ANode,yn);
if (count!=0)
for (int i=0;i SetChildChecked(ANode->Item,yn);
}
// TTreeNode *ClickNode; // 保存点中的节点
// bool NodeChecked; // 保存点中的节点checked
void __fastcall TForm1::TreeView1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
ClickNode=TreeView1->GetNodeAt(X,Y);
if (ClickNode!=NULL) // 保存原节点的Checked值
NodeChecked=GetNodeChecked(ClickNode);
}
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (ClickNode!=NULL)
if (GetNodeChecked(ClickNode)!=NodeChecked)
{ // 把它的子孙都置成一样
NodeChecked=!NodeChecked; // 更新它
SetChildChecked(ClickNode,NodeChecked);
}
}
 

相关文章推荐

winform treeview checkbox----递归算法利用

现勒,请看 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat...

vb treeview checkbox 源码

  • 2013年04月30日 17:45
  • 2KB
  • 下载

silverlight 如何操作 带 checkbox的 treeview

关于在silverlight 中添加 带有 checkbox 的treeview 的方法,我是参考了这个博客的做法:http://www.cnblogs.com/daizhj/archive/2009...

TreeView的CheckBox实现

  • 2008年07月25日 11:03
  • 56KB
  • 下载

C# TreeView 自定义CheckBox

  • 2015年06月29日 01:08
  • 729KB
  • 下载

Asp.net TreeView异步加载数据,并结合checkbox实现多选删除

JS:         void PopulateNode(Object sender, TreeNodeEventArgs e)         {             Populat...

绑定TreeView上的CheckBox

  • 2015年05月13日 16:40
  • 802B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建一个带有CheckBox的TreeView
举报原因:
原因补充:

(最多只允许输入30个字)