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

Asignación de imágenes a nodos de vista de árbol-2

Introducción.

Espero que haya encontrado las sesiones de tutoriales de las últimas semanas, de Microsoft TreeView e ImageList Control interesantes y listas para enfrentar el próximo episodio. Si aún no ha leído los artículos anteriores, a continuación se proporcionan los enlaces.

  • Tutorial de control de vista de árbol de Microsoft
  • Creación del menú de acceso con control de vista de árbol
  • Asignación de imágenes a nodos de vista de árbol

Esta publicación es la continuación del episodio de la semana pasada.

La semana pasada creamos algunas imágenes y las subimos a ImageList Control mediante código VBA, para Microsoft Tree View Control. La referencia del control ImageList se pasó a la propiedad ImageList del Control de vista de árbol. Después de estos pasos, podríamos usar directamente los Nombres clave de la imagen o Números de índice como Nodo [Imagen] y [Imagen seleccionada] Parámetros en los Nodos.Add() Método del objeto de vista de árbol de Microsoft. Con la ayuda de estos dos controles, pudimos crear un hermoso menú de proyecto de Microsoft Access, con elementos de menú en una estructura jerárquica con líneas de árbol e imágenes de elementos de menú visualmente agradables.

Formulario de ejecución de prueba de la semana pasada con imágenes de nodos.

A continuación, se muestra la imagen del menú de acceso al proyecto de la semana pasada, con imágenes de nodos y líneas de árboles.

Código VBA para cargar imágenes en ImageList Control.

El siguiente es el código VBA que hemos utilizado para cargar imágenes en los nodos de objetos de ImageList:

Dim tvw As MSComctlLib.TreeView
Const KeyPrfx As String = "X"
Dim objimgList As MSComctlLib.ImageList


Private Sub CreateImageList()
Dim strPath As String

'Initialize Tree View Object
Set tvw = Me.TreeView0.Object
'Clear the Tree View Nodes, if any.
tvw.Nodes.Clear

'Initialize ImageList Object
Set objimgList = Me.ImageList0.Object
’the images must be saved in database path
strPath = CurrentProject.Path & “\”

With objimgList.ListImages
'Key Names are Case sensitive.
    .Add , "FolderClose", LoadPicture(strPath & "folderclose2.jpg")
    .Add , "FolderOpen", LoadPicture(strPath & "folderopen2.jpg")
    .Add , "ArrowHead", LoadPicture(strPath & "arrowhead.bmp")
    .Add , "LeftArrow", LoadPicture(strPath & "LeftArrow.bmp")
    .Add , "RightArrow", LoadPicture(strPath & "RightArrow2.bmp")
End With

With tvw
    .ImageList = objimgList
End With

End Sub

Al presentar el código anterior, mencioné que hay una manera más fácil de cargar las imágenes en ImageList Control, sin el código VBA. Además de eso, prometí compartir las imágenes, que he usado en la demostración anterior Nodos del menú de acceso. Llegaremos a eso en breve.

No estábamos simplemente creando algunos imágenes y su uso. Sin embargo, hemos creado algunas imágenes significativas para nuestro menú de proyecto de acceso basado en vista de árbol.

Tomemos el caso de las imágenes de la carpeta de nivel raíz. El Cerrar Carpeta El estilo de imagen se usa para la vista normal del nodo de nivel raíz mientras se ocultan todos sus nodos secundarios de la vista. Cuando el usuario hace clic en el nodo de nivel raíz, FolderOpen aparece la imagen y expone sus nodos secundarios. Un segundo clic en el nodo no cambiará la imagen a la vista normal, mientras tenga el foco, pero los nodos secundarios pueden desaparecer de la vista, dependiendo de TreeView0_NodeClick() Código de procedimiento de evento.

De manera similar, los nodos secundarios tienen la Flecha izquierda orientada hacia la izquierda imagen en vista normal e imagen un poco más grande RightArrow , apuntando a la derecha, cuando se hace clic. Las palabras resaltadas son nombres clave utilizados en el control ImageList. La acción Hacer clic abre el Formulario , Informar, o Macro, dependiendo del nodo secundario seleccionado.

