sql >> Base de Datos >  >> RDS >> Access

Tutorial del control TreeView de Microsoft

A. Introducción .

Microsoft Tree View Control es parte de Microsoft Windows Common Controls. Es una pieza interesante de Objeto que muestra datos relacionados en una jerarquía de Nodos. Puede mostrar datos relacionados, como entradas y subentradas en una lista de índice o una lista de carpetas como el panel izquierdo del Explorador de Windows o una lista de elementos relacionados en una estructura jerárquica con líneas de árbol, casillas de verificación y gráficos de imágenes de mapa de bits. .

La vista de lista y Lista de imágenes Los controles son parte de los controles comunes de Windows y los usaremos junto con el control TreeView en Microsoft Access.

Creo que le gustaría ver algunas imágenes de demostración de TreeView Control de muestra, en las que trabajaremos en la construcción en las próximas semanas.

B. Imágenes de demostración de muestra .

Nodos en estado Contraído.

  1. La imagen TreeView de demostración de muestra con todos los nodos en formato contraído.

    Nodos en la vista ampliada.

  2. Los nodos de control TreeView anteriores en la vista ampliada.

    Con iconos de imagen de punta de flecha.

  3. Visualización de muestra de TreeView, con iconos de imagen de punta de flecha a la izquierda de cada texto de nodo.

    Los nodos de nivel raíz tienen imágenes de carpeta de otros con punta de flecha.

  4. A continuación, la pantalla TreeView con datos vinculados en un subformulario. Los nodos de nivel raíz tienen dos imágenes. La imagen de carpeta cerrada se muestra en modo normal. Cuando el nodo de nivel raíz recibe un clic del mouse, muestra la imagen de carpeta abierta y muestra los nodos secundarios en forma expandida.

    La información relacionada se muestra en el subformulario en función de la selección del nodo de nivel raíz.

    Uno de los elementos del nodo secundario seleccionado muestra otro formulario (que normalmente se mantiene oculto) con información relacionada.

    Controles TreeView y ListView

  5. En la siguiente imagen de formulario, hay dos paneles. Los nodos relacionados con el artículo de categoría de producto están en TreeView Control, en el panel izquierdo. Cuando uno de los elementos de categoría recibe un clic en el control TreeView, los elementos de producto relacionados con cantidad y precio de lista en columnas separadas aparecerán en ListView Controlar, en el Panel del lado derecho.

C. Creación de datos de muestra para ejecución de prueba.

Probemos el control TreeView con algunos datos de muestra que se muestran a continuación, basados ​​en las dos primeras imágenes que se muestran al comienzo de esta página.

La tabla de datos de ejemplo anterior tiene tres campos.

  • La identificación El campo es un campo Autonumérico con números de identificación únicos. El tipo Autonumérico se selecciona para nuestra comodidad. En cualquier caso, todos los registros de la tabla deben tener un valor de ID único. Si es numérico, debe convertirse en tipo de cadena antes de agregarlo al control TreeView.

  • El segundo campo es Descripción del nodo (Desc ). Las filas de información en esta Columna están lógicamente relacionadas.

  • El tercer ParentID el campo es de tipo numérico. Pero deben convertirse a Tipo de cadena antes de usarlo en TreeView Control.

Debemos saber cómo se relacionan entre sí los valores de la Columna de descripción, en base a eso podemos establecer la relación ingresando valores relacionados en el ParentID campo.

Por ejemplo, el arreglo lógico de la relación entre el autor de los libros, los editores de los libros, las librerías donde se venden los libros, o como la relación entre los miembros de un árbol genealógico.

Relación entre Categoría de producto, Productos, Inventario, Precio, etc. Es posible que toda esta información no aparezca en una columna en una sola tabla. Pueden aparecer en diferentes columnas o también en diferentes tablas.

El ID de padre El campo es muy importante porque determina la disposición jerárquica de los nodos. Si el campo ParentID está vacío, ese registro debe ir como un nodo de nivel raíz. El Child-Node siempre debe tener su ParentID completado con su valor de ID de registros principales.

El nodo de nivel raíz puede tener uno o más nodos secundarios, el nodo secundario puede tener sus propios nodos secundarios.

Cargaremos los datos anteriores en un control TreeView y veremos cómo se ve. Luego llenaremos el ParentId campo con ID relacionado s para cambiar la vista, la forma en que queremos verlo en un orden lógico.

