vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本

vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本,第1张

CPoint pt;

GetCursorPos(&pt);//获取当前鼠标点击坐标

m_treeScreenToClient(&pt);//将屏幕坐标转换为客户区坐标

HTREEITEM hItem = treeHitTest(pt);//点击测试,当前点击的是否为节点

if(NULL != hItem)//是的话,进行下面 *** 作

{

 循环m_treeGetParentItem

     m_treeGetItemText

  直到GetParentItem返回空,表示当前为根节点

}

大概就是这样 具体的代码自己写写看 代码需要放到树形控件的鼠标单击响应函数里!

BOOL bCheck;

TVHITTESTINFO ht;//一个区域范围

GetCursorPos(&htpt);//获得区域范围内的光标

m_tree1ScreenToClient(&htpt);//将鼠标的屏幕坐标,转换成树形控件的客户区坐标

htflags = TVHT_ABOVE;

//获取鼠标点击的节点的消息

HTREEITEM hItem = m_tree1HitTest(&ht);

if (hItem == NULL)

{

return;

}

HTREEITEM hRoot = m_tree1GetRootItem();

//选中的checkbox

if (htflags & TVHT_ONITEMSTATEICON)//如果点击的位置是在节点位置上面

{

//根节点

if (hItem == hRoot)

{

bCheck = m_tree1GetCheck(hRoot);

//根节点被选中

if (!bCheck)

{

hItem = m_tree1GetChildItem(hRoot);

while (hItem != NULL)

{

m_tree1SetCheck(hItem, TRUE);

hItem = m_tree1GetNextItem(hItem,TVGN_NEXT);

}

}

else

{

hItem = m_tree1GetChildItem(hRoot);

while (hItem != NULL)

{

m_tree1SetCheck(hItem, FALSE);

hItem = m_tree1GetNextItem(hItem, TVGN_NEXT);

}

}

}

}

还有一种就是直接给tree返回来的数据加个全选的数据就可以了

data里面的

html

方法 methods

Element-ui中tree树形控件全选与取消全选的功能实现(checkbox那种形式而不是tree)

//树形控件

//data里面的内容

//checkbox选择事件

看了你的说明,大致思路如下

首先点击节点 应该是过滤或者去按规则取一些数据回来 绑定到dataGridview中 ,如果是这样 那你树节点就要存这个取数的条件或过滤条件

可以使用TreeNodeTag来存你要的数据 利用TreeView的AfterSelect事件来做,在事件的方法里获取当前选中节点然后提取Tag属性 进行数据绑定处理即可

var

node:TTreeNode;

然后你获取你所选中的节点

node:=TreeViewSelected;

它的父节点的名称就是

nodeParentText

它的祖父节点的名称就是

nodeParentParentText

以此类推

注意,在访问父节点之前要判断是否存在

if nodeParent<>nil then

begin

end;

列表可以用listview控件,如果有多行的话可以用循环,这里只用一行进行说明:

ListViewItem lv = new ListViewItem(); //先实例化

lvText =“”; 一行的第一个元素,双引号里面填写元素

lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素

lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素,以此类推

listViewnameItemsAdd(lv); 将实例化添加到listview里面, listViewname为所用控件的名字

我当时只用TextBlock 的时候也很苦恼,最后只好加了一个CheckBox来进行选中。看能不能帮到你。。

<StackPanel Orientation="Horizontal">

<CheckBox IsChecked="{Binding IsCheckedItem,Mode=TwoWay}" Click="DoClick" Tag="{Binding}" />

<TextBlock Text="{Binding ItemName,Mode=TwoWay}"/>

</StackPanel>

拖拽后,树的treeData的结构也跟着改变了的,无须再去修改。如果里面有参数要修改的话用递归的方式处理一下就行了

dealtreeData(treeData, parent_id) {

treeDataforEach((item) => {

if (

parent_id !== null &&

parent_id !== "" &&

typeof parent_id !== "undefined"

) {

itemparent_id = parent_id;

}

if (itemchildren && itemchildrenlength > 0) {

thisdealtreeData(itemchildren, itemid);

}

});

},

// 树拖动

onDrop() {

//修改节点的parent_id

thisdealtreeData(thistreeData, 0);

},

以上就是关于vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本全部的内容,包括:vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本、VC中如何实现鼠标单击树形控件节点 *** 作、Element-ui中tree树形控件全选与取消全选的功能实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9574912.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存