创建一个带有CheckBox的TreeView

2016-02-19 16:35 3 1 收藏

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

【 tulaoshi.com - 编程语言 】

  

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://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1612501.html

延伸阅读
标签: Web开发
从开始学习到使用ASP到现在也写了不少程序了,最令人头痛的是写数据分页,每次都是由于几个变量名或几个参数的不同,因而需要每次都写哪一段冗长而又繁杂的分页代码,代码长了使得程序的可读性变差,容易出差,调试半天也找不出错在哪里,所以慢慢的我开始使用一些网上的提供的分页函数或分页类。的确省事不少,但是通常的函数和类的做法都是就...
标签: Web开发
下面通过创建一个鼠标滑过加亮显示的 HTC 来演示一下创建 HTC 的过程。 1、创建 HTC 文件的架构。一个标准的 HTC 文件含有一个 SCRIPT 块和一对可选的 COMPONENT 标记。 PUBLIC:COMPONENT SCRIPT /SCRIPT /PUBLIC:COMPONENT 2、写一个可执行的脚本。 在下面的代码中,ATTACH 被用于设置 HTC 接收元素在 onmouseover 和 onmouse...
Function CreateNormalDB(strPathName As String) As Boolean On Error GoTo Exit_ERR Dim wrkDefault As Workspace Dim NewDB As Database CreateNormalDB = False Set wrkDefault = DBEngine.Workspaces(0) If Dir(strPathName) < "" Then Kill strPathName Set NewDB = wrkDefault.CreateDatabase(strPathName, dbLangGeneral) NewDB.Cl...
photoshop如何创建一个美味的立体蛋糕   在这篇文章中,我们解释在photoshop中如何创建一个美味的蛋糕,我们从草图开始,给它添加颜色还有纹理,投影,让它看起来足够美味,让我们开始吧。 教程需要的素材:立体效果的写实蛋糕图标PS教程素材 先看看效果图 Step 1 打开一个新文件,设置分辨率为1024*1024像素...
标签: PS PS基础
完整后的效果图 步骤1 在 Photoshop 中创建一个新文档,按下图设置: 步骤2 双击背景层点击OK解锁。现在,右击图层选择混合选项。在这里,我们将添加一个从浅灰色要深色的径向渐变: 步骤3 使用圆角矩形工具,设置半径为40像素,创建一个多边形。现阶段颜色并不重要,因为我们要在之后应用图层样式。 步骤4 右击该层...

经验教程

531

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部