D. Archivo de biblioteca de controles comunes de Windows .

  1. Pero, lo primero es lo primero, abra una de sus bases de datos o cree una nueva.

  2. Abra la ventana de VBA (ALT+F11 ) y seleccione Referencias… de Herramientas Menú.

  3. Busque el archivo:Controles comunes de Microsoft Windows en la lista de archivos mostrada y coloque una marca de verificación para seleccionarlo.

    Si no pudo encontrar el archivo en la lista, haga clic en Examinar... Haga clic en el botón y busque el archivo:MSCOMLIB.OCX en el directorio del sistema de Windows, para la versión de Windows 7 busque el archivo en SysWOW64 carpeta. Haz clic en Aceptar para cerrar el control de la lista de archivos de la biblioteca.

  4. Cree una tabla con la siguiente estructura:

  5. Guarde la tabla con el nombre Muestra .

  6. Complete la tabla con los datos de muestra de 12 registros como se muestra en la imagen de vista de datos de arriba.

    E. Crear control TreeView en formulario

  7. Crear un nuevo formulario en blanco.

  8. Haga clic en Controles Activex botón de los Controles Grupo, busque el Microsoft TreeView Control luego selecciónalo.

  9. Haz clic en Aceptar para insertar un control TreeView en el Formulario.

  10. Arrastre el control hacia abajo y hacia la derecha para dejar algo de espacio en la parte superior e izquierda del control TreeView. Arrastre el controlador de tamaño de la esquina inferior derecha hacia la esquina derecha e inferior para agrandar el control, como la imagen de muestra que se muestra a continuación.

  11. Mostrar la Hoja de propiedades del control y cambiar su Nombre Valor de propiedad para TreeView0, si es diferente allí.

  12. Muestra la ventana de edición de VBA del formulario.

  13. F. Acceda al código VBA.

  14. Copie y pegue el siguiente código VBA en el módulo sobrescribiendo las líneas de código existentes allí:
    Option Compare Database
    Option Explicit
    
    Dim tv As MSComctlLib.TreeView
    Const KeyPrfx As String = "X"
    
    Private Sub Form_Load()
    Dim db As Database
    Dim rst As Recordset
    Dim strSQL As String
    Dim nodKey As String
    Dim ParentKey As String
    Dim strText As String
    
    Set tv = Me.TreeView0.Object
    
    strSQL = "SELECT ID, Desc, ParentID FROM Sample;"
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
    
    Do While Not rst.EOF And Not rst.BOF
        If Nz(rst!ParentID, "") = "" Then
            nodKey = KeyPrfx & CStr(rst!ID)
            strText = rst!Desc
            ‘Add the TreeView Root Level Nodes
            tv.Nodes.Add , , nodKey, strText
        
        Else
            ParentKey = KeyPrfx & CStr(rst!ParentID)
            nodKey = KeyPrfx & CStr(rst!ID)
            strText = rst!Desc
            ‘Add the Record as Child Node
            tv.Nodes.Add ParentKey, tvwChild, nodKey, strText 
            
        End If
        rst.MoveNext
    Loop
    rst.Close
    
    Set rst = Nothing
    Set db = Nothing
    
    End Sub
    
    
  15. Guarde el formulario con el nombre frmSample, pero no cierre la ventana de VBA.

    G. Código VBA línea por línea.

Echemos un vistazo rápido al Código VBA y comprendamos lo que hace.

En el Área de Declaración Global, del Módulo Formulario, la Variable tv declarado como TreeView Objeto. El Prfx de clave declarado como Constante , con valor de tipo de cadena "X".

El nodo TreeView El valor clave de debe ser siempre de tipo cadena y necesita al menos un carácter no numérico presente en la clave de nodo. Nuestros valores clave de tabla de muestra están todos en forma numérica, podemos convertirlos y agregarlos al valor constante "X ”. El valor numérico convertido en tipo de cadena por sí solo no se aceptará como clave de nodo.

Nota: Si la clave de nodo y Clave principal los valores ya están en forma alfa o alfanumérica, entonces no surge la cuestión de la conversión. Todos los valores de clave de nodo deben ser únicos.

En el Form_Load() Procedimiento de evento, se declaran los objetos Base de datos y Conjunto de registros. También se declaran cuatro variables de cadena.

La sentencia Set tv =Me.TreeView0.Object instrucción asigna, el TreeView0 Objeto en el Formulario, a la variable de objeto tv.

La instrucción OpenRecordset() abre el Sample Registros de tabla utilizando SQL strSQL.

El hacer mientras... declaración asegura que el conjunto de registros no está vacío, si está vacío, salga del bucle y finalizar el Programa.

Si hay registros, el ParentId del primer registro El campo se comprueba por la presencia de algún valor allí o no.

Si está vacío, ese registro es para el nodo de nivel raíz del control TreeView ít. El nodo de nivel raíz solo necesita la clave de nodo única Valor, que ya tenemos en el ID Campo y elemento Descripción Valor de campo para Texto Argumento.