El control ImageList en el formulario.

La Lista de imágenes El control se resalta en la Vista de diseño del frmMenu anterior El formulario se proporciona a continuación como referencia:

La hoja de propiedades del control ImageList.

La imagen de la hoja de propiedades de ImageList se proporciona a continuación como referencia:

Revisión del ejercicio y los preparativos de la semana pasada.

La semana pasada seleccionamos el Tamaño de imagen 16 x 16 píxeles y cargó las imágenes requeridas en el control ImageList anterior usando el código VBA. Después de cargar todas las imágenes, pasamos la referencia del objeto ImageList a la propiedad ImageList del control de vista de árbol. .

Después de los pasos anteriores, podríamos usar el Número de índice o Valor-clave de Imágenes en el Add() parámetros de método, de Tree View Nodes.

No hemos especificado el primer parámetro del método Add() de ImageList. Pero, el propio método Add() inserta el número de índice de cada imagen en el control ImageList. Recuerda, cuando ingreses la Clave valor en el método Nodes.Add() [Imagen], [SelectedImage] El parámetro es sensible a mayúsculas y minúsculas . Es mejor, cuando ingresa valores clave, en la clave del control ImageList. Cuadro de texto, con minúsculas.

Ahora, como prometí, mostraré la manera fácil de cargar imágenes en ImageList Control. Es tan simple como seleccionar todas las Imágenes requeridas, una por una, desde su disco manualmente y agregarlas a la ImageList Control, sin ningún código VBA.

Además de eso, puede compartir el control ImageList con otros proyectos, simplemente copiando y pegando el control ImageList en otro formulario de proyecto, con todas las imágenes intactas. Entonces todo lo que tiene que hacer es usar el Valor-clave o Número de índice en el método Add() de TreeView Control Nodes.

Si ya ha descargado la base de datos de demostración de la publicación de la semana pasada, abra ProjectMenuV21.accdb . Hemos guardado una copia del Formulario frmMenu con el nuevo Nombre frmMenu2 .

