谁知道Treeview 的checkbox ,选中 事件 是哪一个?

SuperSuperLéon 2003-10-20 10:39:54
谁知道Treeview 的checkbox ,选中 事件 是哪一个?

我的目的是,

在ttreeview 中,打开 checkbox :使得ttreeview 具有单选框。

我想处理这个 checkbox 的 选中事件。但不知道事件是哪一个?

对应的,取消选中的事件 偶也不知道。

麻烦大家了。


thanks.
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprewellkobe 2003-10-21
  • 打赏
  • 举报
回复
Click事件中,找select
sczyq 2003-10-21
  • 打赏
  • 举报
回复
事件:OnMouseDown

// 选项框图片的大小为16x16, 只有点中选项框才有效,否则无效,若配合Data,则TreeView内任意节点可设置有无选项框。


#define IMAGE_NOSELECTED
#define IMAGE_SELECTED

//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TTreeNode *Node = TreeView1->Selected;
if (Button != mbLeft || Node == NULL || Node->Level==0) return;
TRect Rect = Node->DisplayRect(true);
if (X>Rect.Left-33 && X<Rect.Left-17 && Y>Rect.Top && Y<Rect.Bottom)
{
if (Node->StateIndex == IMAGE_NOSELECTED)
{
Node->StateIndex = IMAGE_SELECTED;
// 这里编写选中的处理代码
}
else
{
Node->StateIndex = IMAGE_NOSELECTED;
// 这里编写取消的处理代码
}

// 这里编写公共的处理代码
}
}
//---------------------------------------------------------------------------
ccrun.com 2003-10-21
  • 打赏
  • 举报
回复
文档标题:创建一个带有CheckBox的TreeView
关键字: TreeView,CheckBox,TVS_CHECKBOXES,Node 
作者: BCB 阅读:1217 加入时间:2003-8-21 本文来自http://www.ccrun.com
--------------------------------------------------------------------------------
本文转自csdn,原作: BCB(天下三分明月夜,二分无赖是扬州)

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);
}
}

pepsi1980 2003-10-21
  • 打赏
  • 举报
回复
收藏先...
freshman2003 2003-10-20
  • 打赏
  • 举报
回复
TreeView的OnChange事件中判断Sender。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