Si el ParentID el campo tiene algún valor, entonces el registro es un nodo secundario (Hijo del nodo de nivel raíz o hijo de algún nodo hijo de nivel superior) del objeto TreeView.

La siguiente línea crea la Clave Valor del argumento en nodKey Variable de cadena, con el ID Valor del campo, convertido en Cadena y agregado al prefijo constante X, Node-Key se convierte en X1 .

El primero!Desc valor de campo agregado a la variable de cadena strText, simplemente por claridad y para abreviar en Nodes.Add() Lista de parámetros del método, si la referencia del campo es muy larga, esto mantendrá el método Add() limpio y ordenado.

La siguiente línea ejecutable:tv.Node.Add() llama al método Add() de TreeView.Nodes Objeto para agregar el Nodo a TreeView0 control en el Formulario frmSample .

La Sintaxis del método Add() se proporciona a continuación como referencia:

tv.Nodes.Add([Relative],[Relationship],[Key],[Text],[Image],[SelectedImage]) As Node

Los seis parámetros de Add() método son opcionales. Si llama a este método sin ningún parámetro, entonces un Nodo de nivel raíz vacío se agregará y aparecerá una línea de árbol en blanco como indicador en el control TreeView.

Para TreeView Raíz Nivel Nodo requiere la Clave y Texto Valores de argumento.

Para los nodos secundarios, tanto [Relative] y [Relación] Se requieren argumentos. Omitir cualquiera de ellos insertará el Nodo como Nodo Raíz, pero no generará ningún error.

[Pariente] es la NodKey de un nodo existente, ingresado en el ParentID del registro relacionado campo. [Relación] es un tvwChild constante con valor numérico 4, identificándolo como un Child Node de Key- Valor en ParentID Campo.

La otra Constante Los valores para el argumento de relación se utilizan para posicionar los nodos secundarios en una ubicación específica. Los valores constantes son los siguientes:

tvwPrimero =0, lo coloca como primer Nodo, al nivel del Nodo relativo.

tvwÚltimo =1, se coloca como último Nodo, al nivel del Nodo relativo.

tvwSiguiente =2, coloca el Nodo después de un Nodo especificado.

tvwAnterior =3, coloca el Nodo inmediatamente anterior al Nodo especificado.

Nota: Puede experimentar estableciendo cada valor en la relación Argumente y ejecute el código en modo de depuración, después de mantener la ventana y el formulario de VBA en vista normal uno al lado del otro. Observe cómo se organizan los nodos en cada ciclo de ejecución del código para comprender.

Estos serán útiles al editar el control TreeView eliminando un elemento e insertando otro elemento en su lugar o agregando un nuevo nodo en una ubicación específica.

Debe existir un nodo con clave [relativa] en la colección de nodos antes de intentar agregar un nodo secundario a ese nodo; de lo contrario, el método Add() genera un error.

Este proceso se repite hasta que todos los registros se procesan en el conjunto de registros.

Nota: Puede revisar el código VBA nuevamente después de la ejecución de la demostración.

H. La primera ejecución de prueba.

Abra el formulario en vista normal. El resultado de la ejecución de prueba se verá como la imagen que se muestra a continuación.

No parece más que un cuadro de lista normal. Recuerde que no hemos completado ningún valor en el ParentID campo en nuestro Ejemplo Mesa. Tenemos que establecer alguna relación entre los Elementos en las filas de Registro para moverlos y posicionarlos en un orden jerárquico en el Control TreeView.

I. Comprender la relación entre registros.

  1. Abra la Tabla de muestra y examinemos los Registros y cómo están relacionados.
  2. Dejemos la base de datos elemento solo como elemento raíz.

    El objeto de base de datos también tiene algunos objetos de nivel superior:Aplicación, DBEngine, Colección de espacios de trabajo y Colección de bases de datos , que hemos omitido aquí.

  3. Luego tenemos las Tablas elemento de grupo con ID valor 2.
  4. La próxima Mesa , Campos, Campo los elementos están relacionados con las Tablas grupo. Queremos la Mesa Campos, y Campo elementos que se alinearán debajo de las tablas de elementos principales Registro de grupo con valor de ID 2.
  5. Llamemos al registro Tablas como Nodo principal , tablas, campos y registros de campo como nodos secundarios .

    J. Actualización del campo ParentID.

  6. Entonces necesitamos actualizar el valor 2 (Nodo-Clave de Tablas ) en el padre ID del padre campo de Tabla , Campos, y Campo registros.
  7. Actualice solo esos registros y cierre la tabla. Cuando haya terminado, los registros se verán como la imagen que se muestra a continuación:
  8. Ahora, abra su frmSample en Vista de formulario y verifique el control TreeView. El resultado se verá como el anterior sin ningún cambio. Los cambios ya ocurrieron pero no son visibles para usted.

    K. La hoja de propiedades del control TreeView.

  9. El control TreeView tiene su propia hoja de propiedades y la configuración influye en su apariencia. Así que haremos un cambio en una de sus Propiedades y volveremos a ver el TreeView nuevamente.

  10. Gire el frmSample en la vista Diseño.
  11. Haga clic con el botón derecho en TreeView Control y resalte TreeCtrl_Object en el menú contextual y seleccione Propiedades .

    La hoja de propiedades se verá como la imagen que se muestra a continuación:

  12. La configuración de esta hoja de propiedades cambia la apariencia de la pantalla TreeView.

    La propiedad superior izquierda Style ya está configurado con las funciones máximas disponibles Opción-7 (tvwTreeLinesPlusMinusPictureText).

  13. Cambiar el LineStyle Propiedad Valor =1 (tvwRootLines) y haga clic en Aplicar y luego haga clic en OK para cerrar la hoja de propiedades.

    L. Ejecutar después del LineStyle Cambio de valor de propiedad

  14. Guarde el formulario y ábralo en Vista normal. Ahora, las líneas de árboles aparecen correctamente. Las Mesas El nodo tiene un plus (+ ) en el lado izquierdo, indicando que este Nodo tiene uno o más Nodos Hijos en el siguiente nivel y no están en forma expandida.
  15. Haga clic en el símbolo más para expandir el nodo y mostrar los nodos secundarios, con el mismo ParentID. Cuando hace clic en el símbolo menos, los nodos secundarios se contraen y ocultan, cambiando el símbolo a un signo más nuevamente.
  16. La pantalla se verá como la siguiente imagen cuando se expanda:


    M. ID de padre Actualización de Otros Registros.

    Actualizaremos los Formularios registrar ID Valor (Valor de clave de nodo) en Forma, Controles, y Control ParentID de registros campos para que estos registros se incluyan en Formularios Nodo como sus nodos secundarios .

    De manera similar, actualice el campo ParentID de Informe y Controles registros con Informes Identificación (Node-Key Value) Valor para que Informe y Controles los elementos se ubicarán debajo del nodo principal Informes , ya que son nodos secundarios .

  17. Realice cambios en los registros de su tabla de muestra con los valores de ParentID como se muestra a continuación:

    Después de los cambios anteriores, la pantalla TreeView se verá como la siguiente imagen, cuando todos los nodos estén expandidos.

    Todos los nodos secundarios relacionados con los nodos de nivel raíz:las tablas, los formularios y los informes se agrupan en una lista debajo de sus nodos principales. Pero un nodo hijo puede tener un nodo padre, un nodo abuelo o un nodo bisabuelo.

    N. Organización de todos los objetos en orden jerárquico lógico.

    Por ejemplo, tomemos el primer nodo de nivel raíz Tablas . Lógicamente Campo (con ID de registro 5) está directamente relacionado con los Campos colección (ID de registro 4), los Campos colección relacionada con Table y Mesa es parte de Tablas recopilación. Cada elemento del grupo (número de registro 5 a 2) está relacionado un paso hacia el siguiente nivel.

    Así que coloquemos estos nodos secundarios correctamente debajo de su propio nodo principal y veamos cómo se ve.

  18. Abra su tabla de muestra y cambie los valores de ParentID de las tablas relacionados con registros de niños como se muestra a continuación:

  19. El Campo con El padre del registro ID-5 es Fields, registro con ID-4, por lo que hemos actualizado el campo ParentID del quinto registro con el número de ID 4.
  20. Del mismo modo, el campo ParentID del cuarto registro se actualiza con 3, y el ParentID del tercer registro se actualiza con el número de registro 2.
  21. Nota: No asuma que los elementos dispuestos de esta manera deben estar uno al lado del otro.

  22. Después de los cambios en los registros, guarde la tabla y abra frmSample para ver los cambios. Su pantalla TreeView debe verse como la imagen que se muestra a continuación, con todos los nodos en forma expandida.

El nodo hijo de un nodo de nivel raíz puede ser un nodo padre para su propio hijo o hijos. De esta manera puede descender varios escalones en el árbol.

Cambie los otros dos grupos de ParentID de Child Node valores de campo para parecerse a la imagen dada arriba.


OBJETO DE DICCIONARIO

  1. Conceptos básicos de los objetos del diccionario
  2. Conceptos básicos de objetos de diccionario-2
  3. Ordenar elementos y claves de objetos del diccionario
  4. Mostrar registros del diccionario
  5. Agregar objetos de clase como elementos de diccionario
  6. Actualizar elemento del diccionario de objetos de clase