Agregar el control ImageList en el formulario frmMenu2.

  1. Abra el formulario frmMenu2 en Vista de diseño.

  2. Insertar control ImageList de Microsoft de la lista de controles Activex, en algún lugar del espacio vacío en el formulario frmMenu2.

  3. Cambiar su Nombre Valor de propiedad para ImageList0.

  4. Haga clic derecho en el Control de lista de imágenes, resalte Objeto ImageListCtrl Opción, en el menú que aparece y seleccione Propiedades .

  5. Seleccione el tamaño de imagen predeterminado 16 x 16 píxeles Opción, en las Propiedades General Pestaña. Es importante que seleccione una de estas opciones en General Tabulador primero, antes de agregar cualquier imagen a las imágenes Pestaña

  6. Selecciona las Imágenes Pestaña. La ficha Propiedades Imágenes se parece a la siguiente imagen:

  7. Haga clic en Insertar imagen Botón de comando, busque la carpeta_cerrada imagen de muestra (si tiene una o selecciona la imagen que preparó anteriormente), que creó para una ejecución de prueba la semana pasada, selecciónela y haga clic en Abrir Botón de comando.

    El control ImageList se verá como la imagen que se muestra a continuación, después de insertar la imagen seleccionada.

  8. Tres controles de cuadro de texto:Índice , Clave, y Etiquetar ahora están habilitados. El Índice el control tiene el valor de índice 1 insertado en él automáticamente.

  9. Introduzca el texto folder_close o cualquier valor clave que prefiera usar en los parámetros del método Add() del control Tree View, en la Clave Control de cuadro de texto. Su tipo de datos debe ser de tipo cadena y único entre todos los valores clave de la imagen.

  10. La etiqueta La propiedad se puede utilizar para registrar información útil, como el nombre de ruta de la imagen.

  11. Agregue todas las imágenes requeridas de su disco, una tras otra, e ingrese los valores clave apropiados en el control Texto clave, para todas las imágenes que cargue. Use valores clave simples, significativos y fáciles de memorizar.

  12. Si desea eliminar alguna imagen del control, seleccione esa imagen y haga clic en Eliminar imagen.

  13. Cuando termine de cargar las imágenes, haga clic en Aplicar Botón de comando y luego haga clic en Aceptar para cerrar la ImageList Controlar.

    Nota: Recuerde, ha agregado todas las Imágenes, después de seleccionar la Imagen Tamaño 16 x 16 píxeles en el General Pestaña. Después de cargar imágenes, no puede cambiar el tamaño de la imagen en la pestaña General. Si prefiere una opción de tamaño de imagen diferente, después de cargar imágenes, primero debe eliminar todas las imágenes. Solo entonces podrá seleccionar una opción de tamaño de imagen diferente y luego repetir el proceso de carga nuevamente.

    El control ImageList con más imágenes:

  14. En caso de que no esté seguro de qué valor clave ha ingresado para una imagen en particular, haga clic en la imagen para mostrar el valor clave en la clave. Caja de texto.

  15. Después de cargar todas las imágenes requeridas en el control, permanecen dentro del control ImageList. Si necesita las mismas Imágenes en algún otro Proyecto, puede hacer una copia del Control ImageList en cualquier lugar que desee o compartir el Formulario/Base de datos con otros, con las imágenes. Puede agregar más imágenes de esta manera desde una nueva ubicación.

  16. Después de cargar todas las imágenes, debemos pasar la referencia del control ImageList a la vista de árbol Propiedad ImageList del control como hicimos antes después de cargar imágenes a través del código VBA.

  17. El siguiente código de muestra pasará la referencia de ImageList a la propiedad ImageList del control de vista de árbol en nuevos proyectos.

    Dim objimgList As MSComctlLib.ImageList
    
    'Initialize ImageList Object
    Set objimgList = Me.ImageList0.Object
    
    With tvw
        .ImageList = objimgList
    End With
    

Expandir/contraer nodos con un botón de comando

  1. Abra el formulario frmMenu2 en la vista de diseño.

  2. Seleccione Contraer todo Botón de comando, abra su procedimiento de evento de clic y elimine el código.

  3. Elimine ese botón de comando del formulario.

  4. Seleccione Expandir todo Botón de comando, abra su Procedimiento de evento de clic.

  5. Copie el siguiente código VBA y péguelo sobrescribiendo las líneas existentes, entre cmdExpand_Click() . . . Finalizar sub líneas como se muestra a continuación:

Private Sub cmdExpand_Click()
Dim Nodexp As MSComctlLib.Node

If cmdExpand.Caption = "Expand All" Then
    cmdExpand.Caption = "Collapse All"
    
    For Each Nodexp In tvw.Nodes
        Nodexp.Expanded = True
    Next Nodexp
Else
    cmdExpand.Caption = "Expand All"
    
    For Each Nodexp In tvw.Nodes
        Nodexp.Expanded = False
    Next Nodexp
End If

End Sub
  1. Guarde y abra frmMenu2 en vista normal.

  2. El título del botón de comando es Expandir todo ahora.

  3. Haga clic en el botón de comando para expandir todos los nodos. Todos los nodos están ahora en forma expandida. El título del botón de comando cambia a Contraer todo .

  4. Vuelva a hacer clic en él y todos los nodos estarán contraídos, el texto del título volverá a cambiar a Expandir todo. de nuevo.

La próxima semana veremos el uso de las casillas de verificación en los nodos para aprender cómo podemos identificar los nodos marcados y trabajar con ellos.

MÓDULO DE CLASES

  1. Módulo de clases MS-Access y VBA
  2. Matrices y objetos de clase VBA de MS-Access
  3. Clase base de MS-Access y objetos derivados
  4. VBA-Clase Base y Objeto Derivado-2
  5. Variantes de clase base y objeto derivado
  6. Módulo de clase y conjunto de registros de MS-Access
  7. Módulo de clase de acceso y clases contenedoras
  8. Funcionalidad de clase contenedora