快捷搜索:  汽车  科技

vba怎样添加treeview(编辑与删除TreeView节点)

vba怎样添加treeview(编辑与删除TreeView节点)c.在frmTreeView添加两个按钮控件,一个用于打开编辑窗体,名称为:btnEdit,一个用于删除节点:btnDelete,最后在树控件的旁边再添加一个标签控件,用于显示选中树节点的路径。b.在frmTreeView_Edit窗体里添加一个产品编号的文本框,名称为ProductID,同时可用修改成否。NO.1调整现有窗体a.我们先将frmAdd窗体名称修改成frmTreeView_Edit

遇见春天

vba怎样添加treeview(编辑与删除TreeView节点)(1)

HI,我是默默等你来点赞的edon,大家最近忙吗?

今天,我们接着来讲一下TreeView树控件。之前,我们已经把新增节点的功能讲完了,接下来我们来讲一下编辑功能与删除功能。

这里我们只修改节点的名称,不变动树的节点,同时,我们需要利用之前学习的新增窗体,所以我们需要来将之前的窗体与代码做一些调整。

NO.1

vba怎样添加treeview(编辑与删除TreeView节点)(2)

调整现有窗体

a.我们先将frmAdd窗体名称修改成frmTreeView_Edit

b.在frmTreeView_Edit窗体里添加一个产品编号的文本框,名称为ProductID,同时可用修改成否。

vba怎样添加treeview(编辑与删除TreeView节点)(3)

c.在frmTreeView添加两个按钮控件,一个用于打开编辑窗体,名称为:btnEdit,一个用于删除节点:btnDelete,最后在树控件的旁边再添加一个标签控件,用于显示选中树节点的路径。

vba怎样添加treeview(编辑与删除TreeView节点)(4)

NO.2

vba怎样添加treeview(编辑与删除TreeView节点)(5)

添加/调整代码

接下来,我们就需要来调整代码了。

a.我们先来修改一下frmTreeView的打开新增按钮的代码

Dim objNode As Node Set 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.FullPath Me.TreeView0.SetFocus End 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 Node Set objNode = Me.TreeView0.SelectedItem If objNode.Key = "K" Then Exit Sub End If strNodeParentKey = objNode.Parent.Key strNodeKey = objNode.Key strNodeText = objNode.Text DoCmd.OpenForm "frmTreeView_Edit" acFormEdit acDialog objNode.Text = strNodeText Call TreeView0_NodeClick(objNode) End Sub

d.调整一下frmTreeView_Edit的保存与加载事件

'保存按钮 Private Sub btnSave_Click() '判断不能为空 If IsNull(Me.ProductName) Then MsgBox "产品名称不能为空。" vbExclamation Me.ProductName.SetFocus Exit Sub End If Dim rst As Object ' DAO.Recordset Dim strProductID As String Dim strWhere As String Dim strSQL As String '判断上级键值是否为空 If Not IsNull(Me.ProductParentID) Then strWhere = "ProductParentID='" & Me.ProductParentID & "'" Else strWhere = "ProductParentID is null" End If '取到上级键值的最大值 strProductID = Nz(DMax("ProductID" "tblProduct" strWhere) "") '生成编号 strProductID = Me!ProductParentID & Format(Val(Right(strProductID 4)) 1 "0000") ' Debug.Print strProductID strSQL = "select * from tblProduct where ProductID='" & Me.ProductID & "'" Set rst = CurrentDb.OpenRecordset(strSQL 2) '打开记录集 If rst.EOF Then rst.AddNew rst!ProductParentID = Me!ProductParentID rst!ProductID = strProductID Else rst.Edit End If rst!ProductName = Me!ProductName rst.Update strNodeText = Me!ProductName MsgBox "保存成功。" vbInformation If Me.DataEntry = False Then DoCmd.Close acForm Me.Name Else Form_frmTreeView.Form_Load '树重新加载一下 Me.ProductName = Null Me.ProductParentID = Replace(strNodeParentKey "K" "") Me.ProductParentID.RowSource = Me.ProductParentID.RowSource '刷新 End If rst.Close Set rst = Nothing End Sub Private Sub Form_Load() Me.ProductParentID = Replace(strNodeParentKey "K" "") If Me.DataEntry Then Exit Sub Me.ProductID = Replace(strNodeKey "K" "") Me.ProductName = strNodeText Me.ProductParentID.Enabled = IsNull(Me.ProductID) End Sub

e.在frmTreeView中添加删除代码

Private Sub btnDelete_Click() Dim strMsg As String Dim objNode As Node Dim strSQL As String Dim lngRecordsAffected As Long Set objNode = Me.TreeView0.SelectedItem If objNode.Key = "K" Then Exit Sub End If If objNode.Children > 0 Then MsgBox "该节点下存在子节点,必须先删除所有子节点。" vbExclamation Exit Sub End If strMsg = "确定要删除该节点【" & objNode.Text & "】吗?" If MsgBox(strMsg vbExclamation vbOKCancel "删除提示") = vbOK Then strSQL = "DELETE FROM tblProduct WHERE ProductID='" & Mid(objNode.Key 2) & "'" CurrentDb.Execute strSQL Me.TreeView0.Nodes.Remove objNode.Key Set objNode = Me.TreeView0.SelectedItem Call TreeView0_NodeClick(objNode) End If End Sub

f.在通用模块中添加通用变量名

vba怎样添加treeview(编辑与删除TreeView节点)(6)

Public strNodeParentKey As Variant Public strNodeKey As Variant Public strNodeText As Variant

NO.3

vba怎样添加treeview(编辑与删除TreeView节点)(7)

运行测试

最后,就是运行测试了。

vba怎样添加treeview(编辑与删除TreeView节点)(8)

vba怎样添加treeview(编辑与删除TreeView节点)(9)

END

猜您喜欢: