修改树状控件TreeCtrl的节点名称
// PMAgentManageDlg.h
HTREEITEM FindItem(HTREEITEM item,CString strText);
BOOL IsTreeCtrlEditMessage(WPARAM KeyCode);
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnMenuitemRevise(NMHDR *pNMHDR,LRESULT *pResult); //点击修改按钮激活函数
afx_msg void OnBeginlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult); //开始编辑
afx_msg void OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult); //结束编辑
// PMAgentManageDlg.cpp
ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_TREE, OnBeginlabeleditTree1) //消息映射
ON_NOTIFY(TVN_ENDLABELEDIT, IDC_TREE, OnEndlabeleditTree1) //消息映射
//点击修改信息
void CPMAgentManageDlg::OnMenuitemRevise(NMHDR *pNMHDR,LRESULT *pResult)
{
// TODO: Add your command handler code here
UpdateData(true);
//CString str;
g_sSelectStr =m_TreeCtrl.GetItemText(m_TreeCtrl.GetSelectedItem());
//取出strName前4个汉字CString strName;
char cTem[100],cDest[100];
strcpy(cTem,g_sSelectStr);
char *sTem = cTem;
memcpy(cDest,sTem,8);
cDest[8]='\0';
string sCompare;
sCompare=cDest;
if ( (sCompare == "矩阵状态") || (sCompare =="平台状态") || (sCompare =="创建时间") )
{
MessageBox("此条信息禁止手动修改!");
return;
}
else
{
m_TreeCtrl.ModifyStyle(NULL,TVS_EDITLABELS); //设置编辑风格
HTREEITEM hItem=m_TreeCtrl.GetSelectedItem();
m_TreeCtrl.EditLabel(hItem);
}
}
void CPMAgentManageDlg::OnBeginlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
m_TreeCtrl.GetEditControl()->LimitText(1024);
*pResult = 0;
}
void CPMAgentManageDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM m_hInsertItem;
CString strName; //修改后的数据
m_TreeCtrl.GetEditControl()->GetWindowText(strName);
if (strName.IsEmpty())
{
MessageBox("数据项名称不能为空,请重新输入!");
CEdit *pEdit = m_TreeCtrl.EditLabel(m_hInsertItem);
return;
}
if (strName == g_sSelectStr)
{
return;
}
HTREEITEM hRoot = m_TreeCtrl.GetRootItem();
HTREEITEM hFind = FindItem(hRoot,strName); //判断数据是否相同
if (hFind == NULL)
{
char msg[64]={0};
sprintf(msg,"修改信息为%s,确定吗?",strName);
if (MessageBox(msg,"提示",MB_OKCANCEL) == IDOK)
{
CString strText;
m_TreeCtrl.GetEditControl()->GetWindowText(strText.GetBuffer(200),200);
m_TreeCtrl.SetItemText(m_TreeCtrl.GetSelectedItem(),strText);//设置编辑后的文本为结点
*pResult = TRUE;
}
else
{
m_TreeCtrl.DeleteItem(m_hInsertItem);
}
}
else //找到相同数据
{
if ((g_sSelectStr == "北京一区") || (g_sSelectStr =="矩阵地址") || (g_sSelectStr =="服务端口") )
{
MessageBox("该数据已存在");
CEdit *pEdit = m_TreeCtrl.EditLabel(m_hInsertItem);
}
else
{
char msg[64]={0};
sprintf(msg,"修改信息为%s,确定吗?",strName);
if (MessageBox(msg,"提示",MB_OKCANCEL) == IDOK)
{
CString strText;
m_TreeCtrl.GetEditControl()->GetWindowText(strText.GetBuffer(200),200);
m_TreeCtrl.SetItemText(m_TreeCtrl.GetSelectedItem(),strText);//设置编辑后的文本为结点
*pResult = TRUE;
}
else
{
m_TreeCtrl.DeleteItem(m_hInsertItem);
}
}
}
*pResult = 0;
}
//防止修改的数据有相同 嵌套循环
HTREEITEM CPMAgentManageDlg::FindItem(HTREEITEM item,CString strText)
{
HTREEITEM hFind;
if (item==NULL)
{
return NULL;
}
while(item!=NULL)
{
if (m_TreeCtrl.GetItemText(item)==strText)
{
return item;
}
if (m_TreeCtrl.ItemHasChildren(item))
{
item = m_TreeCtrl.GetChildItem(item);
hFind = FindItem(item,strText);
if (hFind)
{
return hFind;
}
else
{
item = m_TreeCtrl.GetNextSiblingItem(m_TreeCtrl.GetParentItem(item));
}
}
else
{
item = m_TreeCtrl.GetNextSiblingItem(item);
if (item == NULL)
{
return NULL;
}
}
}
return item;
}
//判断是否处于编辑状态 传按键进去 然后发送消息
BOOL CPMAgentManageDlg::IsTreeCtrlEditMessage(WPARAM KeyCode)
{
BOOL rvalue = FALSE;
CWnd *pWnd = this;
CTreeCtrl *treectrl = (CTreeCtrl *)pWnd->GetDlgItem(IDC_TREE);
if(!treectrl)
{
return rvalue;
}
CWnd* focus = GetFocus();
CEdit* edit = treectrl->GetEditControl();
if((CEdit *)focus == edit)
{
if (KeyCode == VK_ESCAPE)
{
edit->SendMessage(WM_UNDO,KeyCode); //ESC撤销
}
if (KeyCode == VK_RETURN)
{
edit->SendMessage(WM_KEYDOWN,KeyCode); //回车就执行
}
rvalue = TRUE;
}
return rvalue;
}
//重载回车键
void CPMAgentManageDlg::OnOK()
{
if(!IsTreeCtrlEditMessage(VK_RETURN))
{
EndDialog(IDOK);
}
}
//重载退出键
void CPMAgentManageDlg::OnCancel()
{
if(!IsTreeCtrlEditMessage(VK_ESCAPE))
{
EndDialog(IDCANCEL);
}
}
修改树状控件TreeCtrl的节点名称相关推荐
- vc++树状控件(TreeCtrl)用法
/添加树状/ HTREEITEM hItem,hChildItem; //定义树状控件的句柄 CTreeCtrl *pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE);/ ...
- VC中树状控件(TreeCtrl)的用法
树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点.MFC中使用CTreeCtrl类来封装树形控件的各种操作.通过调用 BOOL ...
- 将DataTable中的数据,根据节点的子父节点的Tag。展示到TreeView树状控件中。
//移除所有分类tvBookType.Nodes.Clear();try{dt = BookTypeServices.GetBookType();}catch (Exception ex){Messa ...
- 树状控件的应用(选择出阵武将)
树状控件的应用 何志丹 下面是树状控件的一些应用,由于是由于用于演示,所以结构并不合理.其效果如图所示.. 步骤如下: 1,Insert -> new class,插入一个新类CMyCtrl,基 ...
- PIE SDK图层树伙伴控件示例
1. 功能简介 TocControl控件的主要作用是显示当前加载的图层有哪些.采用什么样的符号等,目的是使用户对当前加载的数据和结构有一个总体的把握.与之相关联的伙伴控件有MapControl,Pa ...
- 树型控件TreeView的几种用法
1 基本用法 void TreeViewDataBind() { //首先清除树型控件内的结点 this.TreeView1.Nodes ...
- Element ui tree树形控件获取当前节点id和父节点id
低版本Element ui tree树形控件获取当前节点id和父节点id的方法:点击查看 最新版本Element ui tree树形控件获取当前节点id和父节点id教程: 1.找到node_modul ...
- VC控件 TreeCtrl 与 ListCtrl 演示(zz)
VC控件 TreeCtrl 与 ListCtrl 演示 作者:兰州大学现物系 王景生 下载源代码 这个例子类似于 Windows 的资源管理器,程序运行界面如图一所示: 图一 主要用到的类有: CLi ...
- layui如何获取父节点的父节点_element-ui tree控件获取当前节点和父节点
今天使用element-ui 遇到两个问题,第一个问题是获取tree控件的当前节点和父节点, 一开始使用tree控件的getCurrentNode()函数,结果发现返回的是当前节点的data属性,和u ...
最新文章
- SSH、VIM显示中文乱码解决方法
- 用PHP生成word文件
- 关于小程序的一些坑的总结
- GDI+ 设置不同的分辨率来显示不同大小的图片
- LeetCode 539. 最小时间差(哈希)
- 机器人被抢走ntr_(科普)当被NTR剧情虐到的时候怎么办
- 11.04.30 半夜清晨
- Spring Boot 开源软件都有哪些?
- NGUI中的Table自定义排序
- IIS出现server application error解决方案
- vue如何设置视频封面_vue设置视频封面教程 vue如何修改标题
- 智慧产业园区综合解决方案
- 微信小程序实现随机标签云
- 为什么边缘概率密度是联合概率密度的积分_看懂蒙特卡洛积分(一) 概率分布变换与随机采样...
- 了解透明数据加密 (TDE)
- 聪明的猴子 黑暗爆炸 - 2429
- 桌面上计算机删除后怎么复原,电脑桌面上出现一个图标,删掉后重启桌面又恢复了?怎么才能彻底删除?...
- Python学习-Scipy库稀疏矩阵的建立(面向列的稀疏矩阵、基于坐标格式的稀疏矩阵)
- 如何租用云服务器并进行远程连接
- 三:debian安装,附加开店系统
热门文章
- 03-29 健壮性测试
- easypoi导出数值型_解决EasyPoi导出Excel金额数值类型
- mysql命令导出数据不完整_使用MySQL MySqldump命令导出数据时的注意事项
- php源生生成pdf_TCPDF - 可生成PDF文档和条形码PHP库
- 网站前端开发基础知识学什么?必备技能
- mysql数据字典的通俗理解_MySQL关于数据字典的一个疑问
- oracle number 7 5,oracle上机练习6-7及答案
- java正则 链接_Java使用正则表达式匹配获取链接地址的方法示例
- windows linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
- 昆工c语言题库,昆明理工大学C语言期末统考试题