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;i<count;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);
}
}
创建带有CheckBox的TreeView
时间: 2025-01-26 09:33:54
创建带有CheckBox的TreeView的相关文章
创建带有关联的 XML 架构的 XML 文件
xml|创建|架构 一.创建带有关联的 XML 架构的 XML 文件 1.创建新的 Windows 应用程序项目 首先需要在 Visual Basic 或 Visual C# 中创建新的 Windows 应用程序.创建一个新项目并将其命名为"XMLCustomerList" ,从"文件"菜单中指向"新建",然后单击"项目"以显示"新建项目"对话框. 根据要使用的语言,在"项目类型"窗格中
过程函数-navicat for mysql 创建 带有IN参数 的过程时 保存报错
问题描述 navicat for mysql 创建 带有IN参数 的过程时 保存报错 如题. 解决方案 自己找到问题了,下面的参数要写上长度,例如:IN shebeihao varchar(20) 解决方案二:
【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家
原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. 不要犹豫了,就使用快速创建地图工具吧! -------------------------------------------------------------------------------------- 如何快速创建地图? 一.转入百度提供的快速创建地图工具页面:http://openap
带checkbox的treeview输出到浏览器的问题.
问题描述 因为有个问题要涉及到javascript对treeview的checkbox的操作,我看了treeview在客户端的源码,好多的div,href,table,具体不知道它是怎么有这些标签拼成的,哪位能告诉我么? 解决方案 解决方案二:今天早上的目的是把0回复的顶起来解决方案三:顶起来解决方案四:该回复于2007-12-04 11:20:10被版主删除
SharePoint 2010创建带有关联窗体和启动窗体的工作流
创建 SharePoint 顺序工作流项目 首先,在 Visual Studio 中创建一个顺序工作流项目. 顺序工作流是一系列步骤,这些步骤按顺序执行,直到最后一项活动完成. 在此过程中,您将创建一个应用于 SharePoint 中的"共享文档"列表的顺序工作流. 利用此工作流的向导,您可以将此工作流与网站或列表定义关联,并可以确定工作流的启动时间. 1. 通过指向"文件"菜单上的"新建"并单击"新建项目",显示"
在MySQL中创建带有IN和OUT参数的存储过程的方法_Mysql
在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话.如果你通过命令行控制 MySQL,你需要记住准确的语法.一个快速示例可以很好的帮助你做到这点.在MySQL 入门教程中,我们能够看到很多关于如何创建储存过程 和如何利用 IN 和 OUT 参数调用存储过程的示例.这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法.这些示例已在 MySQL 5.5 中通过测试.我们将用下面的雇员表创建并测试这些储存过程: mys
Visual C# 2010 实现资源管理器
演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面 Visual Studio 2010 其他版本 此主题尚未评级 - 评价此主题 Visual Studio 的一个优点是能够在短时间内创建具有专业级外观的 Windows 窗体应用程序. 通常情况下,创建一个带有 ListView 和 TreeView 控件的用户界面 (UI),该界面类似于 Windows 操作系统的 Windows 资源管理器. Windows 资源管理器显示
Asp.net TreeView来构建用户选择输入的方法 推荐_实用技巧
一般的单项数据选择可以使用DropdownList控件来实现,但对于有多个选择性输入,而且输入有层次关系的内容,最好选择TreeView控件来实现. 本文介绍如何使用使用TreeView控件来有效获取用户的输入,其中涉及到TreeView控件的级联选择.去掉节点HTML链接变为展开目录.获取选择内容.如何构造数据库的信息变为树形内容以及弹出窗口使用等知识点,本文输入应用级别的例子,希望能做个记号,对己对人,皆为利好!^_^ 本文的经营范围是一个可以输入分类及详细子内容的,由于内容繁多,而且具有一
使用Asp.net的TreeView来构建用户选择输入
选择优于输入,这是一般人的共识,面对繁多的数据,提供良好的选择界面,一方面增强用户的界面体验,一方面也提高了数据的准确性,更节省了用户的宝贵时间.一般的单项数据选择可以使用DropdownList控件来实现,但对于有多个选择性输入,而且输入有层次关系的内容,最好选择TreeView控件来实现. 本文介绍如何使用使用TreeView控件来有效获取用户的输入,其中涉及到TreeView控件的级联选择.去掉节点HTML链接变为展开目录.获取选择内容.如何构造数据库的信息变为树形内容以及弹出窗口使用等知