Introducción.
En esta sesión del tutorial del control TreeView, usaremos dos subformularios junto con el control TreeView en el formulario principal frmTreeViewtab . Hemos importado el control ImageList con las imágenes precargadas de nuestro proyecto de demostración anterior.Utilizaremos la misma lvCategory y lvProductos Tablas que hemos usado para nuestros Proyectos anteriores.
La categoría lv Clave principal de la tabla Los valores de campo (CID) y campo de descripción (categoría) son la clave del método TreeView Nodes Add() y Texto valores de parámetros, respectivamente.
Los lvProducts La tabla tiene información detallada sobre cada producto, como el código del producto, la descripción, la cantidad unitaria de existencias y el precio de lista.
Además de eso, los lvProducts la tabla tiene el ParentID campo que se actualizó con el valor del código de categoría (CID). Todos los artículos de productos que pertenecen a una categoría en particular se actualizan con el valor del campo CID (ID de categoría) en el campo ParentID. De esta manera, ambas tablas tienen la relación maestro-hijo.
Los registros de productos tienen dos subformularios en las páginas de control de pestañas. La primera Página tiene los datos Ver subformulario y la segunda página tiene el Editar subformulario La primera página de control de pestaña muestra todos los registros de productos que pertenecen a una categoría particular del control TreeView. Los registros del primer subformulario se muestran para su visualización y para seleccionar un registro en particular para editarlo en el segundo subformulario.
La actual registro o seleccionado por el usuario el registro en el primer subformulario está disponible para editar en el segundo subformulario, en la segunda página del control de pestaña. Los campos clave resaltados en color gris están bloqueados y no se pueden editar.
TreeView con vista de diseño de subformularios.
La vista de diseño del formulario frmTreeViewTab se da a continuación:
Los dos primeros cuadros de texto independientes del formulario principal se actualizan cuando el usuario selecciona un elemento de categoría del control TreeView.
El tercer cuadro de texto independiente (nombre p_ID) se actualiza inicialmente con el valor de ID único (PID) del primer registro de producto; de lo contrario, se actualiza el valor del registro seleccionado por el usuario. El registro del producto seleccionado en el primer subformulario está disponible en el segundo subformulario para modificaciones.
Enlaces a sesiones de tutoría anteriores.
Los enlaces de sesiones de tutoriales anteriores se proporcionan a continuación como referencia:
- Tutorial de control TreeView de Microsoft
- Creación del menú de acceso con TreeView Control
- Asignación de imágenes al control TreeView
- Asignación de imágenes a TreeView Control-2
- Control de TreeView Marca de verificación Agregar Eliminar nodos
- Menú de acceso desplegable TreeView ImageCombo
- Reorganizar los nodos de TreeView arrastrando y soltando
- Control ListView con MS-Access TreeView
- Eventos de arrastrar y soltar de control ListView
El IdCat el cuadro de texto independiente es [Link Master Fields] Valor de propiedad del primer subformulario.
El código de producto en el tercer cuadro de texto independiente (p_ID ) está vinculado a [Enlazar campos maestros] valor de propiedad del segundo subformulario en la Vista Pestaña de página.
El p_ID El valor del cuadro de texto independiente se actualiza cuando se actualiza el contenido del primer subformulario o cuando el usuario selecciona un elemento.
Vista normal de la pantalla.
La vista normal de frmTreeViewTab El formulario se proporciona a continuación:
Los campos clave en el registro del producto en el segundo subformulario, con el primer plano gris, están bloqueados y no se les permite modificar el contenido.
El formulario frmTreeViewTab Código VBA del módulo de clase:
Option Compare Database Option Explicit Dim tv As MSComctlLib.TreeView Dim imgList As MSComctlLib.ImageList Const Prfx As String = "X" Private Sub Form_Load() Dim db As DAO.Database Dim tbldef As TableDef 'Initialize TreeView Nodes Set tv = Me.TreeView0.Object tv.Nodes.Clear 'Initialixe ImageList Object Set imgList = Me.ImageList3.Object 'Modify TreeView Font Properties With tv .Font.Size = 9 .Font.Name = "Verdana" .ImageList = imgList 'assign preloaded imagelist control End With LoadTreeView 'Create TreeView Nodes End Sub Private Sub LoadTreeView() Dim Nod As MSComctlLib.Node Dim strCategory As String Dim strCatKey As String Dim strProduct As String Dim strPKey As String Dim strBelongsTo As String Dim strSQL As String Dim db As DAO.Database Dim rst As DAO.Recordset 'Initialize treeview nodes tv.Nodes.Clear strSQL = "SELECT lvCategory.CID, lvCategory.Category, " strSQL = strSQL & "lvcategory.BelongsTo FROM lvCategory ORDER BY lvCategory.CID;" Set db = CurrentDb Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot) ' Populate all Records as Rootlevel Nodes Do While Not rst.BOF And Not rst.EOF If rst.AbsolutePosition = 1 Then Me![CatID] = rst![CID] End If strCatKey = Prfx & CStr(rst!CID) strCategory = rst!Category Set Nod = tv.Nodes.Add(, , strCatKey, strCategory, 1, 2) Nod.Tag = rst!CID rst.MoveNext Loop 'In the second pass of the the same set of records 'Move Child Nodes under their Parent Nodes rst.MoveFirst Do While Not rst.BOF And Not rst.EOF strBelongsTo = Nz(rst!BelongsTo, "") If Len(strBelongsTo) > 0 Then strCatKey = Prfx & CStr(rst!CID) strBelongsTo = Prfx & strBelongsTo strCategory = rst!Category Set tv.Nodes.Item(strCatKey).Parent = tv.Nodes.Item(strBelongsTo) End If rst.MoveNext Loop rst.Close TreeView0_NodeClick tv.Nodes.Item(1) End Sub Private Sub TreeView0_NodeClick(ByVal Node As Object) Dim Cat_ID As String 'Initialize hidden unbound textbox 'Link Master Field' values Cat_ID = Node.Tag Me!CatID = Cat_ID Me![xCategory] = Node.Text End Sub Private Sub cmdExit_Click() DoCmd.Close End Sub
Dado que el uso de TreeView Control y ImageList Control y su funcionamiento se explicaron en detalle en las sesiones anteriores, encontrará que solo algunas de esas subrutinas VBA anteriores aparecen en el módulo de formulario anterior.
Hemos diseñado varias pantallas con MS-Access TreeView, ListView, ImageList e ImageCombo Control hasta ahora y espero que las encuentre como un buen punto de referencia para su propio diseño de interfaz de proyecto.
Problemas de versión de MS-Office para TreeView Control.
Si tuvo algún problema al ejecutar la base de datos de demostración en su versión de Microsoft Access, puede consultar el siguiente enlace para algunas acciones correctivas, que pueden ser útiles para resolver su problema:
Anteriormente, los controles anteriores no se ejecutaban en sistemas de 64 bits. Pero, en septiembre de 2017, Microsoft lanzó una actualización de la biblioteca MSCOMCTL.OCX y el siguiente extracto del documento de Microsoft se proporciona a continuación para su información:
Haga clic en la imagen del documento anterior para ver el texto completo de la Actualización de 2017:Documento 1707. El siguiente enlace sugiere algunos consejos útiles.- SOLUCIONADO MSCOMCTL.OCX DESCARGAR REGISTRO WINDOWS DE 64 BITS
Con el uso de los objetos de control TreeView anteriores, podemos crear interfaces de usuario más atractivas y de mejor rendimiento para nuestros nuevos proyectos.
Descargue la base de datos de demostración.