遇见春天

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节点相关推荐

  1. 【VBA】树控件TreeView的学习(二)

    哈喽,手机边亲爱的你还好吗?我是默默给大家分享Access知识的will. 上一篇文章我们简单讲了一下TreeView怎么 加载显示数据,TreeView上显示的数据都是手工添加的,那今天我们要来讲一 ...

  2. 【VBA】树控件TreeView的学习(一)

    哈喽,手机边亲爱的你还好吗?我是默默给大家分享Access知识的will. 大家2022年快乐,从今天开始我们来讲一下树控件. 树控件在我们的开发中是经常用的到的控件也是一个重点,我会从最简单的讲起, ...

  3. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  4. PyQt5入门(十四)树控件QTreeWidget

    目录 一.凡心所向,素履所往 二.树控件(QTreeWidget)基本用法 三.为树节点添加响应时间 四.增加,修改和删除树控件的节点 五.QTreeView控件与系统定制模式 一.凡心所向,素履所往 ...

  5. [原创]FineUI秘密花园(二十四) — 树控件之数据绑定

    上一篇文章我们介绍了树控件的基本用法,不过都是通过标签来声明树控件的结构,本章我们会详细讲解如何在后台绑定树控件. 绑定到XmlDocument 下面通过一个简单的例子来看如何将XmlDocument ...

  6. java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...

    树控件: JTree:声明树控件 声明树的节点: DefaultMutableTreeNode dd=new DefaultMutableTreeNode("传入树节点名称"); ...

  7. MFC学习--下拉框、列表、树控件、选项卡

    下拉框.列表.树控件.选项卡 下拉框 属性 代码操作 列表控件 属性 代码操作 树控件 属性 代码操作 选项卡 属性 代码操作 文化建设 下拉框 属性 Data: 下拉可选项,用分号分隔( ; ) T ...

  8. Bootstrap树控件(Tree控件组件)使用经验分享

    前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...

  9. SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. 2017.04.19 有趣的木楔原理图
  2. ubuntu下小键盘不能用
  3. pandas高效读取大文件(csv)方法之-parquet
  4. 在C语言中以编程的方式获取函数名
  5. angular路由传递参数_在angular4.0路由传递获取参数的最优方案
  6. Android找工作系列之自定义View
  7. Gainlo 面试指南 翻译完成
  8. java项目_值得学习和练手的Java企业级开源项目,强烈推荐!
  9. [转]WebGL中文教程
  10. 生活中运筹学的3个小案例_10个“乡村庭院”设计案例,生活在乡下,家家都有自己的小庭院...
  11. 利用Python进行游戏脚本编程,不愧是最强的脚本语言!
  12. python播放音乐同步歌词_使用python播放音乐并制作LRC歌词文件
  13. 关于二进制补码+CS5463
  14. android 6g 有必要吗,Android手机6GB内存有必要吗?实测出真知
  15. thinkphp全开源社区团购接龙群接龙
  16. 在Power BI中用DAX计算净现值NPV
  17. 油猴脚本安装以及使用方法
  18. AT32_IDE_Linux用户手册(附IDE下载地址)
  19. 【硬盘测速】一条命令解决硬盘测速问题
  20. 笔记本win10引用账户当前已锁定,且可能无法登录(已解决)

热门文章

  1. 生成式对抗网络GAN必读十篇论文(附论文和代码地址)
  2. python局部静态变量_python静态变量如何设置?这样的代码你会不会写
  3. 微信开发 | 配置微信公众号关键域名(一)
  4. IBM Notes 901FP10IF6发布
  5. iphone 键盘兼容_如何从iPhone键盘上删除表情符号按钮
  6. 奇文共欣赏,疑义相如析
  7. js获取指定class和id的值
  8. shell怎么把负数变成正数_【硬核】年化收益率(复利)怎么算
  9. 华为面试题算什么,这个背会了外企随便进(2)
  10. Django 误删数据表恢复