Visual Basic - Guía del Estudiante Cap. 16 CONTROLES AVANZADOS DE VISUAL BASIC Este capítulo pretende ampliar el conocimiento de ciertos controles introducidos con la versión 6 de VB, que, aunque ya son de uso habitual en cualquier aplicación, se salen un poco de los conceptos estudiados en los controles de los capítulos 1 y 2. Vienen generalmente como un paquete OCX que contiene varios de ellos. Se estudian algunos de los paquetes distribuidos por Microsoft, sean o no fabricados por esta compañía. Sería interminable comentar los paquetes realizados por casas especializadas, controles de gran calidad, normalmente caros y para aplicaciones específicas dentro del ámbito comercial en el que se mueve la empresa que lo realiza. Existen también gran cantidad de controles realizados por particulares, con la mejor intención, que se pueden encontrar en Internet distribuidos de forma gratuita. Son desaconsejables. No porque no funcionen, sino simplemente porque no ofrecen ningún tipo de garantía, están normalmente sin información de funcionamiento, y en caso de problemas no se puede recurrir a nadie para resolverlos. Una aplicación profesional nunca deberá llevar un control shareware. Paquete MSCOMCTL.OCX Este paquete se denomina Microsoft Windows Common Controls 6.0 Contiene los siguientes controles: TabStrip
Es un control de pestañas. Pero este control no hace de contenedor de otros controles, por lo que hay que introducir un control Frame o PictureBox por cada una de las pestañas. No es práctico. Utilice en su lugar el SSTab.
Fig. 16.1 Aspecto del TabStrip ToolBar
Este es el control que presenta una barra de tareas. Es configurable, pudiendo poner los botones que queramos con el icono apropiado. Es el control que el alumno introduce por norma en sus primeras aplicaciones. Luego se va dando cuenta de que hay cosas mejores y más simples. (Un Picture Box con varios controles Image).Se coloca automáticamente en la parte superior del formulario. Fig. 16.2 ToolBar con cuatro botones
StatusBar
Similar al anterior, pero para la barra de estado en la parte inferior del formulario. Personalmente, creo que es más útil que el anterior. Puede presentar automáticamente algunos parámetros del PC (Bloq. Mayúsculas, Bloq. Números, Hora, Fecha) o el texto que se desee. Fig. 16.3 StatusBar
ProgressBar
Es la típica barra de progreso de Windows.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 1
Fig. 16.4 Slider
Es un control que permite introducir valores mediante un cursor Fig. 16.5
Los controles anteriores se parecen a otros similares ya explicados en los capítulos anteriores, y la profundización en sus propiedades y métodos no va a ser problema para el alumno sin más explicaciones. Reservemos el tiempo de estudio para lo interesante, que es lo que viene ahora ImageList
Es un almacén de imágenes. Este control es necesario para poder poner imágenes en el resto de los controles de este paquete. Se pueden usar varios controles ImageList dentro del mismo formulario, y con la propiedad ImageList de cada control utilizar uno u otro en cada uno de los controles que se usen en el mismo formulario. Ya se ha visto en un capítulo anterior, pero ampliaremos aquí los detalles de su funcionamiento.
TreeView
Es un control que permite presentar de forma gráfica datos estructurados de forma jerárquica, pudiendo usar gráficos y textos para presentarlos.
ListView
Es un control que permite presentar datos en una lista, utilizando para ello gráficos y texto, con cuatro disposiciones distintas.
ImageCombo Es como un combo convencional, pero en este se pueden insertar también gráficos y hacer sangrías independientes para cada elemento. Estos cuatro últimos controles se explican a continuación con detalle.
Control ImageList Es un almacén de imágenes. Se representa en la caja de herramientas de esta forma: Fig. 16.6
En tiempo de ejecución no tiene presentación gráfica. Método.
No tiene eventos y solamente un
Como todos los controles de este paquete, tiene un cuadro de propiedades personalizado que facilita la introducción de las mismas. El cuadro de propiedades tiene tres pestañas, de las cuales solamente tienen importancia dos de ellas: General e Imágenes. La tercera se refiere a los colores que en este caso no tienen función alguna. Las pestañas pueden verse en las figuras 16.7 y 16.8
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 2
Fig. 16.7 Pestaña General. En esta pestaña se elige el ancho y alto de la imagen. Es importante esto a la hora de presentar los iconos sobre un ListView o TreeView, ya que el tamaño con el que aparecen en estos controles es precisamente el elegido en esta pestaña. Mediante el uso de dos ImageList, uno con imágenes de 32 x 32 y otro, con las mismas imágenes, pero de 16 x 16, podemos cambiar el tamaño de los iconos en los controles ListView o TreeView. Este truco es la única solución para poder poner iconos grandes o pequeños en el TreeView. Para cambiar el tamaño es necesario que el ImageList no tenga cargada aún ninguna imagen. Fig. 16.8 Pestaña de Imágenes
En esta se pueden introducir las imágenes que vamos a utilizar en los controles que tengan asociado este ImageList. Es importante citar la propiedad Key de cada imagen, que sirve para elegir la imagen. Una imagen de un ImageList se puede elegir mediante su índice (El índice va de 1 a n, siendo n el número de imágenes), pero eso puede llevarnos a error, ya que dice muy
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 3
poco el número de la imagen dentro del ImageList, además de que ese número puede variar si introducimos posteriormente una imagen nueva en una posición central. Podemos utilizar para definir la imagen el texto que introduzcamos en la propiedad Key. Por ejemplo, en la figura anterior, la imagen que presenta una interrogación tiene el valor Question, valor que expresa de forma inconfundible el contenido de esa imagen, y que es inalterable sea cual sea la posición que ocupa esa imagen en el ImageList. De esta forma, para poner esa imagen en el nodo número 1 del TreeView1 basta con poner: TreeView1.Nodes(1).Image = "Question" Otras propiedades y métodos del control ImageList Propiedad ListImages. Esta propiedad representa al conjunto de imágenes del control ImageList. Pueden introducirse más imágenes en tiempo de ejecución, utilizando el método Add sobre esta propiedad, cuya sintaxis es la siguiente: ImageList.ListImages.Add Index, Key, Picture Por ejemplo:
ImageList1.ListImages.Add 6, "Imagen1TE", Picture1.Picture
(Se ha introducido en la colección ListImages la imagen que tienen el Picture1 como imagen con Index = 6 y con Key = Imagen1TE) También se puede vaciar un ImageList usando el método Clear: ImageList1.ListImages.Clear Propiedad MaskColor Devuelve o establece el color que se usa para crear las máscaras de un control ImageList. Sintaxis
ImageList.MaskColor = color
Esta propiedad se usa en el método Overlay. La propiedad MaskColor determina qué color de una imagen será transparente en el método Overlay. Sólo es aplicable cuando la imagen del ImageList es un BMP Método Overlay Dibuja una imagen utilizando dos imágenes de la colección ListImages de un control ImageList, y pone esa imagen dentro de un control Sintaxis
Control.Picture
= ImageList.Overlay (índice1, índice2)
Donde Indice1 e Indice2 son la propiedad Index o la propiedad Key de la imagen que se va a superponer (Indice1) y de la imagen sobre la que se va a superponer la primera (Indice2). Control es un control capaz de contener una imagen (Picture, Image, Formulario) Antes de utilizar el método Overlay deberemos poner un valor a la propiedad MaskColor. (La transparencia de un color solamente va a funcionar cuando vamos a superponer dos imágenes en formato BMP)
Control TreeView.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 4
Es un control que permite presentar datos que están estructurados de forma jerárquica. Los datos se pueden presentar como un texto, acompañados de un icono que determina el tipo de dato. Puede por ejemplo presentar el organigrama de una empresa, mostrando los departamentos que la componen, y dentro de estos, las personas que pertenecen a cada departamento, y para cada persona, su número de teléfono, fax, E-Mail y domicilio, y todos ellos, representados con un icono. Al hacer doble clic sobre un icono se despliegan los elementos que existen bajo ese icono. Volviendo a hacer doble clic, se ocultan. Es lo más parecido al funcionamiento del explorador de Windows.
Fig. 16.9 TreeView mostrando seis nodos, a la izquierda con iconos grandes y a la derecha con iconos pequeños. La vista de la Fig. 16.9 nos lleva a la primera idea acerca del TreeView: los Nodos. En cualquier estructura jerárquica, un elemento tiene contenido en sí mismo, pero de él pueden depender otros elementos. Esto nos lleva al concepto de Nodo. En el TreeView los datos se presentan mediante nodos. El conjunto de todos los nodos es la colección Nodes. Esta colección como cualquier colección en visual basic tiene sus propiedades y métodos. Para empezar, la colección Nodes tiene el método Add. De esta forma ya podemos introducir nodos en el TreeView. También tienen los método Remove, para eliminar uno de los nodos, y Clear, para eliminar todos los nodos del TreeView. El TreeView tiene varios estilos de presentación. Puede presentar los datos solamente con textos, con texto y un icono, con un signo + ó – para indicar que ese nodo tiene elementos bajo él, puede tener líneas o no. El estilo de presentación lo elegimos mediante la propiedad Style del TreeView. Propiedad Style. Determina el estilo de presentación del TreeView. Es de lectura y escritura Sintaxis
LSB
NombredelTreeView.Style = Número
Visual Basic Guía del Estudiante
Capitulo 16
(Establece el estilo)
Pág. 5
Número = NombredelTreeView.Style
(Devuelve el estilo)
El parámetro Número puede ser un número del 0 al 7. El estilo correspondienta a cada valor es: 0 = Sólo Texto
1 = Imagen y Texto
2 = +/- y Texto
4 = Líneas y texto
5 = Líneas, imagen y Texto
3 = +/- imagen y texto 6 = Líneas, +/- y texto
7 = Líneas, +/-, Imagen y Texto (Valor predeterminado) Con lo visto hasta ahora ya podemos ver cómo introducimos nodos en un TreeView. Para poder introducir nodos con gráficos, es necesario poner en el mismo formulario, un control ImageList con todas las imágenes que queremos poner en los nodos (Observe en la Fig. 16.8 que contiene todos los iconos que aparecen en la Fig. 16.9 Izda.) En ese ImageList hay que poner a cada imagen un valor en su propiedad Key (En la Fig. 16.8, la imagen correspondiente a la carpeta cerrada tiene en su propiedad Key la cadena “Cerrado”, la imagen con una carpeta abierta, “Abierto”, la correspondiente al sobre tiene “Sobre” y la cara, “Cara”. Ya podemos introducir los nodos mediante el método Add: Método Add para la colección Nodes de un TreeView Añade un nodo a la colección Nodes de un TreeView Para añadir un nodo, primero debemos declarar una variable tipo Node. (Dim MiNodo As Node) A continuación ejecutar el método Add, que tiene la siguiente Sintaxis Set VariableTipoNode = NombredelTreeView.Nodes.Add (RelativoA, TipodeRelacion, Key, Texto, Imagen1, Imagen2) Donde: VariableTipoNode es la variable declarada como tipo Node (MiNodo en el ejemplo) NombredelTreeView es el nombre del TreeView RelativoA es el Key o el Index del nodo del cual dependerá este nodo que estamos introduciendo. Si el nodo no va a pertenecer a ningún otro (caso del nodo Raiz) este valor se deja en blanco, pero recuerde que debe poner la coma de separación. Lógicamente el nodo indicado en este parámetro ya debe estar introducido antes de introducir este. TipodeRelacion es un valor o constante que determina la situación del nodo respecto al nodo indicado en el parámetro RelativoA. Vea más abajo los valores aceptados en este parámetro. Key es una cadena de caracteres que define a este nodo. Esta cadena de caracteres debe ser única, es decir, no se puede repetir en dos o más nodos. Debe empezar por letra, aunque puede contener números. Texto es el texto que va a figurar en el nodo. Es un parámetro obligado. Imagen1 es la propiedad Index o Key de la imagen que queremos poner en el nodo. Este Index o Key es el que tiene esa imagen en el control ImageList asociado a este TreeView. Imagen1 es la imagen que mostrará el TreeView para ese nodo cuando ese nodo NO está seleccionado. Imagen2 es la propiedad Index o Key de la imagen que queremos que aparezca en ese nodo cuando está seleccionado. Si no se pone este parámetro, la imagen del nodo cuando está seleccionado, es la misma que cuando no lo está. Los valores para TipoRelacion pueden ser: Constante
LSB
Valor
Descripción
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 6
TvwFirst
0
Primero. El objeto Node se sitúa antes de todos los demás nodos al mismo nivel que el especificado en RelativoA
TvwLast
1
TvwNext
2
(Predeterminado) Siguiente. El objeto Node se sitúa después del especificado en RelativoA.
TvwPrevious
3
Anterior. El objeto Node se sitúa antes del especificado en RelativoA
TvwChild
4
Secundario. El objeto Node es secundario con respecto al nodoespecificado en RelativoA.
Ultimo. El objeto Node se sitúa después de todos los demás nodos al mismo nivel que el especificado en RelativoA. Los objetos Node que se agregan secuencialmente se irán situando detrás del último agregado.
El Index de la colección Nodes comienza a numerar por el 1. Cada vez que se añade un nodo, el Index de ese nodo será el Index del último + 1, independientemente de la posición que va a ocupar ese nodo dentro del TreeView. No controlamos directamente esta propiedad. Por eso, es mucho más práctico definir a los nodos mediante su propiedad Key. Ya estamos en condiciones de rellenar un TreeView con varios nodos. El código para colocar los nodos de la figura 16.9 es: (El nombre del TreeView es TreeV1) Dim MiNodo As Node ‘Declaramos la variable tipo Node TreeV1.Style = 7
‘Hacemos que el estilo sea Líneas, +/-, Imagen y Texto
Set MiNodo = TreeV1.Nodes.Add(, , "R", "Raíz")
‘No tienen parámetro RelativoA
‘Los siguientes nodos,dependen del nodo Raiz, que tiene Key = “R” Set MiNodo = TreeV1.Nodes.Add("R", tvwChild, "C1", "Secundario 1", "Cerrado") Set MiNodo = TreeV1.Nodes.Add("R", tvwChild, "C2", "Secundario 2", "Cerrado") Set MiNodo = TreeV1.Nodes.Add("R", tvwChild, "C3", "Secundario 3", "Sobre") Set MiNodo = TreeV1.Nodes.Add("R", tvwChild, "C4", "Secundario 4", "Cerrado") ‘El siguiente nodo depende de Secundario 4, que tienen Key = “C4”, y además tiene un ‘icono distinto (Question) para cuando está seleccionado. Set MiNodo = TreeV1.Nodes.Add("C4", 4, "C4b", "Terciario C41" , "Cara", "Question") ‘Ahora se introduce una propiedad a cada uno de los nodos todavía no explicada: la ‘imagen que va a tener cuando ese nodo esté expandido, es decir, cuando se ven los ‘nodos que dependen de él. Vea que se le pone un valor a esta propiedad incluso a los ‘nodos que no tienen otros nodos que dependan de ellos. TreeV1.Nodes(1).ExpandedImage = "Abierto" TreeV1.Nodes(2).ExpandedImage = "Abierto" TreeV1.Nodes(3).ExpandedImage = "Abierto" TreeV1.Nodes(4).ExpandedImage = "Abierto" TreeV1.Nodes(5).ExpandedImage
=
TreeV1.Nodes(6).ExpandedImage
=
"Abierto" "Abierto" ‘Y ahora otra propiedad no explicada. Con esto hacemos que se vean todos los nodos. MiNodo.EnsureVisible El resultado de este código es la Fig. 16.9. Y la Fig. 16.10 es lo que pasa cuando se selecciona
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 7
el nodo cuyo texto es Terciario C41. Observe en el código que al introducir este nodo habíamos puesto un parámetro más, precisamente, el de la imagen que tendrá cuando esté seleccionado.
Fig. 16.10
Propiedades de la colección Nodes del TreeView Propiedad ExpandedImage Establece la imagen del nodo cuando está expandido, es decir, cuando se ven los nodos que dependen de él. Es la propiedad Index o Key que tiene esa imagen en el control ImageList asociado al TreeView. Sintaxis
NombredelTreeView.Nodes(Index).ExpandedImage = Valor
Donde Valor puede ser, o bien el Index o el Key de la imagen en el ImageList asociado al TreeView. Propiedad Expanded Devuelve o establece un valor que determina si un objeto Node de un control TreeView se encuentra expandido o contraído. Es una propiedad Booleana Sintaxis
NombredelTreeView.Nodes(Index).Expanded = True/False
Esta propiedad puede usarse para expandir por programa un objeto Node. Si un objeto Node no tiene nodos secundarios, el valor de esta propiedad se pasa por alto.
Propiedad Children Devuelve el número de objetos Node secundarios contenidos en un objeto Node. Esta propiedad es solamente de lectura. Sintaxis
VariableNumerica = NombredelTreeView.Nodes(Index).Children
Propiedad FullPath Devuelve la ruta completa de un objeto Node. El valor devuelto es una cadena de caracteres que es el resultado de concatenar el texto de la propiedad Text del objeto Node referenciado con los valores de las propiedades Text de todos sus predecesores. El valor de la propiedad PathSeparator del TreeView determina el delimitador utilizado para separar el Text de uno y otro nodo. Sintaxis
NombredelTreeView.Nodes(Index).FullPath
Esta propiedad puede usarse en el procedimiento NodeClick del TreeView, que ya pasa como parámetro el nodo sobre el que hemos hecho click: Private Sub TreeV1_NodeClick(ByVal Node As MSComctlLib.Node) VariableTipoString = Node.FullPath End Sub
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 8
Propiedad Count Devuelve el número de elementos de la colección Nodes Sintaxis
VariableNumerica = NombredelTreeView.Nodes.Count
Propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root Estas propiedades devuelven una referencia a otro objeto Node. Con esa referencia que nos devuelve, podremos conocer los valores de las propiedades del nodo cuya referencia nos devuelve (Text, Key, FullPath, etc) Sintaxis
NombredelTreeView.Nodes(Index).Xxxx
Donde Xxxx es la propiedad deseada de las mencionadas. Dependiendo de la propiedad, nos devuelve la referencia de: Child FirstSibling LastSibling Previous Next Parent Root
Primer elemento secundario Primer nodo del mismo nivel Ultimo nodo del mismo nivel Nodo anterior del mismo nivel Siguiente nodo del mismo nivel Nodo primario (Nodo del que depende) Nodo Raiz
Propiedad Key Esta propiedad establece o devuelve una cadena de caracteres que identifica unívocamente a un nodo. Esta propiedad se le asigna normalmente durante la creación de ese nodo mediante el método Add, pero puede cambiarse posteriormente por programa. La propiedad Key puede usarse para nombrar al nodo, al tratarse de una cadena única. No puede haber dos nodos con el mismo Key. Si la cadena no es única, se produce un error. Sintaxis
NombredelTreeView.Nodes(Index).Key = cadena
Es muy prudente usar la propiedad Key para "autodocumentar" su proyecto de Visual Basic si asigna nombres significativos a los objetos de una colección. Propiedad Sorted Esta propiedad la tiene tanto el control TreeView como la colección Nodes. Si esta propiedad está a True en el TreeView, se ordenan alfabéticamente los elementos de nivel superior de la colección Nodes. Cada elemento de la colección Nodes puede tener su propiedad Sorted a True. En este caso, los nodos que dependen de ese nodo estarán ordenados por orden alfabético. Puede tener nodos con la propiedad Sorted = True, y otros con esa propiedad = False. Propiedad Image Establece la imagen que presenta un nodo. El valor de esta propiedad es, o bien el Index de la imagen dentro del ImageList asociado al TreeView, o su propiedad Key. Sintaxis
LSB
NombredelTreeView.Nodes(Index).Image= Valor
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 9
Propiedad SelectedImage Es lo mismo que la propiedad anterior, pero en este caso se establece la imagen que presenta el nodo cuando está seleccionado. Recuerde que estas propiedades son de la colección Nodes del TreeView. Veremos ahora las propiedades del TreeView.
Propiedades del Control TreeView Ya se han visto algunas más atrás. Se comentan solamente aquellas propiedades que no son comunes al resto de los controles. Propiedad Checkboxes Establece si se muestran las casillas de verificación. (True/False) Sintaxis
NombredelTreeView.Checkboxes = True/False
Estas casillas de verificación no se suelen usar en el TreeView porque no son precisamente bonitas. Si esta propiedad está a True, es preciso usar una propiedad de la colección Nodes, la propiedad Checked, que es también booleana. Si ese nodo tiene esa propiedad a True, su casilla de verificación aparece marcada. Propiedad FullRowSelect Establece si al seleccionar un nodo se marca solamente el texto del nodo (False) o si se marca toda la horizontal del mismo (True). Propiedad HideSelection Establece si el texto seleccionado aparece resaltado cuando un control pierde el enfoque. Propiedad HotTracking Determina si está activado el resalte sensible al puntero del ratón. Una línea por debajo del texto cuando pasamos el ratón por encima. Propiedad ImageList Establece el control ImageList que está asociado al TreeView. El ImageList debe estar en el mismo formulario que el TreeView al que se asocia, pero un mismo ImageList puede estar asociado a más de un TreeView u otros controles. El TreeView necesita un ImageList para tomar de él las imágenes que va a colocar en los nodos. Esta propiedad se puede cambiar en tiempo de ejecución, y es este precisamente, el truco que nos permite cambiar en el TreeView el tamaño de los iconos. En la Fig. 16.9 (Página 5) puede ver el mismo TreeView con dos tipos de iconos. El TreeView no nos permite cambiar de tipo de iconos, (tal como lo hace el ListView) por lo tanto hay que inventar algo que permita cambiarlos y así obtener la misma estética que en el ListView. Esto se logra colocando dos ImageList en el formulario con las mismas imágenes e idénticos Key para ellas. En uno de ellos se pone la resolución de las imágenes a 32 x 32 y en el otro a 16 x 16 (Vea Fig. 16.7 Página 3) Cuando quiera usar iconos pequeños, se asocia al TreeView el ImageList con la resolución de 16 x 16, mediante la sintaxis: NombredelTreeView = ImageList1
ó
Set NombredelTreeView = ImageList1
Y a continuación se añaden los nodos mediante el método Add. Si quiere cambiar los iconos durante la ejecución del programa (es muy típico colocar en una línea del menú el tipo de iconos a presentar) observará que al cambiar el ImageList desaparecen los iconos. No hay otro remedio más que volver a cargarlos, usando los métodos de la colección Nodes Clear (para vaciarla) y Add. Este es el código que he usado en el ejemplo que ilustra este capítulo: Set TreeV1.ImageList = ImageList2
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 10
TreeV1.Nodes.Clear cmdIntroducirNodos_Click
‘(cmdIntroducirNodos es un botón con el código para añadir los ‘nodos)
Propiedad Indentation Establece el ancho de la sangría de los nodos. Afecta a todos los niveles de nodos. Puede cambiarse en tiempo de ejecución. Propiedad LabelEdit Devuelve o establece un valor que determina si el usuario puede modificar la propiedad Text de los objetos Node de un control TreeView. Sintaxis
NombredelTreeView.LabelEdit = entero
Donde entero puede ser: Constante tvwAutomatic
Valor 0
TvwManual
1
Descripción Predeterminado) Automático. Se genera el evento BeforeLabelEdit cuando el usuario hace clic en la etiqueta de un nodo seleccionado. Manual. El evento BeforeLabelEdit sólo se genera al invocar el método StartLabelEdit.
La edición de la etiqueta de un objeto se inicia al hacer clic en un objeto seleccionado (si la propiedad LabelEdit está establecida a Automatic). Es decir, el primer clic en un objeto lo selecciona y un segundo clic (simple) inicia la operación de edición de la etiqueta. La propiedad LabelEdit, junto con el método StartLabelEdit, permite determinar por programa qué etiquetas se pueden modificar y cuándo hacerlo. Cuando LabelEdit tiene el valor 1, no puede modificarse ninguna etiqueta, a menos que se invoque el método StartLabelEdit.
Propiedad LineStyle Establece el estilo de las líneas que aparecen entre los objetos Node. Sintaxis
NombredelTreeView.LineStyle = número
Acepta los valores 0 (tvwTreeLines) con lo que presentará solamente las líneas entre los nodos de un mismo nivel y su nodo primario, y 1 (tvwRootLines) que presenta, además de las anteriores, líneas entre los nodos raiz. Propiedad Nodes Devuelve una referencia a la colección de objetos Node de un control TreeView Parent (Propiedad) Devuelve una referencia al formulario que contiene un control u otro objeto o colección. Propiedad PathSeparator Establece el carácter delimitador utilizado en la ruta devuelta por la propiedad FullPath. El carácter predeterminado es "\". Scroll (Propiedad) Devuelve o establece un valor que especifica si se muestran barras de desplazamiento. SelectedItem (Propiedad, controles ActiveX) Devuelve la referencia al objeto Node seleccionado.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 11
Propiedad SingleSel Establece si un nodo debe expandirse cuando se selecciona. Un nodo, con otros nodos dependiendo de él, se expande al hacer doble clic sobre él, o al hacer clic sobre el + asociado a ese nodo. Se contrae volviendo a realizar la misma operación. Si esta propiedad está a True, se expande o contrae cuando se hace clic sobre él. Propiedad Sorted Ya explicada para la colección Nodes.
Métodos del TreeView. Método GetVisibleCount Devuelve el número de objetos Node que caben en el área interna de un control TreeView. El número de objetos Node viene determinado por la cantidad de líneas que caben en una ventana. El número total de líneas posibles lo determina el alto del control y la propiedad Size del objeto Font. En este número se cuenta el elemento situado al final de la lista y que sólo es visible parcialmente. Puede usar la propiedad GetVisibleCount para asegurarse de que es visible un número mínimo de líneas que permita al usuario hacerse una idea de la jerarquía. Si no es visible este mínimo, puede restablecer el tamaño del control TreeView mediante la propiedad Height. Si un determinado objeto Node debe ser visible, utilice el método EnsureVisible para desplazar y expandir el control TreeView. Método HitTest Devuelve la referencia del objeto Node situado en las coordenadas x e y. Se utiliza sobre todo en las operaciones de arrastrar y colocar para determinar si hay disponible en la ubicación actual un elemento de destino de colocación. Si no hay ningún objeto en las coordenadas especificadas, el método HitTest devuelve Nothing. El método HitTest se utiliza casi siempre junto con la propiedad DropHighlight para resaltar un objeto cuando se arrastra el mouse sobre él durante una operación de Drag & Drop. La propiedad DropHighlight requiere una referencia a un objeto específico para resaltarlo. Para determinar el objeto, se usa el método HitTest junto con un evento que devuelva las coordenadas x e y, como DragOver, con el siguiente código: Private Sub TreeV1_DragOver(Source As Control, x As Single, y As Single, State As Integer) Set TreeV1.DropHighlight = TreeV1.HitTest(x, y) End Sub Método StartLabelEdit Inicia el proceso de modificación de la propiedad Text de un nodo, cuando la propiedad LabelEdit está puesta a 1 (Manual). Sintaxis
NombredelTreeView.StartLabelEdit
Cuando la propiedad LabelEdit está a 0 (Automático) la edición del texto comienza automáticamente cuando se hace clic sobre un nodo ya seleccionado. Si esta propiedad está en manual es cuando debemos forzar el inicio de la edición Cuando se invoca el método StartLabelEdit para un objeto, también se genera el evento BeforeLabelEdit.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 12
Eventos del TreeView Se mencionan solamente aquellos que no son comunes a otros controles ya estudiados. Evento BeforeLabelEdit Se produce cuando el usuario intenta modificar la etiqueta (Propiedad Text) de un Node. Sintaxis Integer)
Private
Sub
NombredelTreeView
_BeforeLabelEdit(cancelar
As
Donde Cancelar es un entero que si no es 0, cancela la operación de edición. El evento BeforeLabelEdit se produce después del evento Click estándar. Los eventos AfterLabelEdit y BeforeLabelEdit sólo se generan si el valor de la propiedad LabelEdit es 0 (Automática) o si se invoca el método StartLabelEdit. Para comenzar a modificar una etiqueta, el usuario debe hacer clic primero en el objeto para seleccionarlo y hacer clic una segunda vez para iniciar la operación. El evento BeforeLabelEdit se produce después del segundo clic. Para determinar a qué objeto pertenece la etiqueta que se va a modificar, utilice la propiedad SelectedItem. En el ejemplo siguiente se comprueba el índice de un objeto Node antes de permitir su edición. Si el índice es 1, se cancela la operación. Private Sub TreeView1_BeforeLabelEdit(Cancel As Integer) If TreeView1.SelectedItem.Index = 1 Then Cancel = True ' Se cancela la operación End If End Sub
Evento AfterLabelEdit Se produce cuando se termina de modificar la etiqueta (Propiedad Text) de un Node Sintaxis Private Sub NombredelTreeView_AfterLabelEdit(cancelar As Integer, nuevaCadena As String) Donde cancelar es un entero que, si no es 0, se cancela la operación de edición, y NuevaCadena es la cadena de caracteres que el usuario ha escrito en esa etiqueta, o Null si se ha cancelado la operación de edición. El evento AfterLabelEdit se genera después de que el usuario termina la operación de edición, lo que ocurre cuando hace clic en otro objeto Node o cuando presiona la tecla ENTRAR. Para cancelar una operación de edición de etiqueta, establezca True o cualquier valor distinto de cero en cancelar. Al cancelar la operación, se restaurará la etiqueta existente anteriormente. El argumento nuevaCadena puede usarse para comprobar una condición antes de cancelar una operación. Por ejemplo, el código siguiente cancela la operación si nuevaCadena es un número: Private Sub TreeView1_AfterLabelEdit(Cancel As Integer, NewString As String) If IsNumeric(NewString) Then MsgBox "No se permiten números" Cancel = True End If End Sub Los eventos AfterLabelEdit y BeforeLabelEdit sólo se generan si el valor de la propiedad LabelEdit es 0 (Automática) o si se invoca el método StartLabelEdit.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 13
Evento Collapse Se genera al contraer cualquier objeto Node de un control TreeView, es decir, cuando sus nodos secundarios se ocultan. Sintaxis
Private Sub NombredelTreeView _Collapse(ByVal nodo As Node)
El evento Collapse se produce antes del evento Click estándar. Existen tres formas de contraer un objeto Node: establecer a False su propiedad Expanded, hacer doble clic en un objeto Node y hacer clic en una imagen más/menos cuando la propiedad Style del control TreeView se ha establecido a un estilo que incluye estas imágenes. Todos estos métodos generan el evento Collapse. Evento Expand Se produce al expandir un objeto Node de un control TreeView, es decir, cuando sus nodos secundarios se hacen visibles. Sintaxis
Private Sub NombredelTreeView _Expand(ByVal nodo As Node)
El evento Expand se produce después de los eventos Click y DblClick. El evento Expand se puede generar de tres formas: cuando el usuario hace doble clic en un objeto Node que tiene nodos secundarios, cuando se establece a True la propiedad Expanded de un objeto Node y cuando se hace clic en la imagen más/menos. Evento NodeClick Se produce al hacer clic en un objeto Node. Sintaxis
Private Sub NombredelTreeView _NodeClick(ByVal nodo As Node)
Cuando el usuario hace clic en cualquier punto de un control TreeView, fuera de un objeto nodo, se genera el evento Click estándar. El evento NodeClick se genera cuando el usuario hace clic en un objeto Node determinado y devuelve una referencia al objeto Node que puede usarse para validarlo antes de realizar alguna otra acción. El evento NodeClick se produce antes del evento Click estándar. Evento Validate Ocurre cuando el foco cambia a otro control que tiene su propiedad CausesValidation establecida a True. (Este evento es común a todos los controles ActiveX) Sintaxis Boolean)
Private
Sub
NombredelTreeView
_Validate(mantenerFoco
As
Donde mantenerFoco es un Booleano que si es True, fuerza al TreeView a recuperar el foco. Se emplea para evitar que un control pierda el foco hasta que se cumplan ciertas condiciones.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 14
El control ListView Este control es el complemento ideal para el TreeView. En el TreeView se presentaban datos de forma jerárquica. Es el control ideal para presentar, por ejemplo, los departamentos de una empresa u organismo. Pero el TreeView solamente presenta un pequeño texto, acompañado generalmente de un icono. Si seguimos hacia abajo por la estructura jerárquica del TreeView que muestra los departamentos de un organismo, llegaremos al final a las personas. Y aquí ya será necesario introducir más datos. Supongamos que estamos haciendo una lista de todas las personas, y que la información de éstas será su nombre, puesto de trabajo, despacho que ocupa, teléfono, etc. El TreeView no es control aconsejado para mostrar esa cantidad de datos. Estaría muy bien poder mostrar todos los datos de esa persona en un control que también permita gráficos y textos, de forma que el domicilio figure al lado de un icono con una casa, el teléfono al lado de un icono con un teléfono, etc. Esto lo vamos a lograr mediante el TreeView. El ListView puede presentar los datos de cuatro formas distintas: - Iconos. el - SmallIcons - Lista de - Report
Cada información se presenta con un icono y un texto. La posición de los iconos puede cambiarse por el usuario. El texto puede editarse. Al hacer clic sobre uno de los iconos, se produce el evento ItemClick en que podemos desencadenar otras operaciones tomando como dato el icono sobre el que se ha hecho clic (presentar más datos, por ejemplo) (Iconos pequeños). Igual que el anterior, pero puede presentar más iconos. Presenta la información en líneas, acompañada de un icono. El texto cada línea puede editarse, pero no puede cambiarse el orden de las líneas. (Informe) La información se divide en varios campos (SubItems) y se presenta en columnas encabezadas por un texto indicativo.
Fig. 16.11 Las 4 formas de presentación del ListView: Iconos grandes, pequeños, Lista y Report
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 15
Propiedades del ListView Propiedades Icons y SmallIcons El ListView necesita DOS ImageList para almacenar los iconos. Uno para los iconos grandes y otro para los iconos pequeños. Las imágenes en cada uno de ellos pueden (deben) ser las mismas, con el mismo truco explicado para el TreeView: el de los iconos grandes con una resolución de 32 x 32 y el de los iconos pequeños con una resolución de 16 x 16. Esta propiedad puede establecerse en tiempo de diseño, mediante el cuadro de propiedades personalizado, o en tiempo de ejecución mediante las propiedades Icons y SmallIcons Fig. 16.12 Página de propiedades del ListView mostrando los ImageList ListView1.Icons = IMList1 ListView1.SmallIcons = IMList2 Las propiedades Icons y SmallIcons deben estar puestas antes de añadir elementos a la colección ListItems del ListView. Si no es así, dará un error que dice que es necesario inicializarlas. Propiedad ListItems (Colección ListItems) Esta propiedad es la equivalente a la propiedad Nodes del TreeView. Pero en este caso, un elemento de esta colección no solamente contiene un dato, sino que además puede tener dentro de sí otra colección de datos. Por ejemplo, pensando en una agenda, un elemento de la colección puede tener como propiedad Text el alias de una persona, y como subitems de ese elemento, el nombre y apellidos de la persona a la que se refiere el alias, su teléfono y su domicilio. Un elemento de la colección ListItems puede tener tantos subitems como queramos. Los elementos de la colección ListItems se añaden mediante el método Add, con la siguiente sintaxis NombreDelListView.ListItems.Add(índice, clave, texto, icono, iconoPequeño) Donde NombreDelListView es el nombre del ListView al que pertenece la colección ListItems Indice es el índice de ese elemento. Comienzan por 1. No es obligatorio poner este parámetro, y en ese caso, pone el número siguiente al mayor Index que tenga. Clave Es una cadena de caracteres por la que se puede nombrar a ese elemento. Esta cadena es única para cada elemento de la colección. Puede contener números, pero el primer carácter debe ser una letra Texto Es el texto que se va a ver en el ListView, bien solo, bien acompañado de un icono Icono Es una cadena de caracteres con la propiedad Key, dentro del ImageList destinado a los iconos grandes, del icono que queremos poner en ese elemento, cuando el ListView está en modo de presentación Iconos grandes. También podemos poner aquí el número del índice de ese icono dentro del mismo ImageList. IconoPequeño Idéntica a la anterior, pero referida al icono mostrado cuando el ListView está en modo de presentación de iconos pequeños.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 16
Propiedades de la colección ListItems La colección ListItems también tiene sus propiedades. Se enumeran a continuación las más importantes. Propiedad ListSubItems (Propiedad de la colección ListItems) Una colección ListSubItems pertenece a cada uno de los elementos de la colección ListItems. Cada ListItem puede tener varios ListSubItems, que son los elementos de información relativos al ListItem del que dependen. Los ListSubItems se añaden a la colección mediante el método Add, con la suguiente sintaxis: ListView1.ListItems(1).ListSubItems.Add (Index, Key, Texto, ReportIcon, TextToolTip Donde ListView1 ListItems(1) Index Key Texto ReportIcon TextToolTip
Es el nombre del control ListView Significa que ese ListSubItem se agrega al ListItem con Index = 1 Es el índice dentro de la colección ListSubItems Es una cadena de caracteres que define a este ListSubIndex. Esta cadena de caracteres debe ser única para cada elemento. Es la información que contienen ese ListSubItem Es el Key del icono (dentro del ImageList que contienen los SmallIcons) que aparecerá al lado del texto cuando el ListView está con la forma de presentación Report (Informe). Es la información que presentará en una etiqueta cuando acerquemos el puntero del ratón sobre la zona donde está el texto.
Propiedad Ghosted (Propiedad) Devuelve o establece un valor Booleano que determina si el icono de un objeto ListItem de un control ListView aparece atenuado. Esta propiedad no afecta al funcionamiento normal de ese ListItem, solamente es un efecto gráfico. Sintaxis
ListView.ListItems(5).Ghosted = True
Propiedad Selected Devuelve un valor que determina si un elemento ListItem está seleccionado. Es una propiedad solamente de lectura, por lo que no puede usarse para seleccionar un elemento. Métodos de la colección ListItems Add Agrega nuevos elemento a la colección ListItems. Sintaxis
NombreDelListView.ListItems.Add(índice, clave, texto, icono, iconoPequeño)
Clear Quita todos los objetos que hay en una colección. Sintaxis
ListView1.ListItems.Clear
Remove Quita un miembro específico de una colección. Sintaxis
NombredelListView.ListItems.Remove Indice
Indice puede ser un número con la propiedad Index del elemento a quitar, o una cadena de caracteres con su propiedad Key
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 17
CreateDragImage Crea una imagen de arrastre con una versión difuminada de la imagen asociada a un elemento de la colección ListImages. Normalmente, esta imagen se utiliza como DragIcon en las operaciones de arrastrar y colocar. Sintaxis
ListView1.DragIcon = ListView.SelectedItem.CreateDragImage
EnsureVisible Asegura que el objeto ListItem especificado sea visible.
Propiedades del control ListView (Continuación) Propiedad Arrange Establece cómo se organizan los iconos en la vista Iconos o Iconos pequeños de un control ListView. Sintaxis
NombredelListView.Arrange = valor
Valor puede tomar uno de los siguientes valores o constantes Constante LvwNone
Valor 0
LvwAutoLeft largo LvwAutoTop
1 2
Efecto Ninguna. Los iconos pueden colocarse arrastrándolos con el ratón en cualquier parte del ListView. Izquierda. Los elementos se alinean automáticamente a lo de la parte izquierda del control. Superior. Los elementos se alinean automáticamente a lo largo de la parte superior del control.
Propiedad Checkboxes Establece si se muestran las casillas de verificación. Sintaxis
NombredelListView.Checkboxes = True / False
Propiedad ColumnHeaderIcons Es similar a la propiedad Icons o SmallIcons, pero ésta se refiere al ImageList que contiene los iconos que se van a poner en las cabeceras de las columnas (cuando está en vista Report) Sintaxis
NombredelListView.ColumnHeaderIcons = NombredelImageList
Puede ponerse también en tiempo de diseño (Fig. 16.12) en la casilla Encabezado de Columnas Propiedad ColumnHeaders (Colección CulumnHeader del control ListView) La colección ColumnHeaders representa las columnas que tiene el ListView en el modo de presentación Informe El número de columnas del ListView debe ser igual al número de ListSubItems de cada elemento ListItems. De esta forma, cada ListSubItem se presentará en una columna. Para añadir columnas al ListView se usa el método Add aplicado a la colección ColumnHeaders Sintaxis ListView1.ColumnHeaders.Add Index, Key, TextoCabecera, Ancho, Alineamiento, Icono Index
LSB
Indice de esa columna
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 18
Key Cadena de caracteres única que identifica esa columna TextoCabecera Texto que figurará en la cabecera de la columna Ancho Ancho de la columna en unidades del Formulario que contiene al ListView Alineamiento 0 = izquierda, 1 = Derecha, 2 = Centrado Icono Key del icono a introducir en la cabecera de la columna La colección ColumnHeaders tienen también sus propiedades y métodos. Vamos a citar las más destacables: Propiedades de la colección ColumnHeaders Propiedad Alignment Establece la alineación del texto en la cabecera de un ColumnHeader. Acepta 3 valores: 0 = izquierda, 1 = Derecha, 2 = Centrado Sintaxis
ListView1.ColumnHeaders(Indice). Alignment = Valor
Propiedad Position Devuelve o establece la posición de una columna. Sintaxis
ListView1.ColumnHeaders(Index) = entero
Donde entero es un número entre 1 y n (n = número de columnas) que especifica la posición de esa columna. Index es, o bien el índice, o el Key de la columna. Utilice esta propiedad para reorganizar el orden de las columnas.
El control ImageCombo Este control es un combo en el que se pueden introducir elementos. Estos elementos forman la colección ComboItems. Cada elemento ComboItem puede tener un texto y una imagen. Este combo presenta una enorme ventaja sobre el combo normal visto en capítulos anteriores: cada elemento tiene una propiedad Index o Key que le distingue de los demás elementos, y se puede utilizar una de esas dos propiedades para actuar sobre el programa, dependiendo del ComboItem seleccionado. Tienen la misma apariencia que un combo normal.
Fig. 16.13 ImageCombo Los elementos ComboItem se añaden con el método Add, que hemos visto en los controles TreeView y ListView, con una sintaxis idéntica. No va a ser difícil para el alumno trabajar con este control, una vez conocida la forma de trabajar con los dos controles citados anteriormente.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 19
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 20
Mas controles avanzados: El grupo de controles de Microsoft Windows Common Controls-2 6.0 (SP3) Estos son los controles integrados en el paquete Mscomct2.Ocx. Son cinco controles: -
MonthView Animation DTPicker UpDown FlatScrollBar
Control MonthView El control MonthView permite crear aplicaciones donde los usuarios pueden elegir una fecha mediante una interfaz parecida a un calendario. Fig. 16.14 Control MonthView Este control permite seleccionar de una forma muy sencilla una fecha o un intervalo de fechas. Puede tener el aspecto mostrado en la Fig. 16.14 o mostrar varios meses a la vez. Esto puede lograrse mediante las propiedades MonthColumns y MonthRows. Las fechas mínimas y máximas a presentar se pueden establecer con las propiedades MinDate y MaxDate. Este control está enlazado a datos. De esta forma puede presentar un dato fecha hora existente en una base de datos. Para permitir a los usuarios del programa seleccionar un intervalo continuo de fechas, asigne a la propiedad MultiSelect el valor True y especifique con MaxSelProperty el número de días que podrán seleccionar. Las propiedades SelStart y SelEnd devuelven las flechas del principio y el final de una selección. Existen muchas formas de personalizar la apariencia de un control MonthView. Existen varios atributos de colores, como MonthBackColor, TitleBackColor, TitleForeColor y TrailingForeColor, que le permiten crear combinaciones de colores exclusivas para el control. Establezca las propiedades MonthRows y MonthColumns para mostrar más de un mes a la vez (hasta 12 meses) en un control MonthView. El número total de propiedades MonthRows y MonthColumns debe ser inferior o igual a 12. Es un control enlazado a datos, por lo que puede presentar o introducir una fecha de una base de datos a través de este control, previamente enlazado a la base de datos mediante un control Data.
Propiedades del control MonthView Propiedad Day Devuelve o establece un valor numérico que especifica el número del día actual. Sintaxis ó
NombredelMonthView.Day = número Variable = NombredelMonthView.Day
La propiedad Day puede tomar cualquier valor entero entre 1 y 31. Propiedad DayBold Devuelve o establece un valor Booleano que determina si la fecha indicada se muestra en negrita Sintaxis
LSB
NombredelMonthView.DayBold(fecha) = True/False
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 21
La propiedad DayBold es una matriz que corresponde a la propiedad VisibleDays. Cada elemento booleano indica si la fecha correspondiente debe mostrarse o no en negrita. Son válidas únicamente las fechas mostradas actualmente. Las fechas válidas pueden buscarse en la propiedad VisibleDays. A medida que pasa de un mes a otro, no se conserva la información de la propiedad. Propiedad DayOfWeek Devuelve o establece un valor que especifica el día de la semana actual. Sintaxis
objeto.DayOfWeek = número
Los valores admitidos para número son: Constante Valor mvwSunday 1 mvwMonday 2 mvwTuesday 3 mvwWednesday 4 mvwThursday 5 mvwFriday 6 mvwSaturday 7
Descripción (Predeterminado) Domingo Lunes Martes Miércoles Jueves Viernes Sábado
La propiedad DayOfWeek puede tomar cualquier valor entero entre 1 y 7. Propiedaddes MaxDate, MinDate Devuelve o establece la primera y la última fecha permitida por el calendario. Sintaxis objeto.MaxDate = fecha objeto.MinDate = fecha La propiedades MaxDate calendario.
y MinDate sirven para definir los límites superior e inferior del
Propiedad MaxSelCount Devuelve o establece el número máximo de días consecutivos que se pueden seleccionar de una vez. Sintaxis
objeto.MaxSelCount = número
Obviamente esta propiedad solamente tiene sentido cuando la propiedad MultiSelect tiene el valor True. Además, el valor asignado a la propiedad MaxSelCount debe ser superior a la diferencia entre las propiedades SelStart y SelEnd. Por ejemplo, si selecciona el periodo del 15/9 al 18/9, MonthView.SelEnd - MonthView.SelStart = 3. Sin embargo, son cuatro los días seleccionados realmente, por lo que MaxSelCount debe tener asignado el valor 4. El valor predeterminado de la propiedad es una semana (7 días). Propiedad Month Devuelve o establece un valor que especifica el mes actual. Sintaxis
objeto.Month = número
Valores admitidos. La propiedad Month puede tomar cualquier siguiente: Los valores admitidos para número son: Constante Valor mvwJanuary 1 mvwFebruary 2
LSB
valor o constante de las expresadas en la tabla Descripción Enero Febrero
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 22
mvwMarch mvwApril mvwMay mvwJune mvwJuly mvwAugust mvwSeptember mvwOctober mvwNovember mvwDecember
3 4 5 6 7 8 9 10 11 12
Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre
Propiedad MonthBackColor Devuelve o establece un valor que especifica el color de fondo mostrado para un mes. Sintaxis
objeto.MonthBackColor = color
Color es una variable numérica Long comprendida entre el entre 0 y 16.777.215, o la expresión del color mediante el esquema de color RGB. Propiedades MonthColumns, MonthRows Devuelve o establece un valor que especifica el número de meses que se muestran en sentido horizontal o vertical. Sintaxis
objeto.MonthColumns = número objeto.MonthRows = número
El control puede mostrar hasta doce meses. Proiedad MultiSelect Devuelve o establece un valor que determina si es posible realizar una selección múltiple de fechas. Sintaxis
objeto.MultiSelect = booleano
Los valores admitidos para booleano son: True: Permite seleccionar múltiples días (Predeterminado) False: permite seleccionar solamente un día
Propiedad Parent Devuelve el formulario, objeto o colección que contiene un control u otro objeto o colección. Sintaxis
objeto.Parent
Utilice la propiedad Parent para tener acceso a las propiedades, los métodos o los controles del primario de un objeto. Por ejemplo: MiBotón.Parent.MousePointer = 4 Propiedad ScrollRate Devuelve o establece un valor que especifica el número de meses que se desplazará cuando el usuario haga clic en uno de los botones de desplazamiento. La propiedad ScrollRate permite al usuario realizar desplazamientos de más de un mes cada vez.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 23
Propiedad ShowToday Devuelve o establece un valor Booleano que determina si se muestra la fecha actual en la parte inferior del control. Propiedades SelEnd, SelStart Devuelve o establece los límites inferior y superior del intervalo de fechas seleccionado. Sintaxis
objeto.SelEnd = fecha objeto.SelStart = fecha
Las propiedades SelStart y SelEnd definen el límite inferior y superior del intervalo de fechas seleccionado. El intervalo de fechas seleccionado puede abarcar varios meses. Es posible incluir fechas que no están visibles actualmente. Para que la selección múltiple de fechas funcione correctamente, asigne a la propiedad MaxSelCount un valor superior a la diferencia de los valores de las propiedades SelStart y SelEnd. Los valores SelStart y SelEnd sólo son válidos cuando la propiedad MultiSelect tiene el valor True. Propiedad ShowWeekNumbers Devuelve o establece un valor que determina si los números de semana aparecen junto a la semana. Sintaxis
objeto.ShowWeekNumbers = booleano
Propiedad StartOfWeek Devuelve o establece un valor que especifica el primer día de la semana. Sintaxis
objeto.StartOfWeek = entero
Los valores admitidos para entero son iguales que para la propiedad DayOfWeek
Propiedades TitleBackColor, TitleForeColor Devuelven o establecen valores que especifican los colores de fondo y primer plano del área de título del control. Sintaxis
objeto.TitleBackColor = color objeto.TitleForeColor = color
Utilice las propiedades TitleBackColor y TitleForeColor con las MonthBackColor y TrailingForeColor para personalizar los colores del control.
propiedades
Propiedad TrailingForeColor Devuelve o establece un valor que especifica el color de primer plano de las fechas restantes visibles actualmente. Sintaxis
objeto.TrailingForeColor = color
Propiedad Value Devuelve o establece la fecha que se muestra actualmente. El valor devuelto es de tipo Date Sintaxis
LSB
objeto.Value = fecha VariableTipoDate = Objeto.Value
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 24
La propiedad Value es la propiedad por defecto. Propiedad Week Devuelve o establece un valor que especifica el número de la semana actual. VariableNumerica = NombredelControl.Week NombredelControl.Week = VariableNumerica La propiedad Week puede tomar cualquier valor entero entre 1 y 52. Propiedad Year Devuelve o establece un valor que especifica un año de calendario. VariableNumerica = NombredelControl.Year NombredelControl.Year = VariableNumerica Es posible asignar a la propiedad Year cualquier entero comprendido entre 1601 y 9999. DataBindings, DataChanged, DataField, DataFormat, DataMember, DataSource,
Métodos del control MonthView Método ComputeControlSize Devuelve el ancho y el alto de un control MonthView para un número determinado de filas y columnas. Sintaxis objeto.ComputeControlSize(Rows, Columns, Width, Height) Este método se utiliza antes de cambiar el tamaño del control MonthView restableciendo sus propiedades MonthColumns o MonthRows, para ajustar el tamaño del formulario si fuese necesario. Para usar el método ComputeControlSize, declare primero dos variable con tipo Single. A continuación, llame al método pasando como argumentos las variables Width y Height. Una vez ejecutado el método podrá obtener el ancho y el alto del control leyendo estas variables. Método HitTest Devuelve la fecha ubicada en conjunto de coordenadas determinado. Se suele usar en operaciones de arrastrar y colocar para determinar si existe un elemento en la ubicación de destino de la operación. Sintaxis
objeto.HitTest(x as Single, y As Single, Date As Date)
Mediante el método HitTest puede obtener una fecha del control MonthView simplemente haciendo clik encima de ella. El método HitTest devuelve Null si no existe ninguna fecha en las coordenadas especificadas. Private Sub MonthView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim FechaElegida As Date MonthView1.HitTest X, Y, FechaElegida LabelFecha = FechaElegida End Sub
Eventos del control MonthView
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 25
DateClick (Evento) Ocurre cuando se hace clic en una fecha del control. Private Sub objeto_DateClick([Index As Integer], DateClicked As Date) Se utiliza este evento para determinar la fecha en la que se hizo clic. Private Sub MonthView1_DateClick(ByVal DateClicked As Date) LabelFecha = MonthView1.Value End Sub Ó Private Sub MonthView1_DateClick(ByVal DateClicked As Date) LabelFecha = DateClicked End Sub DateDblClick (Evento) Ocurre cuando el usuario hace doble clic en una fecha del control. Private Sub objeto_DateDblClick([Index As Integer], DateDblClicked As Date) Tiene la misma aplicación que la anterior, pero esta vez haciendo doble click
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 26
Control DTPicker1 Este control es una especie de ComboBox, pero en vez de mostrar cuando está expandido una lista, muestra el control MonthView. Funciona de forma análoga al MonthView, y cuando seleccionamos una fecha en el calendario, deposita la fecha en la casilla desplegable y se cierra. Este control nos permite ahorrar un buen espacio en el formulario sin perder prestaciones. Estas son las formas de presentarse recogido y ampliado.
Se deja al alumno el estudio exahustivo de este control, que no se separa mucho del MonthView visto anteriormente.
Control Animation Este control nos permite introducir en nuestra aplicación un elemento muy elegante: visualización de ficheros .avi Existen en Windows muchos fichero .avi aplicados para distintas funciones: copiar ficheros, bajar ficheros de Internet, y otros empleados como elemento tranquilizador en procesos lentos. Veamos un par de ejemplos:
Para probar este control basta con poner un controlen el formulario, un CommonDialog (CD1) y dos botones, uno para arrancar y otro para parar la presentación del fichero avi. El tamaño que se le de en el formulario debe ser suficientemente grande para que quepa la presentación en su tamaño real. No acepta zoom. En el procedimiento click del botón de arrancar basta con poner este código: CD1.Filter = "avi (*.avi)|*.avi" CD1.ShowOpen With Animation1 .Open CD1.FileName .Play End With Para parar la ejecución:
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 27
Animation1.Stop El control Animation tienen pocas propiedades distintas de los demás controles. Podemos citar estas: Propiedad Center Establece si el fichero .avi se presenta en el centro del control (Center = True) o si se presenta en las coordenadas 0,0 del mismo (Center = False) Propiedad AutoPlay Devuelve o establece un valor que determina si el control Animation empezará a reproducir un archivo .avi cuando éste se cargue en el control. Métodos del control Animation Play Stop
Ejecuta la animación. Detiene la animación. No se puede ejecutar este método si la propiedad AutoPlay está a True.
Control UpDown Este control sirve para introducir saltos de un paso en otros controles o en cualquier parte del código de la aplicación. Este control es tan sencillo que no se va a explicar. Solamente citar que sus dos procedimientos más importantes son el DownClick y el UpClick
Control FlatScrollBar
Es un control de scroll. Tiene como todos los controles de este tipo, una propiedad Max para darle el valor máximo, Min para ajustar el valor mínimo, SmallChange y LargeChange para fijar las variaciones al hacer click en la fkecha o en el cuerpo respectivamente, y unna propiedad Value para leer el valor actual. Solamente tienen el procedimiento Scroll que se produce al variar la posición del cursor.
Dejamos aquí el estudio de controles avanzados. No es que no haya más, sino que el curso debe tener un final. Para conocer a fondo los controles lo mejor es tomar un control de la lista que sale del menú de VB Proyecto | Componentes, y ponerse con el. No voy a decir que sea más fácil que estudiarlos con la ayuda de la Guía del Estudiante. Eso sí, le va a resultar bastante más divertido. Le recomiendo que si estudia a fondo algún control interesante para Vd. apunte todo lo que vaya aprendiendo de él. Por experiencia puedo decirle que se olvida. Créese su propia Guía del Estudiante. A final de cuentas esta comenzó así y ya va bastante adelantada.
LSB
Visual Basic Guía del Estudiante
Capitulo 16
Pág. 28