创建一个带有CheckBox的TreeView

金牛考试大师

金牛考试大师

2016-02-19 16:35

下面,图老师小编带您去了解一下创建一个带有CheckBox的TreeView,生活就是不断的发现新事物,get新技能~

  

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, &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, &tvItem);
}
void SetChildChecked(TTreeNode *ANode,bool yn)
{   // 把它的子孙都置成一样
   int count=ANode-Count;
   SetNodeChecked(ANode,yn);
   if (count!=0)
     for (int i=0;icount;i++)  // 递归
       SetChildChecked(ANode-Item[i],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);
      }  
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

创建一个带有CheckBox的TreeView

编程语言 网络编程
创建一个带有CheckBox的TreeView

怎么让TreeView前面显示CheckBox

编程语言 网络编程
怎么让TreeView前面显示CheckBox

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

创建一个Web投票系统

ASP
创建一个Web投票系统

创建一个ASP通用分页类(一)

ASP
创建一个ASP通用分页类(一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

为孩子创建一个自由的空间

育儿知识
为孩子创建一个自由的空间

Illustrator创建一个时尚的斜面浮雕

Illustrator CorelDRAW
Illustrator创建一个时尚的斜面浮雕

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10任务切换指南

Win10任务切换指南

C++Builder中"异形"按钮的实现

C++Builder中
下拉加载更多内容 ↓