【VBA树控件学习四】编辑与删除TreeView节点
遇见春天
HI,我是默默等你来点赞的edon,大家最近忙吗?
今天,我们接着来讲一下TreeView树控件。之前,我们已经把新增节点的功能讲完了,接下来我们来讲一下编辑功能与删除功能。
这里我们只修改节点的名称,不变动树的节点,同时,我们需要利用之前学习的新增窗体,所以我们需要来将之前的窗体与代码做一些调整。
1、调整现有窗体
a.我们先将frmAdd窗体名称修改成frmTreeView_Edit
b.在frmTreeView_Edit窗体里添加一个产品编号的文本框,名称为ProductID,同时可用修改成否。
c.在frmTreeView添加两个按钮控件,一个用于打开编辑窗体,名称为:btnEdit,一个用于删除节点:btnDelete,最后在树控件的旁边再添加一个标签控件,用于显示选中树节点的路径。
2、添加/调整代码
接下来,我们就需要来调整代码了。
a.我们先来修改一下frmTreeView的打开新增按钮的代码
Dim objNode As NodeSet objNode = Me.TreeView0.SelectedItem '选中某个节点strNodeParentKey = objNode.Key '选中的节点为父节点strNodeKey = Null '当前节点为空strNodeText = Null '当前节点名称为空DoCmd.OpenForm "frmTreeView_Edit", acNormal, , , acFormAdd '打新增窗体
b.在frmTreeView窗体添加一些树控件代码
Private Sub Form_Open(Cancel As Integer)Me.lblPath.Caption = ""
End Sub
Private Sub TreeView0_NodeClick(ByVal Node As Object) '树节点路径Me.lblPath.Caption = "树控件路径:" & Node.FullPathMe.TreeView0.SetFocusEnd Sub
Private Sub TreeView0_GotFocus() '树控件得到焦点Set Me.TreeView0.DropHighlight = Nothing
End Sub
Private Sub TreeView0_LostFocus() '树控件失去焦点Set Me.TreeView0.DropHighlight = Me.TreeView0.SelectedItem
End Sub
c.在frmTreeView添加打开编辑的代码
Private Sub btnEdit_Click()Dim objNode As NodeSet objNode = Me.TreeView0.SelectedItemIf objNode.Key = "K" ThenExit SubEnd IfstrNodeParentKey = objNode.Parent.KeystrNodeKey = objNode.KeystrNodeText = objNode.TextDoCmd.OpenForm "frmTreeView_Edit", , , , acFormEdit, acDialogobjNode.Text = strNodeTextCall TreeView0_NodeClick(objNode)
End Sub
d.调整一下frmTreeView_Edit的保存与加载事件
'保存按钮
Private Sub btnSave_Click()'判断不能为空If IsNull(Me.ProductName) ThenMsgBox "产品名称不能为空。", vbExclamationMe.ProductName.SetFocusExit SubEnd IfDim rst As Object ' DAO.RecordsetDim strProductID As StringDim strWhere As StringDim strSQL As String'判断上级键值是否为空If Not IsNull(Me.ProductParentID) ThenstrWhere = "ProductParentID='" & Me.ProductParentID & "'"ElsestrWhere = "ProductParentID is null"End If'取到上级键值的最大值strProductID = Nz(DMax("ProductID", "tblProduct", strWhere), "")'生成编号strProductID = Me!ProductParentID & Format(Val(Right(strProductID, 4)) + 1, "0000")' Debug.Print strProductIDstrSQL = "select * from tblProduct where ProductID='" & Me.ProductID & "'"Set rst = CurrentDb.OpenRecordset(strSQL, 2) '打开记录集If rst.EOF Thenrst.AddNewrst!ProductParentID = Me!ProductParentIDrst!ProductID = strProductIDElserst.EditEnd Ifrst!ProductName = Me!ProductNamerst.UpdatestrNodeText = Me!ProductNameMsgBox "保存成功。", vbInformationIf Me.DataEntry = False ThenDoCmd.Close acForm, Me.NameElseForm_frmTreeView.Form_Load '树重新加载一下Me.ProductName = NullMe.ProductParentID = Replace(strNodeParentKey, "K", "")Me.ProductParentID.RowSource = Me.ProductParentID.RowSource '刷新End Ifrst.CloseSet rst = NothingEnd SubPrivate Sub Form_Load()Me.ProductParentID = Replace(strNodeParentKey, "K", "")If Me.DataEntry Then Exit SubMe.ProductID = Replace(strNodeKey, "K", "")Me.ProductName = strNodeTextMe.ProductParentID.Enabled = IsNull(Me.ProductID)
End Sub
e.在frmTreeView中添加删除代码
Private Sub btnDelete_Click()Dim strMsg As StringDim objNode As NodeDim strSQL As StringDim lngRecordsAffected As LongSet objNode = Me.TreeView0.SelectedItemIf objNode.Key = "K" ThenExit SubEnd IfIf objNode.Children > 0 ThenMsgBox "该节点下存在子节点,必须先删除所有子节点。", vbExclamationExit SubEnd IfstrMsg = "确定要删除该节点【" & objNode.Text & "】吗?"If MsgBox(strMsg, vbExclamation + vbOKCancel, "删除提示") = vbOK ThenstrSQL = "DELETE FROM tblProduct WHERE ProductID='" & Mid(objNode.Key, 2) & "'"CurrentDb.Execute strSQLMe.TreeView0.Nodes.Remove objNode.KeySet objNode = Me.TreeView0.SelectedItemCall TreeView0_NodeClick(objNode)End If
End Sub
f.在通用模块中添加通用变量名
Public strNodeParentKey As Variant
Public strNodeKey As Variant
Public strNodeText As Variant
3、运行测试
最后,就是运行测试了。
END
【VBA树控件学习四】编辑与删除TreeView节点相关推荐
- 【VBA】树控件TreeView的学习(二)
哈喽,手机边亲爱的你还好吗?我是默默给大家分享Access知识的will. 上一篇文章我们简单讲了一下TreeView怎么 加载显示数据,TreeView上显示的数据都是手工添加的,那今天我们要来讲一 ...
- 【VBA】树控件TreeView的学习(一)
哈喽,手机边亲爱的你还好吗?我是默默给大家分享Access知识的will. 大家2022年快乐,从今天开始我们来讲一下树控件. 树控件在我们的开发中是经常用的到的控件也是一个重点,我会从最简单的讲起, ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- PyQt5入门(十四)树控件QTreeWidget
目录 一.凡心所向,素履所往 二.树控件(QTreeWidget)基本用法 三.为树节点添加响应时间 四.增加,修改和删除树控件的节点 五.QTreeView控件与系统定制模式 一.凡心所向,素履所往 ...
- [原创]FineUI秘密花园(二十四) — 树控件之数据绑定
上一篇文章我们介绍了树控件的基本用法,不过都是通过标签来声明树控件的结构,本章我们会详细讲解如何在后台绑定树控件. 绑定到XmlDocument 下面通过一个简单的例子来看如何将XmlDocument ...
- java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...
树控件: JTree:声明树控件 声明树的节点: DefaultMutableTreeNode dd=new DefaultMutableTreeNode("传入树节点名称"); ...
- MFC学习--下拉框、列表、树控件、选项卡
下拉框.列表.树控件.选项卡 下拉框 属性 代码操作 列表控件 属性 代码操作 树控件 属性 代码操作 选项卡 属性 代码操作 文化建设 下拉框 属性 Data: 下拉可选项,用分号分隔( ; ) T ...
- Bootstrap树控件(Tree控件组件)使用经验分享
前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...
- SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
最新文章
- 2017.04.19 有趣的木楔原理图
- ubuntu下小键盘不能用
- pandas高效读取大文件(csv)方法之-parquet
- 在C语言中以编程的方式获取函数名
- angular路由传递参数_在angular4.0路由传递获取参数的最优方案
- Android找工作系列之自定义View
- Gainlo 面试指南 翻译完成
- java项目_值得学习和练手的Java企业级开源项目,强烈推荐!
- [转]WebGL中文教程
- 生活中运筹学的3个小案例_10个“乡村庭院”设计案例,生活在乡下,家家都有自己的小庭院...
- 利用Python进行游戏脚本编程,不愧是最强的脚本语言!
- python播放音乐同步歌词_使用python播放音乐并制作LRC歌词文件
- 关于二进制补码+CS5463
- android 6g 有必要吗,Android手机6GB内存有必要吗?实测出真知
- thinkphp全开源社区团购接龙群接龙
- 在Power BI中用DAX计算净现值NPV
- 油猴脚本安装以及使用方法
- AT32_IDE_Linux用户手册(附IDE下载地址)
- 【硬盘测速】一条命令解决硬盘测速问题
- 笔记本win10引用账户当前已锁定,且可能无法登录(已解决)