TreeView的Changing事件:为什么点击一次触发了该事件,再点击的时候没有触发呢?

558047 2004-11-08 07:55:02
如题
...全文
135 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
558047 2004-11-09
  • 打赏
  • 举报
回复
原贴内容:
老大,那该怎么解决点击空白地方的问题呢

你可以使用
TTreeNode *TreeNode1=NULL;
// 取鼠标点击地方的TTreeNode
TreeNode1=TreeView1->GetNodeAt(MousePos.x,MousePos.y);
// 判断鼠标点的地方没有TTreeNode
if(TreeNode1==NULL) //没有节点
{
}
else //有结点
{
}
558047 2004-11-08
  • 打赏
  • 举报
回复
已解决,综合了cnrealboy(中国男人)和myy()的思路。谢谢xpdavis(咕嘟)
铖邑 2004-11-08
  • 打赏
  • 举报
回复
if(TreeView1->Selected)ShowMessage(TreeView1->Selected->Text);


下面这个例子是BCB上带的,可以取指定坐标上的节点,可以在MouseUp、MouseDown事件中使用
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y)

{
if (Source != (TObject *)TreeView1 || TreeView1->Selected == NULL)
return;
THitTests HT = TreeView1->GetHitTestInfoAt(X, Y);
TNodeAttachMode AttachMode;
TTreeNode *pItem = TreeView1->GetNodeAt(X, Y);
if (HT.Contains(htOnItem) || HT.Contains(htOnIcon))
AttachMode = naAddChild;
else if (HT.Contains(htNowhere))
AttachMode = naAdd;
else if (HT.Contains(htOnIndent))

AttachMode = naInsert;
else
return;
TreeView1->Selected->MoveTo(pItem, AttachMode);
}
558047 2004-11-08
  • 打赏
  • 举报
回复
cnrealboy(中国男人) 那怎么解决空白的问题呢
myy() 能详细说说么
myy 2004-11-08
  • 打赏
  • 举报
回复
可以用MouseUp 或 MouseDown 事件,GetNodeAt(...) 获取节点 或 GetHitTest(...)获取更细致的信息。
cnrealboy 2004-11-08
  • 打赏
  • 举报
回复
TreeView1->Selected->Text;
注意,click事件在你并没有点击到该节点的时候,也会触发的,你可以在空白区域点击一下试一试。
3xcom 2004-11-08
  • 打赏
  • 举报
回复
UP.
558047 2004-11-08
  • 打赏
  • 举报
回复
用click事件如果判断Node的Text呢?
558047 2004-11-08
  • 打赏
  • 举报
回复
那我该用什么事件来做类似的这种功能呢?
铖邑 2004-11-08
  • 打赏
  • 举报
回复
Occurs when the selection is about to change from one node to another.
帮助里面写的很清楚,选择的节点将要改变时触发该事件。一点击就触发的是Click事件
myy 2004-11-08
  • 打赏
  • 举报
回复
因为没有change啊。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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