Change (Evento, controles ToolBar y Slider)

Indica que ha cambiado el contenido de un control. Cómo y cuándo se produce este evento depende del control.

Sintaxis

Private Sub objeto_Change([índice As Integer])

La sintaxis del evento Change consta de las partes siguientes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control de la lista Aplicable.
índice	Un entero que identifica de forma única a un control dentro de una matriz de controles.
Comentarios

•	Slider: se genera cuando cambia la propiedad Value, ya sea por medio del código o cuando el usuario mueve el control deslizante.

•	Toolbar: se genera después de que el usuario final personalice la barra de herramientas del control Toolbar mediante el cuadro de diálogo Personalizar barra de herramientas.

El procedimiento de evento Change puede sincronizar o coordinar la presentación de datos entre los controles. Por ejemplo, puede usar el procedimiento de evento Change del control Slider para actualizar el valor de su propiedad Value en un control TextBox. O bien podría utilizar el procedimiento de evento Change para mostrar datos y fórmulas en un área de trabajo y los resultados en otra área diferente.

Nota   Un procedimiento de evento Change puede provocar a veces eventos en cascada. Esto sucede cuando el evento Change del control altera el contenido del control al establecer una propiedad en el código que determina el valor del control, como puede ser el valor de la propiedad Text de un control TextBox. Para impedir procedimientos en cascada:

•	En la medida de lo posible, evite escribir un procedimiento de evento Change para controles que alteren el contenido de dicho control. Si escribe ese tipo de procedimiento, asegúrese de establecer un indicador que evite más cambios mientras se está produciendo el cambio actual.

•	Evite crear dos o más controles cuyos procedimientos de evento Change se afecten entre sí, por ejemplo, dos controles TextBox que se actualizan entre sí durante sus eventos Change.


Errores interceptables de los controles comunes de Windows

En las tablas siguientes se relacionan los errores interceptables y sus constantes para los controles comunes de Windows contenidos en los archivos ComCtl32.OCX y ComCt232.OCX.

Los errores siguientes corresponden a los controles comunes de Windows del archivo ComCtl32.OCX. Estos controles son TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListView, ImageList y Slider.

Constante	Valor	Descripción
ccInvalidProcedureCall	5	El argumento o la llamada a procedimiento no es válida
ccOutOfMemory	7	Sin memoria
		La operación no pudo asignar suficiente memoria.
ccTypeMismatch	13	El tipo no coincide
		Es posible que uno de los argumentos no se haya convertido al tipo de datos correcto.
ccInvalidPropertyValue	380	El valor de la propiedad no es válido
		Se ha asignado a una propiedad un valor situado fuera del intervalo admitido.
ccSetNotSupportedAtRuntime	382	Set no se admite en tiempo de ejecución
ccSetNotSupported	383	Set no se admite (propiedad de sólo lectura)
ccSetNotPermitted	387	Set no está permitido
ccGetNotSupported	394	Get no se admite (propiedad de sólo escritura)
ccInvalidClipboardFormat	460	El formato del Portapapeles no es válido
ccInvalidObjectUse	425	Uso no válido del objeto
ccDataObjectLocked	672	La lista de formatos de DataObject no se puede borrar o expandir fuera del evento OLEStartDrag
ccExpectedAnArgument	673	Se esperaba al menos un argumento.
ccRecursiveOleDrag	674	Llamada recursiva no válida de arrastrar y colocar OLE
ccIndexOutOfBounds	35600	El índice está fuera de los límites
ccElemNotFound	35601	No se encontró el elemento
ccNonUniqueKey	35602	La clave no es única en la colección
ccInvalidKey	35603	La clave no es válida
ccCol1MustBeLeftAligned	35604	Cuando la propiedad View del control ListView se establece a 3 (Informe), la columna situada más a la izquierda (la columna 1) sólo puede alinearse a la izquierda. Si se intenta establecer otro alineamiento se producirá este error.
ccElemNotPartOfCollection	35605	El control de este elemento se ha eliminado
ccCollectionChangedDuringEnum	35606	La colección del control se ha modificado
ccMissingRequiredArg	35607	Falta el argumento requerido
ccBadObjectReference	35610	El objeto no es válido
ccReadOnlyIfHasImages	35611	La propiedad es de sólo lectura si la lista de imágenes contiene imágenes
ccImageListMustBeInitialized	35613	ImageList debe inicializarse antes de poder usarla
ccWouldIntroduceCycle	35614	Esto produciría un ciclo
ccNotSameSize	35615	Todas las imágenes de la lista deben ser del mismo tamaño
ccMaxPanelsExceeded	35616	Se ha excedido el número máximo de paneles
ccImageListLocked	35617	ImageList no se puede modificar mientras tenga otro control enlazado a él
ccMaxButtonsExceeded	35619	Se ha excedido el número máximo de botones
ccCircularReference	35700	No está permitida una referencia circular entre objetos
Los errores siguientes corresponden a los controles comunes de Windows incluidos en el archivo ComCt232.OCX. Los controles contenidos en este archivo son UpDown y Animation.

Constante	Valor	Descripción
cc2InvalidProcedureCall	5	El argumento o la llamada a procedimiento no es válida
cc2BadFileNameOrNumber	52	Nombre o número de archivo incorrecto
cc2FileNotFound	53	Archivo no encontrado
cc2InvalidPropertyValue	380	El valor de la propiedad no es válido
cc2SetNotSupportedAtRuntime	382	Set no se admite en tiempo de ejecución
cc2SetNotSupported	383	Set no se admite (propiedad de sólo lectura)
cc2InvalidObjectUse	425	Uso no válido del objeto
cc2InvalidClipboardFormat	460	El formato del Portapapeles no es válido
cc2DataObjectLocked	672	La lista de formatos de DataObject no se puede borrar o expandir fuera del evento OLEStartDrag
cc2ExpectedAnArgument	673	Se esperaba al menos un argumento.
cc2InconsistentObject	35750	El estado interno del control está dañado
cc2ErrorDuringSet	35751	Imposible establecer la propiedad
cc2ErrorOpeningVideo	35752	Imposible abrir el archivo AVI
cc2ErrorPlayingVideo	35753	Imposible reproducir el archivo AVI
cc2NoValidBuddyCtl	35754	Es necesario establecer primero la propiedad BuddyControl
cc2VideoNotOpen	35755	Debe abrir primero el archivo AVI
cc2AutoBuddyNotSet	35756	AutoBuddy no está establecida; no se encontraron posibles controles relacionados
cc2ErrorStoppingVideo	35757	Error al intentar detener la reproducción del archivo AVI
cc2ErrorClosingVideo	35758	Error al cerrar el archivo AVI abierto
cc2CantStopAutoPlay	35759	El método Stop no afecta a la propiedad AutoPlay
cc2BuddyNotASibling	35760	BuddyControl debe ser un control independiente dentro del mismo contenedor
cc2NoUpDownAsBuddy	35761	Imposible relacionar un control UpDown con otro control UpDown.


Mensajes de error (Control RichTextBox)

Los errores siguientes corresponden al control RichTextBox, que se encuentra en el archivo RichTx32.OCX:

Constante	Valor	Descripción
rtfInvalidProcedureCall	5	El argumento o la llamada a procedimiento no es válida
rtfOutOfMemory	7	Sin memoria
rtfPathFileAccessError	75	Error de acceso a la ruta o al archivo
rtfInvalidFileFormat	321	Formato de archivo no válido
rtfInvalidPropertyValue	380	El valor de la propiedad no es válido
rtfInvalidPropertyArrayIndex	381	El índice de la matriz de propiedades no es válido
rtfSetNotSupported	383	Set no se admite (propiedad de sólo lectura)
rtfSetNotPermitted	387	Set no está permitido
rtfGetNotSupported	394	Get no se admite (propiedad de sólo escritura)
rtfInvalidObjectUse	425	Uso no válido del objeto
rtfDataObjectLocked	672	La lista de formatos de DataObject no se puede borrar o expandir fuera del evento OLEStartDrag
rtfExpectedAnArgument	673	Se esperaba al menos un argumento
rtfInvalidCharPosition	32000	Posición del carácter no válida
rtfInvalidHdc	32001	HDC no válido
rtfCannotLoadFile	32002	Imposible cargar el archivo especificado
rtfInvalidKeyName	32005	El nombre de la clave falta o no es válido
rtfInvalidClassName	32006	El nombre de la clase OLE falta o no es válido
rtfKeyNotFound	32007	La clave no existe
rtfOLESourceRquired	32008	Falta el documento de origen necesario o el nombre de la clase
rtfNonUniqueKey	32009	La clave no es única en la colección
rtfInvalidObject	32010	El objeto no es válido
rtfProtected	32011	Imposible realizar la operación con texto protegido
rtfOleCreate	32012	Imposible crear el objeto
rtfOleServer	32013	Imposible iniciar la aplicación servidora


ImageList (Control)

Un control ImageList contiene una colección de objetos ListImage, a cada uno de los cuales se puede hacer referencia mediante su índice o su clave. El control ImageList no está concebido para utilizarlo en solitario, sino como punto de almacenamiento central para proporcionar cómodamente imágenes a otros controles.

Sintaxis

ImageList

Comentarios

Puede usar el control ImageList con cualquier control que asigne un objeto Picture a una propiedad Picture. Por ejemplo, el código siguiente asigna el primer objeto ListImage de una colección ListImages a la propiedad Picture de un panel StatusBar que se acaba de crear:

Dim pnlX As Panel

Set pnlX = StatusBar1.Panels.Add() ' Agrega un nuevo objeto Panel.

Set pnlX.Picture = ImageList1.ListImages(1).Picture ' Establece Picture.

Nota   Debe usar la instrucción Set al asignar una imagen a un objeto Picture.

Es posible agregar imágenes de diferentes tamaños al control ImageList, pero todas se ajustan al mismo tamaño. El tamaño de los objetos de ListImage está determinado por uno de los siguientes valores:

•	El valor de las propiedades ImageWidth y ImageHeight antes de agregar alguna imagen.

•	Las dimensiones de la primera imagen agregada.

No hay ninguna limitación en cuanto al tamaño de la imagen, pero el número total de imágenes que se puede cargar está limitado por la cantidad de memoria disponible.

Durante el diseño del programa puede agregar imágenes mediante la ficha General del cuadro de diálogo Propiedades del control ImageList. En tiempo de ejecución puede agregar imágenes mediante el método Add para la colección ListImages.

Además de almacenar objetos Picture, el control ImageList puede efectuar operaciones gráficas sobre imágenes antes de asignarlas a otros controles. Por ejemplo, el método Overlay crea una imagen compuesta a partir de dos imágenes diferentes.

También puede enlazar uno o más controles ImageList con determinados controles comunes de Windows 95 para conservar los recursos del sistema. Entre estos están los controles ListView, ToolBar, TabStrip y TreeView. Para usar un control ImageList con uno de estos controles, debe asociar un ImageList determinado al control mediante una propiedad adecuada. Para el control ListView, debe establecer las propiedades Icons y SmallIcons a controles ImageList. Para los controles TreeView, TabStrip y Toolbar, debe establecer la propiedad ImageList a un control ImageList.

Para estos controles puede especificar un ImageList durante el diseño del programa mediante el cuadro de diálogo Propiedades personalizadas. En tiempo de ejecución puede especificar también un ImageList que establece la propiedad ImageList de un control TreeView, como en el ejemplo siguiente:

TreeView1.ImageList = ImageList1  ' Especifica ImageList

Una vez asociado un ImageList con un control, puede usar el valor de la propiedad Index o Key para hacer referencia a un objeto ListImage en un procedimiento. El ejemplo siguiente establece la propiedad Image del tercer objeto Node de un control TreeView al primer objeto ListImage de un control ImageList:

' Usa el valor de la propiedad Index de ImageList1.

TreeView1.Nodes(3).Image = 1

' O usa el valor de la propiedad Key.

TreeView1.Nodes(3).Image = "imagen 1"   ' Suponiendo que Key es "imagen 1".

Nota para la distribución   El control ImageList forma parte de un grupo de controles ActiveX que se encuentran en el archivo COMCTL32.OCX. Para usar el control ImageList en su aplicación debe agregar el archivo COMCTL32.OCX al proyecto. Cuando distribuya su aplicación, instale el archivo COMCTL32.OCX en el directorio System o System32 de Microsoft Windows del usuario. Para ver más información acerca de cómo agregar un control ActiveX a un proyecto, consulte el Manual del programador.


ListImage (Objeto), ListImages (Colección)

•	Un objeto ListImage es un mapa de bits de cualquier tamaño que se puede usar en otros controles.

•	Una colección ListImages es una colección de objetos ListImage.

Sintaxis

lista_imágenes.ListImages

lista_imágenes.ListImages(índice)

Estas líneas de sintaxis hacen referencia a la colección y a elementos individuales de la colección, respectivamente, según la sintaxis de colección estándar.

Las sintaxis del objeto ListImage y la colección ListImages constan de las siguientes partes:

Parte	Descripción
lista_imágenes	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
índice	Un número entero o una cadena que identifica de forma inequívoca el objeto de la colección. El número entero es el valor de la propiedad Index; la cadena es el valor de la propiedad Key.
Comentarios

La colección ListImages es una colección basada en 1.

Puede agregar y quitar un objeto ListImage durante el diseño del programa mediante la ficha Imágenes de la página de propiedades del control ImageList, o en tiempo de ejecución mediante el método Add en los objetos ListImage.

Puede tener acceso a cada elemento de la colección mediante su índice o su clave única. Por ejemplo, para hacer referencia al tercer objeto ListImage de una colección, use la sintaxis siguiente:

Dim imgX As ListImage

' Referencia por número de índice.

Set imgX = ImageList.ListImages(3)

' O referencia por clave única.

Set imgX = ImageList1.ListImages("tercero") ' Suponiendo que Key es "tercero".

' O usa el método Item.

Set imgX = ImageList1.ListImages.Item(3)

A cada objeto ListImage le corresponde una máscara que se genera automáticamente mediante la propiedad MaskColor. Esta máscara no se usa directamente, sino que se aplica al mapa de bits original en operaciones de gráficos como los métodos Overlay y Draw.


Add (Método, colección ListImages)

Agrega un objeto ListImage a una colección ListImages.

Sintaxis

objeto.Add(índice, clave, imagen)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
índice	Opcional. Un número entero que especifica la posición donde desea insertar el objeto ListImage. Si no se especifica ningún índice, el objeto ListImage se agrega al final de la colección ListImages.
clave	Opcional. Una cadena única que identifica el objeto ListImage. Use este valor para recuperar un determinado objeto ListImage. Si la clave no es única, se producirá un error.
imagen	Requerido. Especifica la imagen que se va a agregar a la colección.
Comentarios

La colección ListImages es una colección basada en 1.

Puede cargar mapas de bits o iconos en un objeto ListImage. Para cargar un mapa de bits o un icono, puede usar la función LoadPicture, de la forma siguiente:

Set imgX = ImageList1.ListImages.Add(,,LoadPicture("nombre archivo"))

También puede cargar un objeto Picture directamente en el objeto ListImage. El ejemplo siguiente carga una imagen del control PictureBox en el objeto ListImage:

Set imgX = ImageList1.ListImages.Add(,,Picture1.Picture)

Si no se ha agregado ningún objeto ListImage a la colección ListImages, puede establecer las propiedades ImageHeight e ImageWidth antes de agregar el primer objeto ListImage. El primer objeto ListImage que agrega a una colección puede tener cualquier tamaño. Sin embargo, todos los objetos ListImage subsiguientes tienen que ser del mismo tamaño que el primer objeto ListImage. Una vez que ha agregado un objeto ListImage a la colección, las propiedades ImageHeight e ImageWidth se convierten en propiedades de sólo lectura y cualquier imagen que agregue a la colección debe tener los mismos valores que la primera en ImageHeight e ImageWidth.

Debe usar la propiedad Key para hacer referencia a un objeto ListImage si espera que cambie el valor de la propiedad Index. Por ejemplo, si permite a los usuarios que agreguen a la colección sus propias imágenes, o que las eliminen, puede que se modifique el valor de la propiedad Index.

Cuando agrega un objeto ListImage a la colección, se devuelve una referencia al objeto recién creado. Puede usar esa referencia para establecer otras propiedades del objeto ListImage, de la forma siguiente:

Dim imgX As ListImage

Dim I As Integer

Set imgX = ImageList1.ListImages. _

Add(,,LoadPicture("icons\comm\net01.ico"))

imgX.Key = "conexión de red" ' Use la nueva referencia para asignar Key.


Add (Ejemplo del método) (Colección ListImages)
Ejemplo del método Add (Colección ListImages)

Este ejemplo agrega varias imágenes a una colección ListImages y usa después las imágenes en un control TreeView. Para probar el ejemplo, coloque los controles ImageList y TreeView en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo para ver TreeView poblado con imágenes de ImageList.

Private Sub Form_Load()

Dim imgX As ListImage

' Carga tres iconos en la colección del control
' ImageList.

Set imgX = ImageList1.ListImages. _

Add(,"rocket", LoadPicture("icons\industry\rocket.ico"))

Set imgX = ImageList1.ListImages. _

Add(,"plane",LoadPicture("icons\industry\plane.ico"))

Set imgX = ImageList1.ListImages. _

Add(,"car",LoadPicture("icons\industry\cars.ico"))

' Establece la propiedad ImageList del control
' TreeView.

Set TreeView1.ImageList = ImageList1

' Crea un control Treeview y usa objetos ListImage
' para sus imágenes.

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,,"Rocket")

nodX.Image = 1	' Usa la propiedad Index de la
' imagen 1.

Set nodX = TreeView1.Nodes.Add(,,,"Plane")

nodX.Image = "plane"	' Usa la propiedad Key de la
' imagen 2.

Set nodX = TreeView1.Nodes.Add(,,,"Car")

nodX.Image = "car"	' Usa la propiedad Key de la
' imagen 3.

End Sub


Draw (Método)

Dibuja una imagen en un contexto de dispositivo de destino, como puede ser un control PictureBox, después de ejecutar una operación gráfica sobre la imagen.

Sintaxis

objeto.Draw (hDC, x,y, estilo)

La sintaxis del método Draw consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
hDC	Requerido. Un valor establecido en la propiedad hDC del objeto de destino.
x,y	Opcional. Las coordenadas que se usan para especificar la ubicación dentro del contexto de dispositivo donde se va a dibujar la imagen. Si no las especifica, la imagen se dibuja en el origen del contexto de dispositivo.
Estilo	Opcional. Especifica la operación efectuada sobre la imagen, como se describe en Valores.
Valores

Los valores admitidos para estilo son:

Constante	Valor	Descripción
imlNormal	0	(Predeterminado) Normal. Dibuja la imagen sin cambios.
imlTransparent	1	Transparente. Dibuja la imagen usando la propiedad MaskColor para determinar qué color de la imagen va a ser transparente.
imlSelected	2	Seleccionado. Dibuja la imagen difuminada con el color establecido en el sistema para los elementos resaltados.
imlFocus	3	Enfoque. Dibuja la imagen difuminada y rayada con el color de resalte creando un efecto de trama rayada que indica que la imagen tiene el enfoque.
Comentarios

La propiedad hDC es un controlador (un número) usado por el sistema operativo Windows para hacer referencia interna a un objeto. Puede dibujar en el área interna de cualquier control que tenga una propiedad hDC. En Visual Basic, esos controles incluyen el objeto Form, el control PictureBox y el objeto Printer.

Como el objeto hDC puede cambiar mientras se está ejecutando una aplicación, es mejor especificar la propiedad hDC en lugar de un valor real. Por ejemplo, el código siguiente asegura que siempre se asigna el valor correcto de hDC al control ImageList:

ImageList1.ListImages(1).Draw Form1.hDC


Draw (Ejemplo del método)
Ejemplo del método Draw

Este ejemplo carga una imagen en un control ImageList. Cuando hace clic en el formulario, la imagen se dibuja en el formulario con cuatro estilos diferentes. Para probar el ejemplo, coloque un control ImageList en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el formulario.

Private Sub Form_Load()

Dim X As ListImage

'Carga una imagen en ImageList.

Set X = ImageList1.ListImages. _

Add(, , LoadPicture("bitmaps\assorted\intl_no.bmp"))

End Sub

Private Sub Form_Click()

Dim space, intW As Integer	' Crea variables de espaciado.

' Usa la propiedad ImageWidth para el espaciado.

intW = ImageList1.ImageWidth

space = Form1.Font.Size * 2 ' Usa el tamaño de fuente para el alto del espaciado.

ScaleMode = vbPoints	' Establece ScaleMode a puntos.

Cls ' Borra el formulario.

' Dibuja la imagen con estilo Normal.

ImageList1.ListImages(1).Draw Form1.hDC, , space,imlNormal

' Establece MaskColor a rojo, que aparecerá transparente.

ImageList1.MaskColor = vbRed

' Dibuja la imagen con el color rojo (MaskColor) transparente.

ImageList1.ListImages(1).Draw Form1.hDC, intW, space,imlTransparent

' Dibuja la imagen con el estilo Seleccionado.

ImageList1.ListImages(1).Draw Form1.hDC, intW * 2,space,imlSelected

' Dibuja la imagen con el estilo Enfoque.

ImageList1.ListImages(1).Draw Form1.hDC, intW * 3, space,imlFocus

' Imprime un título para las imágenes.

Print _

"Normal    Transparente    Seleccionado    Enfoque"

End Sub


ExtractIcon (Método)

Crea un icono a partir de un mapa de bits en un objeto ListImage de un control ImageList y devuelve una referencia del icono que se acaba de crear.

Sintaxis

objeto.ExtractIcon

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Puede usar el icono creado con el método ExtractIcon como cualquier otro icono. Por ejemplo, puede usarlo como valor de la propiedad MouseIcon, como ilustra el código siguiente:

Set Command1.MouseIcon = ImageList1.ListImages(1).ExtractIcon


ExtractIcon (Ejemplo del método)
Ejemplo del método ExtractIcon

Este ejemplo carga un mapa de bits en un control ImageList. Cuando el usuario hace clic en el formulario, se usa el método ExtractIcon para crear un icono a partir del mapa de bits y ese icono se usa como valor de la propiedad MouseIcon del objeto Form. Para probar el ejemplo, coloque un control ImageList en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el formulario.

Private Sub Form_Load()

Dim imgX As ListImage

Set imgX = ImageList1.ListImages. _

Add(, , LoadPicture("bitmaps\assorted\balloon.bmp"))

End Sub

Private Sub Form_Click()

Dim picX As Picture

Set picX = ImageList1.ListImages(1).ExtractIcon  ' Crea un icono.

With Form1

.MouseIcon =  picX	' Establece el nuevo icono.

.MousePointer = vbCustom 	' Establece el icono personalizado.

End With

End Sub


ImageHeight, ImageWidth (Propiedades)

•	La propiedad ImageHeight devuelve o establece el alto de los objetos ListImage en un control ImageList.

•	La propiedad ImageWidth devuelve o establece el ancho de los objetos ListImage en un control ImageList.

Sintaxis

objeto.ImageHeight

objeto.ImageWidth

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

El alto y el ancho se miden en píxeles. Todas las imágenes de una colección ListImages tienen las mismas propiedades de alto y ancho.

Cuando un ImageList no contiene ningún objeto ListImage, puede establecer las dos propiedades ImageHeight e ImageWidth. Sin embargo, una vez que se ha agregado un objeto ListImage, todas las imágenes subsiguientes deben tener el mismo alto y ancho que el primer objeto. Si intenta agregar una imagen de distinto tamaño, se producirá un error.


ImageHeight, ImageWidth (Ejemplo de las propiedades)
Ejemplo de las propiedades ImageHeight, ImageWidth

Este ejemplo carga un icono en un control ImageList y usa la imagen en un control ListView. Cuando el usuario hace clic en el formulario, el código usa la propiedad ImageHeight para ajustar el alto del control ListView al tamaño del objeto ListImage. Para probar el ejemplo, coloque los controles ImageList y ListView en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el formulario.

Private Sub Form_Load()

' Crea variables para los objetos ImageList y ListView.

Dim imgX As ListImage

Dim itmX As ListItem

Form1.ScaleMode = vbPixels ' Asegura que ScaleMode está en píxeles.

ListView1.BorderStyle = FixedSingle ' Muestra el borde.

' Acorta el control ListView para que el contraste posterior sea más obvio.

ListView1.Height = 50

' Coloca un mapa de bits grande en ImageList.

Set imgX = ImageList1.ListImages. _

Add(,, LoadPicture("bitmaps\gauge\vert.bmp"))

ListView1.Icons = ImageList1 ' Establece la propiedad Icons.

' Agrega un elemento al control ListView.

Set itmX = ListView1.ListItems.Add()

itmX.Icon = 1	' Establece la propiedad Icon para el ListImage 1 de ImageList.

itmX.Text = "Termómetro"	' Establece el texto del objeto ListView ListItem.

End Sub

Private Sub Form_Click()

Dim strHW As String

strHW = "Alto: " & ImageList1.ImageHeight & _

"   Ancho: " & ImageList1.ImageWidth

caption = strHW	' Muestra las dimensiones.

' Agranda ListView para dar cabida a la imagen más alta.

ListView1.Height = ImageList1.ImageHeight + 50

End Sub


ListImages (Propiedad)

Devuelve una referencia a una colección de objetos ListImage en un control ImageList.

Sintaxis

objeto.ListImages

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Puede manipular objetos ListImage mediante métodos de colección estándar como los métodos Add y Clear. Puede tener acceso a cada miembro de la colección por su índice o su clave única, que están almacenados en las propiedades Index y Key, respectivamente, cuando agrega el objeto ListImage a una colección.


ListImages (Ejemplo de la propiedad)
Ejemplo de la propiedad ListImages

Este ejemplo agrega tres objetos ListImage a una colección ListImages y los usa en un control ListView. El código hace referencia a los objetos ListImage mediante sus dos propiedades Key e Item. Para probar el ejemplo, coloque los controles ImageList y ListView en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo.

Private Sub Form_Load()

Dim imgX As ListImage

' Agrega imágenes a la colección ListImages.

Set imgX = ImageList1. _

ListImages.Add(,"rocket",LoadPicture("icons\industry\rocket.ico"))

Set imgX = ImageList1. _

ListImages.Add(,"plane",LoadPicture("icons\industry\plane.ico"))

Set imgX = ImageList1. _

ListImages.Add(,"car",LoadPicture("icons\industry\cars.ico"))

ListView1.Icons = ImageList1 ' Establece la propiedad Icons.

' Agrega objetos Item al control ListView.

Dim itmX as ListItem

Set itmX = ListView1.ListItems.Add()

' Referencia por índice.

itmX.Icon = 1

itmX.Text = "Cohete"	' Establece la cadena de texto.

Set itmX = ListView1.ListItems.Add()

' Referencia por clave("avión").

itmX.Icon = "jet"

itmX.Text = "Avión"	' Establece la cadena de texto.

Set itmX = ListView1.ListItems.Add()

itmX.Icon = "car"

itmX.Text = "Auto"	' Establece la cadena de texto.

End Sub


MaskColor (Propiedad)

Devuelve o establece el color que se usa para crear las máscaras de un control ImageList.

Sintaxis

objeto.MaskColor [ = color]

La sintaxis de la propiedad MaskColor consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
color	Un valor o una constante que determina el color utilizado para crear máscaras. Puede especificar los colores mediante constantes intrínsecas de Visual Basic, la función QBColor o la función RGB.
Comentarios

Cada imagen de una colección ListImages tiene una máscara asociada. La máscara es una imagen monocroma derivada de la imagen original y se genera automáticamente usando la propiedad MaskColor como color específico de la máscara. Esta máscara no se usa directamente, sino que se aplica al mapa de bits original en operaciones gráficas como los métodos Overlay y Draw. Por ejemplo, la propiedad MaskColor determina qué color de una imagen será transparente en el método Overlay.

Si los colores del sistema cambian, el color transparente cambiará, creando la apariencia de la imagen impredecible. Es una buena práctica de programación para utilizar colores que no sean del sistema.


MaskColor (Ejemplo de la propiedad)
Ejemplo de la propiedad MaskColor

Este ejemplo carga varios mapas de bits en un control ImageList. Al hacer clic en el formulario, se superpone un objeto ListImage sobre uno de los demás objetos ListImage. Para probar el ejemplo, coloque un control ImageList y un control Picture en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el programa y haga clic en el formulario.

Private Sub Form_Load()

Dim imgX As ListImage

' Carga mapas de bits.

Set imgX = ImageList1.ListImages. _

Add(, "No", LoadPicture("bitmaps\assorted\Intl_No.bmp"))

Set imgX = ImageList1.ListImages. _

Add(, , LoadPicture("bitmaps\assorted\smokes.bmp"))

Set imgX = ImageList1.ListImages. _

Add(, , LoadPicture("bitmaps\assorted\beany.bmp"))

ScaleMode = vbPixels

' Establece la propiedad MaskColor.

ImageList1.MaskColor = vbGreen

' Establece a blanco el BackColor del formulario.

Form1.BackColor = vbWhite

End Sub

Private Sub Form_Click()

Static intCount As Integer ' Variable estática para contar imágenes.

' Restablece el valor 2 en la variable si sobrepasa el valor de Images.Count.

If intCount > ImageList1.ListImages.Count Or intCount < 1 Then

intCount = 2 ' Restablece la segunda imagen

End If

' Superpone ListImage(1) a ListImages 2-3.

Picture1.Picture = ImageList1.Overlay(intCount, 1)

' Incrementa el contador.

intCount = intCount + 1

' Crea una variable para almacenar el valor de ImageList.ImageWidth.

Dim intW

intW = ImageList1.ImageWidth

' Dibuja imágenes en el formulario para referencia.

' Usa el valor ImageWidth para espaciar las
' imágenes.

ImageList1.ListImages(1).Draw Form1.hDC, 0, 0, imlNormal

ImageList1.ListImages(2).Draw Form1.hDC, 0, intW, imlNormal

ImageList1.ListImages(3).Draw Form1.hDC, 0, intW * 2, imlNormal

End Sub


UseMaskColor (Propiedad)

Devuelve o establece un valor que determina si el color asignado en la propiedad MaskColor es utilizado como una máscara.

Sintaxis

objeto.UseMaskColor [= valor]

Las sintaxis de la propiedad UseMaskColor constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que evalúa a un objeto en la lista Aplicable a.
valor	Un valor booleano que determina si la propiedad MaskColor es utilizada, así como se describe en Valores.
Valores

Los valores para valor son:

Valor	Descripción
True	La propiedad MaskColor es utilizada para crear regiones transparentes.
False	(Predeterminado) La propiedad MaskColor no es utilizada.
Comentarios

Las propiedades MaskColor y UseMaskColor son utilizadas sólo cuando la propiedad Style tiene el valor 1 - Gráfico.


Overlay (Método)

Dibuja una imagen de una colección ListImages sobre otra y devuelve el resultado.

Sintaxis

objeto.Overlay (índice1, índice2)

La sintaxis del método Overlay consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
índice1	Requerido. Un número entero (propiedad Index) o una cadena única (propiedad Key) que especifica la imagen que se va a superponer.
índice2	Requerido. Un número entero (propiedad Index) o una cadena única (propiedad Key) que especifica la imagen que se va a dibujar sobre el objeto especificado en índice1. El color de la imagen que coincide con el valor de la propiedad MaskColor aparecerá transparente. Si no hay ningún color coincidente, la imagen se dibujará opaca sobre la otra imagen.
Comentarios

Use el método Overlay junto con la propiedad MaskColor para crear una imagen única a partir de dos imágenes distintas. El método Overlay impone un mapa de bits sobre otro para crear una tercera imagen compuesta. La propiedad MaskColor determina qué color de la imagen superpuesta es transparente.

El índice puede ser un número de índice o una clave. Por ejemplo, para superponer la segunda imagen de la colección a la primera:

Set Picture1.Picture = ImageList1.Overlay(1,2) ' Referencia por Index.

' O referencia por la propiedad Key.

Set Picture1.Picture = ImageList1.Overlay("Primera", "Segunda")


Overlay (Ejemplo del método)
Ejemplo del método Overlay

Este ejemplo carga cinco objetos ListImage en un control ImageList y presenta dos imágenes cualesquiera en dos controles PictureBox. En cada PictureBox, seleccione una imagen que desee presentar, de uno de los dos controles ComboBox. Cuando haga clic en el formulario, el código usará el método Overlay para crear una tercera imagen que se mostrará en un tercer control PictureBox. Para probar el ejemplo, coloque un control ImageList, dos controles ComboBox y tres controles PictureBox en un formulario, y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el formulario.

Private Sub Form_Load()

Dim X As ListImage

' Agrega 5 imágenes a una colección ListImages.

Set X = ImageList1.ListImages. _

 Add(, , LoadPicture("icons\elements\moon05.ico"))

Set X = ImageList1.ListImages. _

 Add(, , LoadPicture("icons\elements\snow.ico"))

Set X = ImageList1.ListImages. _

 Add(, , LoadPicture("icons\writing\erase02.ico"))

Set X = ImageList1.ListImages. _

 Add(, , LoadPicture("icons\writing\note06.ico"))

Set X = ImageList1.ListImages. _

 Add(, , LoadPicture("icons\flags\flgfran.ico"))

With combo1	' Puebla el primer ComboBox.

.AddItem "Luna"

.AddItem "Copo de nieve"

.AddItem "Lápiz"

.AddItem "Nota"

.AddItem "Bandera"

.ListIndex = 0

End With

With combo2	' Puebla el segundo ComboBox.

.AddItem "Luna"

.AddItem "Copo de nieve"

.AddItem "Lápiz"

.AddItem "Nota"

.AddItem "Bandera"

.ListIndex = 2

End With

Picture1.BackColor = vbWhite	' Asigna el valor blanco a BackColor.

Picture2.BackColor = vbWhite

Picture3.BackColor = vbWhite

End Sub

Private Sub Form_Click()

' Superpone las dos imágenes y las presenta en PictureBox3.

Set Picture3.Picture = ImageList1. _

 Overlay(combo1.ListIndex + 1, combo2.ListIndex + 1)

End Sub

Private Sub combo1_Click()

' Cambia PictureBox para reflejar la selección de ComboBox.

Set Picture1.Picture = ImageList1. _

 ListImages(combo1.ListIndex + 1).ExtractIcon

End Sub

Private Sub combo2_Click()

' Cambia PictureBox para reflejar la selección de ComboBox.

Set Picture2.Picture = ImageList1. _

 ListImages(combo2.ListIndex + 1).ExtractIcon

End Sub


ImageList (Constantes del control)
Constantes del control ImageList

Constante	Valor	Descripción
imlNormal	0	La imagen se dibuja sin ningún cambio.
imlTransparent	1	La imagen se dibuja de forma transparente.
imlSelected	2	La imagen se dibuja seleccionada.
imlFocus	3	La imagen se dibuja con enfoque.


hImageList (Propiedad, control ImageList)

Devuelve un controlador a un control ImageList.

Sintaxis

objeto.hImageList

El marcador de posición objeto representa una expresión de objeto que da como resultado un control ImageList.

Comentarios

El entorno operativo Microsoft Windows identifica un control ImageList en una aplicación asignándole un controlador o hImageList. La propiedad hImageList se usa en las llamadas a la API de Windows. Muchas funciones de la API relacionadas con ImageList necesitan como argumento el hImageList de la ventana activa.

Nota   Como el valor de esta propiedad puede cambiar cuando se está ejecutando el programa, no almacene nunca el valor de hImageList en una variable.


ListView (Control)

El control ListView muestra elementos en una de cuatro vistas diferentes. Puede organizar los elementos en columnas con o sin encabezados, así como mostrar iconos y texto adjuntos.

Sintaxis

ListView

Comentarios

Con un control ListView puede organizar entradas de listas, llamadas objetos ListItem, en una de las siguientes vistas:

•	Iconos grandes (estándar)

•	Iconos pequeños

•	Lista

•	Informe

La propiedad View determina qué vista utiliza el control para mostrar los elementos de la lista. También puede controlar si las etiquetas asociadas a los elementos de la lista se ajustan a más de una línea mediante la propiedad LabelWrap. Además, puede organizar cómo se ordenan los elementos de la lista y cómo se muestran los elementos seleccionados.

El control ListView contiene los objetos ListItem y ColumnHeader. Un objeto ListItem define las distintas características de los elementos del control ListView, como:

•	Una breve descripción del elemento.

•	Iconos que pueden aparecer con el elemento, suministrados por un control ImageList.

•	Partes adicionales de texto, denominadas subelementos, asociadas a un objeto ListItem que puede ver en la vista Informe.

Puede mostrar los encabezados de columna en el control ListView mediante la propiedad HideColumnHeaders. Pueden agregarse en tiempo de diseño y en tiempo de ejecución. En tiempo de diseño, puede utilizar la ficha Encabezados de columnas del cuadro de diálogo Propiedades del control ListView. En tiempo de ejecución, utilice el método Add para agregar un objeto ColumnHeader a la colección ColumnHeaders.

Nota de distribución   El control ListView forma parte de un grupo de controles ActiveX que se encuentran en el archivo COMCTL32.OCX. Para utilizar el control ListView en la aplicación, deberá agregar el archivo COMCTL32.OCX al proyecto. Cuando distribuya la aplicación, instale el archivo COMCTL32.OCX en el directorio System o System32 de Microsoft Windows del usuario. Para obtener más información acerca de cómo agregar un control ActiveX a un proyecto de Visual Basic, consulte el Manual del programador de Visual Basic.


ColumnHeader (Objeto), ColumnHeaders (Colección)
ColumnHeader (Objeto, colección ColumnHeaders)

•	Un objeto ColumnHeader es un elemento de un control ListView que contiene texto de encabezado.

•	Una colección ColumnHeaders contiene uno o más objetos ColumnHeader.

Sintaxis

lista_imágenes.ColumnHeaders

lista_imágenes.ColumnHeaders(índice)

Las líneas de sintaxis anteriores hacen referencia a la colección y a los elementos individuales de la colección respectivamente, de acuerdo con la sintaxis de colección estándar.

La sintaxis del objeto ColumnHeader, colección ColumnHeaders consta de las siguientes partes:

Parte	Descripción
lista_imágenes	Una expresión de objeto que da como resultado un control ListView.
índice	Un entero o una cadena que identifica de forma única un miembro de una colección de objetos. El entero es el valor de la propiedad Index; la cadena es el valor de la propiedad Key.
Comentarios

Los objetos ColumnHeader sólo se pueden ver en la vista Informe.

Puede agregar objetos ColumnHeader a un control ListView en tiempo de diseño y en tiempo de ejecución.

Con un objeto ColumnHeader, un usuario puede llevar a cabo lo siguiente:

•	Hacer clic para desencadenar el evento ColumnClick y ordenar los elementos basándose en ese elemento de datos.

•	Tomar el borde derecho del objeto y arrastrarlo para ajustar el ancho de la columna.

•	Ocultar objetos ColumnHeader en la vista Informe.

Siempre hay una columna en el control ListView, la Columna 1. Esta columna contiene los objetos ListItem propiamente dichos, no sus subelementos. La segunda columna (Columna 2) contiene subelementos. Por tanto, el número de objetos ColumnHeader siempre supera en uno al de subelementos y la propiedad SubItems del objeto ListItem es una matriz basada en 1 de tamaño ColumnHeaders.Count - 1.

El número de objetos ColumnHeader determina el número de subelementos que puede tener cada objeto ListItem del control. Cuando elimina un objeto ColumnHeader, también se eliminan todos los subelementos asociados a la columna. La matriz de subelementos de cada objeto ListItem se desplaza para actualizar los índices de ColumnHeader, lo que hace que cambien las propiedades SubItemIndex de los restantes encabezados de columna.


Add (Método), ColumnHeaders (Colección)
Add (Método, colección ColumnHeaders)

Agrega un objeto ColumnHeader a una colección ColumnHeaders de un control ListView.

Sintaxis

objeto.Add(índice, clave, texto, ancho, alineación)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado una colección ColumnHeaders.
índice	Opcional. Un entero que identifica de forma única un miembro de una colección de objetos.
clave	Opcional. Una expresión de cadena única que puede utilizarse para tener acceso a un miembro de la colección.
texto	Opcional. Una cadena que aparece en el objeto ColumnHeader.
ancho	Opcional. Una expresión numérica que especifica el ancho del objeto con las unidades de escala del contenedor del control.
alineación	Opcional. Un entero que determina la alineación del texto en el objeto ColumnHeader. Para ver los valores, elija la propiedad Alignment de la lista Vea también.
Comentarios

El método Add devuelve una referencia al objeto ColumnHeader recién insertado.

Utilice la parte índice para insertar un encabezado de columna en una posición específica de la colección ColumnHeaders.

Cuando los miembros de una colección ColumnHeaders puedan cambiar dinámicamente, puede hacer referencia a ellos mediante la propiedad Key, ya que puede cambiar la propiedad Index de cualquier objeto ColumnHeader.


ListItem (Objeto), ListItems (Colección)
ListItem (Objeto, colección ListItems)

•	Un objeto ListItem consta de texto, el índice de un icono asociado (objeto ListImage) y, en la vista Informe, una matriz de cadenas que representan los subelementos.

•	Una colección conjuntoListItems contiene uno o más objetos ListItem.

Sintaxis

lista_imágenes.ListItems

lista_imágenes.ListItems(índice)

Las líneas de sintaxis anteriores hacen referencia a la colección y a los elementos individuales de la colección respectivamente, de acuerdo con la sintaxis de colección estándar.

La sintaxis del objeto ListItem, colección ListItems consta de las siguientes partes:

Parte	Descripción
lista_imágenes	Una expresión de objeto que da como resultado un control ListView.
índice	Un entero o una cadena que identifica de forma única a un miembro de una colección ListItem. El entero es el valor de la propiedad Index; la cadena es el valor de la propiedad Key.
Comentarios

Los objetos ListItem pueden contener texto e imágenes. Sin embargo, para utilizar imágenes debe hacer referencia a un control ImageList mediante las propiedades Icons y SmallIcons.

También puede cambiar la imagen con la propiedad Icon o SmallIcon.

El ejemplo siguiente muestra cómo agregar ColumnHeaders  y varios objetos ListItem con subelementos a un control ListView.

Private Sub Form_Load()

Dim clmX As ColumnHeader

Dim itmX As ListItem

Dim i As Integer

For i = 1 To 3

Set clmX = ListView1.ColumnHeaders.Add()

clmX.Text = "Col" & i

Next i

' Agrega 10 elementos a la lista, todos con el

' mismo icono

For i = 1 To 10

Set itmX = ListView1.ListItems.Add()

itmX.SmallIcon = 1

itmX.Text = "ListItem " & i

itmX.SubItems(1) = "Subelemento 1"

itmX.SubItems(2) = "Subelemento 2"

Next i

End Sub


Add (Método), ListItems (Colección)
Add (Método, colección ListItems)

Agrega un objeto ListItem a una colección ListItems de un control ListView y devuelve una referencia al objeto recién creado.

Sintaxis

objeto.Add(índice, clave, texto, icono, icono_pequeño)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Necesario. Una expresión de objeto que da como resultado una colección ListItems.
índice	Opcional. Un entero que especifica la posición en la que desea insertar el ListItem. Si no se especifica ningún índice, ListItem se agregará al final de la colección ListItems.
clave	Opcional. Una expresión de cadena única que puede utilizarse para tener acceso a un miembro de la colección.
texto	Opcional. Una cadena asociada al control del objeto ListItem.
icono	Opcional. Un entero que establece el icono que se va a mostrar en un control ImageList, cuando el control ListView establece a la vista Icono.
icono_pequeño	Opcional. Un entero que establece el icono que se va a mostrar en un control ImageList, cuando el control ListView se establece a la vista Icono pequeño.
Comentarios

Antes de establecer las propiedades Icons o SmallIcons, es necesario inicializarlas. Puede hacerlo en tiempo de diseño especificando un objeto ImagenList con la ficha General del cuadro de diálogo Propiedades del control ListView o en tiempo de ejecución con el código siguiente:

ListView1.Icons = ImageList1   'Suponiendo que Imagelist sea ImageList1.

ListView1.SmallIcons = ImageList2

Si la lista no está ordenada, puede insertar un objeto ListItem en cualquier posición mediante la parte índice. Si la lista está ordenada, se pasará por alto la parte índice y el objeto ListItem se insertará en la posición correcta basándose en el orden.

Si no se suministra índice, se agregará el objeto ListItem con un índice igual al número de objetos ListItem en la colección + 1.

Utilice la propiedad Key para hacer referencia a un miembro de la colección ListItems, si espera que cambie el valor de la propiedad Index de un objeto, como es agregar o quitar dinámicamente objetos de la colección.


Add (Método), SubItems (Ejemplo de la propiedad) (ListItems, ColumnHeaders)
Ejemplo de la propiedad ListItems, SubItems (Método Add, ColumnHeaders)

El siguiente ejemplo utiliza la base de datos Biblio.mdb como origen para llenar un control ListView con objetos ListItem. Para probar este ejemplo, coloque un control ListView y dos controles ImageList en un formulario y pegue el código en la sección Declaraciones. Debe asegurarse de tener en su equipo instalada la base de datos Biblio.mdb. En este ejemplo, verifique la ruta de acceso de la función OpenDatabase y cámbiela por la ruta de acceso actual de la base de datos Biblio.mdb de su equipo.

Nota   El ejemplo no se ejecutará a menos que agregue una referencia a la Biblioteca de objetos de Microsoft DAO 3.5 Para hacer esto, en el menú Proyecto, seleccione Referencias. Busque Biblioteca de objetos de Microsoft DAO 3.5 y active la casilla de verificación.

Private Sub Form_Load()

' Agrega ColumnHeaders. El ancho de las columnas es

' el ancho del control dividido entre el número de

' objetos ColumnHeader.

ListView1.ColumnHeaders. _

Add , , "Autor", ListView1.Width / 3

ListView1.ColumnHeaders. _

Add , , "Id. de autor", ListView1.Width / 3, _

lvwColumnCenter

ListView1.ColumnHeaders. _

Add , , "Cumpleaños", ListView1.Width / 3

' Establece la propiedad View del informe.

ListView1.View = lvwReport

' Crea variables de objeto para objetos de

' acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

' IMPORTANTE: La base de datos Biblio.mdb debe estar en su

' equipo, y debe establecer la ruta de acceso correcta

' para el archivo en la función OpenDatabase.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("c:\Archivos de programa\VB\BIBLIO.MDB")

' Establece el conjunto de registros como la tabla
'"Authors".

Set myRs = myDb.OpenRecordset("Authors", dbOpenDynaset)

' Declara una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un objeto ListItem.

' Utiliza el campo Autor para el texto del objeto ListItem.

' Usa el campo "Id. de autor" para el SubItem(1) del objeto ListItem.

' Utiliza el campo "Year Born" para el SubItem(2) del objeto ListItem.

While Not myRs.EOF

Set itmX = ListView1.ListItems. _

Add(, , CStr(myRs!Author))	' Autor.

' Si el campo AuthorID no es nulo, establece
' SubItem 1 como él.

If Not IsNull(myRs!Au_id) Then

itmX.SubItems(1) = CStr(myRs!Au_id)

End If

' Si el campo nacimiento no es Null, establece
' SubItem 2 como él.

If Not IsNull(myRs![Year Born]) Then

itmX.SubItems(2) = myRs![Year Born]

End If

myRs.MoveNext	' Pasa al siguiente registro.

Wend

End Sub


Alignment (Propiedad, objeto ColumnHeader)

Devuelve o establece la alineación del texto en un objeto ColumnHeader.

Sintaxis

objeto.Alignment [= entero]

La sintaxis de la propiedad Alignment consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto ColumnHeader.
entero	Un entero que determina la alineación, como se describe en Valores.
Valores

Los valores admitidos para entero son:

Constante	Valor	Descripción
lvwColumnLeft	0	(Predeterminado) Izquierda. Texto alineado a la izquierda.
lvwColumnRight	1	Derecha. Texto alineado a la derecha.
lvwColumnCenter	2	Centro. Texto centrado.


Arrange (Propiedad, control ListView)

Devuelve o establece un valor que determina cómo se organizan los iconos en la vista Icon o SmallIcon de un control ListView .

Sintaxis

objeto.Arrange [= valor]

La sintaxis de la propiedad Arrange consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
valor	Un entero o una constante que determina cómo se organizan los iconos grandes o pequeños, como se describe en Valores.
Valores

Estos son los valores admitidos para valor:

Constante	Valor	Descripción
lvwNone	0	(Predeterminado) Ninguno.
lvwAutoLeft	1	Izquierda. Los elementos se alinean automáticamente a lo largo de la parte izquierda del control.
lvwAutoTop	2	Superior. Los elementos se alinean automáticamente a lo largo de la parte superior del control.


Arrange (Ejemplo de la propiedad)
Ejemplo de la propiedad Arrange

Este ejemplo agrega varios objetos y subelementos ListItem a un control ListView. Cuando haga clic en el control OptionButton, la propiedad Arrange se establecerá al valor Index del OptionButton. Para probar el ejemplo, coloque una matriz de controles con tres controles OptionButton, un control ListView y dos controles ImageList en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en un OptionButton para cambiar la propiedad Arrange.

Private Sub Option1_Click(Index as Integer)

' Establece la propiedad Arrange como Option1.Index.

ListView1.Arrange = Index

End Sub

Private Sub Form_Load()

' Etiqueta los controles OptionButton con opciones

' de organización.

Option1(0).Caption = "Sin organizar"

Option1(1).Caption = "Organización automática a la izquierda"

Option1(2).Caption = "Organización automática en la parte superior"

' Declara variables para crear objetos ListView e ImageList.

Dim i As Integer

Dim itmX As ListItem	' Variable de objeto para ListItems.

Dim imgX As ListImage	' Variable de objeto para ListImages.

' Agrega un objeto ListImage a un control ImageList.

Set imgX = ImageList1.ListImages. _

Add(,,LoadPicture("icons\mail\mail01a.ico"))

ListView1.Icons = ImageList1	' Asocia un control ImageList.

' Agrega diez objetos ListItem, cada uno con un Icono.

For i = 1 To 10

Set itmX = ListView1.ListItems.Add()

itmX.Icon = 1	' Icon.

itmX.Text = "ListItem " & i

Next i

End Sub


ColumnClick (Evento)

Se produce cuando se hace clic en un objeto ColumnHeader de un control ListView. Sólo está disponible en la vista Informe.

Sintaxis

Private Sub objeto_ColumnClick(ByVal encabezado_columna As ColumnHeader)

La sintaxis del evento ColumnClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
encabezado_columna	Una referencia al objeto ColumnHeader en el que se ha hecho clic.
Comentarios

Las propiedades Sorted, SortKey y SortOrder se utilizan normalmente en el código para ordenar los objetos ListItem de la columna que se ha hecho clic.


ColumnHeaders (Propiedad, control ListView)

Devuelve una referencia a una colección de objetos ColumnHeader.

Sintaxis

objeto.ColumnHeaders

El marcador de posición objeto representa una expresión de objeto que da como resultado un control ListView.

Comentarios

Puede manipular objetos ColumnHeader mediante métodos estándar de colección (por ejemplo, el método Remove). Se puede tener acceso a cada ColumnHeader de la colección mediante su índice o mediante una clave única, almacenada en la propiedad Key.


Ghosted (Propiedad)

Devuelve o establece un valor que determina si un objeto ListItem de un control ListView está no disponible (aparece atenuado).

Sintaxis

objeto.Ghosted [= booleano]

La sintaxis de la propiedad Ghosted consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto ListItem.
booleano	Una expresión booleana que especifica si el icono o el icono pequeño está atenuado, como se describe en Valores.
Valores

Los valores válidos para booleano son:

Valor	Descripción
True	El objeto ListItem no está disponible para el usuario.
False	(Predeterminado) El objeto ListItem está disponible.
Comentarios

La propiedad Ghosted suele emplearse para mostrar cuándo se corta un ListItem o se desactiva por alguna razón.

Cuando se selecciona un ListItem atenuado, la etiqueta se resalta, pero no así la imagen.


Ghosted, MultiSelect (Ejemplo de las propiedades)
Ejemplo de las propiedades Ghosted, MultiSelect

Este ejemplo llena un control ListView con el contenido de la tabla Authors de la base de datos BIBLIO.MDB y le permite utilizar controles OptionButton para establecer opciones de la propiedad MultiSelect. Puede seleccionar cualquier elemento o presionar la tecla MAYÚS y seleccionar múltiples elementos. Al hacer clic en el CommandButton se establecerá la propiedad Ghosted de los elementos seleccionados a True. Para probar el ejemplo, coloque una matriz de controles con dos controles OptionButton, un control ListView, un control ImageList y un control CommandButton en un formulario y pegue el código en la sección Declaraciones del formulario.

Nota   Este ejemplo no funcionará a menos que agregue una referencia a la biblioteca de objetos Microsoft DAO 3.0 mediante el comando Referencias del menú Herramientas. Ejecute el ejemplo, seleccione una opción MultiSelect haciendo clic en un OptionButton, haga clic en los elementos para seleccionarlos y haga clic en el CommandButton para atenuarlos.

Private Sub Command1_Click()

Dim x As Object

Dim i As Integer

' Atenúa el ListItem seleccionado.

If ListView1.SelectedItem Is Nothing Then Exit Sub

For i = 1 To ListView1.ListItems.Count

If ListView1.ListItems(i).Selected = True Then

ListView1.ListItems(i).Ghosted = True

End If

Next i

End Sub

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es

' el ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

' Etiqueta controles OptionButton con las opciones de MultiSelect.

Option1(0).Caption = "No MultiSelect"

Option1(1).Caption = "MultiSelect"

ListView1.MultiSelect = 1 ' Establece MultiSelect a True

ListView1.BorderStyle = ccFixedSingle ' Set BorderStyle property.

ListView1.View = lvwReport	' Establece la propiedad View a Report.

' Agrega una imagen a control ImageList.

Dim imgX As ListImage

Set imgX = ImageList1.ListImages. _

Add(, , LoadPicture("icons\mail\mail01a.ico"))

ListView1.Icons = ImageList1

' Crea variables de objeto para objetos de

' acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros como la tabla
' Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Crea una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un

' objeto ListItem.

' Usa el campo Nombre para el texto del objeto ListItem.

' Usa el campo Dirección para el SubItem(1) del
' objeto ListItem

' Usa el campo Teléfono para el SubItem(2) del
' objeto ListItem.

While Not myRs.EOF

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

itmX.Icon = 1  ' Establece el icono como icono ImageList.

' Si el campo Dirección no es Null, establece SubItem 1 como campo.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address)  ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece
' SubItem 2 como campo.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext  ' Pasa al siguiente registro.

Wend

ListView1.View = lvwIcon  ' Muestra la vista Icons.

Command1.Caption = "Cortar"  ' Establece el título del CommandButton.

' Agrega un título al formulario.

Me.Caption = "Seleccione cualquier elemento y haga clic en 'Cortar'."

End Sub

Private Sub Option1_Click(Index as Integer)

ListView1.MultiSelect = Index

End Sub


HideColumnHeaders (Propiedad, control ListView)

Devuelve o establece si los objetos ColumnHeader de un control ListView están ocultos en la vista Informe.

Sintaxis

objeto.HideColumnHeaders [= booleano]

La sintaxis de la propiedad HideColumnHeaders consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
booleano	Una expresión booleana que especifica si los encabezados de columna son visibles en la vista Informe, como se describe en Valores.
Valores

Los valores válidos para booleano son:

Valor	Descripción
True	Los encabezados de columna no son visibles.
False	(Predeterminado) Los encabezados de columna son visibles.
Comentarios

Los objetos ListItem y cualquier subelemento relacionado permanece visible incluso si la propiedad HideColumnHeaders está establecida a True.


HideColumnHeaders (Ejemplo de la propiedad)
Ejemplo de la propiedad HideColumnHeaders

Este ejemplo agrega varios objetos ListItem con subelementos a un control ListView. Cuando hace clic en el CommandButton, la propiedad HideColumnHeaders alterna entre True (-1) y False (0). Para probar el ejemplo, coloque controles ListView y CommandButton en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el CommandButton para alternar la propiedad HideColumnHeaders.

Private Sub Command1_Click()

' Activa y desactiva la propiedad HideColumnHeaders.

ListView1.HideColumnHeaders = Abs(ListView1.HideColumnHeaders) - 1

End Sub

Private Sub Form_Load()

Dim clmX As ColumnHeader

Dim itmX As ListItem

Dim i As Integer

Command1.Caption = "HideColumnHeaders"

' Agrega tres objetos ColumnHeader al control.

For i = 1 To 3

Set clmX = ListView1.ColumnHeaders.Add()

clmX.Text = "Col" & i

Next I

' Establece View a Report.

ListView1.View = lvwReport

' Agrega 10 ListItems al control.

For i = 1 To 10

Set itmX = ListView1.ListItems.Add()

itmX.Text = "ListItem " & i

itmX.SubItems(1) = "Subitem 1"

itmX.SubItems(2) = "Subitem 2"

Next i

End Sub


Icon, SmallIcon (Propiedades, objeto ListItem)

Devuelve o establece el índice o el valor de clave de un icono o un icono pequeño asociado a un objeto ListItem en un control ImageList.

Sintaxis

objeto.Icon [= índice]

objeto.SmallIcon [= índice]

Las sintaxis de las propiedades Icon, SmallIcon constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto ListItem.
índice	Un entero o una cadena única que identifica un icono o un icono pequeño en un control ImageList asociado. El entero es el valor de la propiedad Index del objeto ListItem; la cadena es el valor de la propiedad Key.
Comentarios

Antes de poder utilizar un icono en un objeto ListItem, es necesario asociar un control ImageList al control ListView que contiene el objeto. Consulte las propiedades Icons, SmallIcons (control ListView) para obtener más información. El ejemplo siguiente muestra la sintaxis correcta:

ListView1.ListItems(1).SmallIcons=1

Las imágenes aparecerán cuando el control ListView esté en la vista SmallIcons.


Icons, SmallIcons (Propiedades)

Devuelven o establecen los controles ImageList asociados a las vistas Icon y SmallIcon en un control ListView.

Sintaxis

objeto.Icons [= lista_imágenes]

objeto.SmallIcons [= lista_imágenes]

Las sintaxis de las propiedades Icons, SmallIcons constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado el control ListView.
lista_imágenes	Una expresión de objeto que da como resultado un control ImageList.
Comentarios

Para asociar un control ImageList a un control ListView en tiempo de ejecución, establezca estas propiedades al control ImageList deseado.

Cada objeto ListItem del control ListView también tiene propiedades Icon y SmallIcon que indizan los objetos ListImage y determinan qué imagen se muestra.

Cuando haya asociado un ImageList al control ListView, podrá usar el valor de la propiedad Index o Key para hacer referencia a un objeto ListImage de un procedimiento.


Icon, SmallIcon, Icons, SmallIcons, View (Ejemplo de las propiedades)
Ejemplo de las propiedades Icon, SmallIcon, Icons, SmallIcons, View

Este ejemplo llena un control ListView con el contenido de la tabla Publishers de la base de datos BIBLIO.MDB. Cuatro controles OptionButton están etiquetados con opciones de la propiedad View. Debe colocar dos controles ImageList en el formulario, uno para contener imágenes para la propiedad Icon y otro para contener imágenes para la propiedad SmallIcon de cada objeto ListItem. Para probar el ejemplo, coloque un ListView, una matriz de controles formada por cuatro controles OptionButton y dos controles ImageList en un formulario y pegue el código en la sección Declaraciones del formulario.

Nota   El ejemplo no se ejecutará a menos que agregue una referencia a la Biblioteca de objetos Microsoft DAO 3.0 mediante el comando Referencias del menú Herramientas. Ejecute el ejemplo y haga clic en el control ComboBox para cambiar entre las vistas.

Private Sub Option1_Click(Index as Integer)

' Establece la propiedad View del control ListView

' al Index de Option1

ListView1.View = Index

End Sub

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es el

' ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

ListView1.BorderStyle = ccFixedSingle ' Establece la propiedad BorderStyle.

ListView1.View = lvwReport ' Establece la propiedad View a Report.

' Agrega una imagen a ImageList1--Icons ImageList.

Dim imgX As ListImage

Set imgX = ImageList1.ListImages. _

Add(, , LoadPicture("icons\mail\mail01a.ico"))

' Agrega una imagen a ImageList2--SmallIcons ImageList.

Set imgX = ImageList2.ListImages. _

Add(, , LoadPicture("bitmaps\assorted\w.bmp"))

' Para usar controles ImageList con el control

' ListView, deberá asociar un determinado control

' ImageList a las propiedades Icons y SmallIcons.

ListView1.Icons = ImageList1

ListView1.SmallIcons = ImageList2

' Etiqueta controles OptionButton con opciones de View.

Option1(0).Caption = "Icon"

Option1(1).Caption = "SmallIcon"

Option1(2).Caption = "List"

Option1(3).Caption = "Report"

ListView1.View = lvwIcon ' Establece Icon como vista

' Crea variables de objeto para los objetos

' de acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros como la tabla

' Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Crea una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un

' objeto ListItem.

' Usa el campo Nombre para el texto del objeto ListItem.

' Usa el campo Dirección para el SubItem(1) del

' objeto ListItem

' Usa el campo Teléfono para el SubItem(2) del

' objeto ListItem

While Not myRs.EOF

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

itmX.Icon = 1	' Establece un icono de ImageList1.

itmX.SmallIcon = 1	' Establece un icono de ImageList2.

' Si el campo Dirección no es Null, establece SubItem 1 como el campo.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address) ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece SubItem 2 como el campo.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext  ' Pasa al registro siguiente.

Wend

End Sub


ListItems (Propiedad, control ListView)

Devuelve una referencia a una colección de objetos ListItem de un control ListView.

Sintaxis

objeto.ListItems

El marcador de posición objeto representa una expresión de objeto que da como resultado un control ListView.

Comentarios

Los objetos ListItem pueden manipularse mediante los métodos de colección estándar. Se puede tener acceso a cada ListItem de la colección mediante su clave única, que se crea y almacena en la propiedad Key.

También puede recuperar objetos ListItem por su posición de presentación mediante la propiedad Index.


LabelWrap (Propiedad, control ListView)

Devuelve o establece un valor que determina si se produce o no ajuste de línea en las etiquetas cuando un control ListView está en la vista Icono.

Sintaxis

objeto.LabelWrap [= booleano]

La sintaxis de la propiedad LabelWrap consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión que da como resultado un control ListView.
booleano	Una expresión booleana que especifica si las etiquetas se ajustan, como se describe en Valores.
Valores

Los valores válidos para booleano son:

Valor	Descripción
True	(Predeterminado) Las etiquetas se ajustan.
False	Las etiquetas no se ajustan.
Comentarios

La longitud de la etiqueta se determina estableciendo el espaciado de icono en el Panel de control. En Windows NT, utilice la opción Escritorio. En Windows 95, use la ficha Apariencia en el icono Pantalla del panel de control.


MultiSelect (Propiedad, control ListView)

Devuelve o establece un valor que indica si un usuario puede seleccionar múltiples ListItems en un control ListView.

Sintaxis

objeto.MultiSelect [= booleano]

La sintaxis de la propiedad MultiSelect consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
booleano	Un valor que especifica el tipo de selección, como se describe en Valores.
Valores

Los valores válidos para booleano son:

Valor	Descripción
False	(Predeterminado) La selección de múltiples ListItems no está permitida.
True	Selección múltiple. Si presiona MAYÚSCULAS y hace clic con el mouse o si presiona MAYÚSCULAS y una de las flechas de dirección (FLECHA ARRIBA, FLECHA ABAJO, FLECHA A LA IZQUIERDA y FLECHA A LA DERECHA), amplía la selección desde el ListItem seleccionado anteriormente al ListItem actual. Si presiona CTRL y hace clic con el mouse seleccionará o anulará la selección de un ListItem de la lista.


SortKey (Propiedad, control ListView)

Devuelve o establece un valor que determina cómo se ordenan los objetos ListItem de un control ListView.

Sintaxis

objeto.SortKey [= entero]

La sintaxis de la propiedad SortKey consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
entero	Un entero que especifica el criterio de ordenación, como se describe en Valores.
Valores

Los valores admitidos para entero son:

Valor	Descripción
0	Ordena mediante la propiedad Text del objeto Text.
> 1	Ordena mediante el subelemento cuyo índice de colección se especifica aquí.
Comentarios

La propiedad Sorted debe establecerse a True antes de que se produzca el cambio.

Es frecuente ordenar una lista cuando se hace clic en el encabezado de columna. Por esta razón, la propiedad SortKey suele incluirse en el evento ColumnClick para ordenar la lista según la columna en la que se ha hecho clic, como establece el criterio de ordenación y se demuestra  en el ejemplo siguiente:

Private Sub ListView1_ColumnClick (ByVal ColumnHeader as ColumnHeader)

ListView1.SortKey=ColumnHeader.Index-1

End Sub


SortOrder (Propiedad, control ListView)

Devuelve o establece un valor que determina si los objetos ListItem de un control ListView se muestran en orden ascendente o descendente.

Sintaxis

objeto.SortOrder [= entero]

La sintaxis de la propiedad SortOrder consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
entero	Un entero que especifica el tipo de orden, como se describe en Valores.
Valores

Los valores admitidos para entero son:

Constante	Valor	Descripción
lvwAscending	0	(Predeterminado) Orden ascendente. Ordena desde el principio del alfabeto (A-Z) o la primera fecha. Los números se ordenan como cadenas, donde el primer dígito determina la posición inicial del orden y los siguientes dígitos determinan la siguiente ordenación.
lvwDescending	1	Orden descendente. Ordena desde el final del alfabeto (Z-A) o la última fecha. Los números se ordenan como cadenas, donde el primer dígito determina la posición inicial del orden y los siguientes dígitos determinan la siguiente ordenación.
Comentarios

La propiedad Sorted debe establecerse a True para que SortOrder pueda reordenar la lista.


ColumnClick (Ejemplo del evento) (propiedades SortKey, SortOrder, Sorted)
Ejemplo del evento ColumnClick (propiedades SortKey, SortOrder, Sorted)

Este ejemplo agrega tres objetos ColumnHeader a un control ListView y llena el control con los registros de la tabla Publishers de la base de datos BIBLIO.MDB. Una matriz con dos controles OptionButton ofrece las dos opciones para ordenar los registros. Cuando hace clic en un ColumnHeader, el control ListView se ordena de acuerdo con la propiedad SortOrder, como determina el control OptionButtons. Para probar el ejemplo, coloque un ListView y una matriz de controles con dos controles OptionButton en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo, haga clic en ColumnHeaders para ordenar y haga clic en OptionButton para cambiar la propiedad SortOrder.

Nota   El ejemplo no se ejecutará a menos que agregue una referencia a la Biblioteca de objetos de Microsoft DAO 3.0 mediante el comando Referencias del menú Herramientas.

Private Sub Option1_Click(Index as Integer)

' Estos OptionButtons ofrecen dos opciones: Ascending

' (Index 0) y Descending (Index 1). Al hacer clic

' en uno de ellos se establece el SortOrder para el

' control ListView.

ListView1.SortOrder = Index

ListView1.Sorted = True ' Ordena la lista.

End Sub

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es el

' ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

ListView1.BorderStyle = ccFixedSingle ' Establece la propiedad BorderStyle.

ListView1.View = lvwReport ' Establece la propiedad View a Report.

' Etiqueta el control OptionButton con las opciones de SortOrder.

Option1(0).Caption = "Ascendente (A-Z)"

Option1(1).Caption = "Descendente (Z-A)"

ListView1.SortOrder = 0 ' Establece la vista Icon.

' Crea variables de objeto para los objetos de

' acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros como la tabla Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Crea una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un objeto ListItem.

' Usa el campo Nombre para el texto del objeto ListItem.

' Usa el campo Dirección para el subelemento(1) del objeto ListItem.

' Usa el campo Teléfono para el subelemento(2) del objeto ListItem.

While Not myRs.EOF

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

' Si el campo Dirección no es Null, establece el subelemento 1 como el campo.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address)  ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece subelemento 2 como el campo.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext	' Pasa al registro siguiente.

Wend

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)

' Cuando se hace clic en un objeto ColumnHeader, el

' control ListView se ordena por los subelementos de

' esa columna.

' Establece el SortKey al Index del ColumnHeader - 1

ListView1.SortKey = ColumnHeader.Index - 1

' Establece Sorted a True para ordenar la lista.

ListView1.Sorted = True

End Sub


SubItemIndex (Propiedad)

Devuelve el índice del subelemento asociado a un objeto ColumnHeader de un control ListView.

Sintaxis

objeto.SubItemIndex [= entero]]

La sintaxis de la propiedad SubItemIndex consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto ColumnHeader.
entero	Un entero que especifica el índice del subelemento asociado al objeto ColumnHeader.
Comentarios

Los subelementos son matrices de cadenas que representan los datos del objeto ListItem cuando se muestran en la vista Informe.

El encabezado de la primera columna siempre tiene una propiedad SubItemIndex establecida a 0 porque el icono pequeño y el texto del objeto ListItem siempre aparecen en la primera columna y se consideran objetos ListItem, no subelementos.

El número de encabezados de columna determina el número de subelementos. El número de encabezados de columna siempre es uno más que el de subelementos.


SubItemIndex (Ejemplo de la propiedad)
Ejemplo de la propiedad SubItemIndex

Este ejemplo agrega tres objetos ColumnHeader a un control ListView. El código agrega varios ListItem y Subitems mediante SubItemIndex para asociar la cadena de SubItems al objeto ColumnHeader. Para probar el ejemplo, coloque un control ListView en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo.

Private Sub Form_Load()

' Comprueba que el control ListView está en la vista Informe.

ListView1.View = lvwReport

' Agrega tres columnas.

ListView1.ColumnHeaders.Add , "Nombre", "Nombre"

ListView1.ColumnHeaders.Add , "Dirección", "Dirección"

ListView1.ColumnHeaders.Add , "Teléfono", "Teléfono"

' Agrega objetos ListItem al control.

Dim itmX As ListItem

' Agrega nombres a la columna 1.

Set itmX= ListView1.ListItems.Add(1, "Mary", "Mary")

' Usa el SubItemIndex para asociar el SubItem al ColumnHeader

' correcto. Use la clave ("Dirección") para

' especificar el ColumnHeader correcto.

itmX.SubItems(ListView1.ColumnHeaders("Dirección").SubItemIndex) _

= "212 Grunge Street"

' Use la clave ColumnHeader para asociar la cadena

' SubItems al ColumnHeader correcto.

itmX.SubItems(ListView1.ColumnHeaders("Teléfono").SubItemIndex) _

= "555-1212"

Set itmX = ListView1.ListItems.Add(2, "Bill", "Bill")

itmX.SubItems(ListView1.ColumnHeaders("Dirección").SubItemIndex) _

= "101 Pacific Way"

itmX.SubItems(ListView1.ColumnHeaders("Teléfono").SubItemIndex) _

= "555-7879"

Set itmX= ListView1.ListItems.Add(3, "Susan", "Susan")

itmX.SubItems(ListView1.ColumnHeaders("Dirección").SubItemIndex) = _

"800 Chicago Street"

itmX.SubItems(ListView1.ColumnHeaders("Teléfono").SubItemIndex) = _

"555-4537"

Set itmX= ListView1.ListItems.Add(4, "Tom", "Tom")

itmX.SubItems(ListView1.ColumnHeaders("Dirección").SubItemIndex) _

= "200 Ocean City"

itmX.SubItems(ListView1.ColumnHeaders("Teléfono").SubItemIndex) = _

"555-0348"

End Sub


View (Propiedad, control ListView)

Devuelve o establece la apariencia de los objetos ListItem de un control ListView.

Sintaxis

objeto.View [= valor]

La sintaxis de la propiedad View consta de las siguientes partes:

Parte	Descripción
objeto	La expresión de objeto que da como resultado un control ListView.
valor	Un entero o una constante que especifica la apariencia del control, como se describe en Valores.
Valores

Los valores admitidos para valor son:

Constante	Valor	Descripción
lvwIcon	0	(Predeterminado) Icon. Cada objeto ListItem se representa por un icono de tamaño completo (estándar) y una etiqueta de texto.
lvwSmallIcon	1	SmallIcon. Cada objeto ListItem se representa por un icono pequeño y una etiqueta de texto que aparece a la derecha del icono. Los elementos aparecen horizontalmente.
lvwList	2	List. Cada objeto ListItem se representa por un icono pequeño y una etiqueta de texto que aparece a la derecha del icono. Los objetos ListItem se organizan verticalmente, cada uno en su propia línea con la información dispuesta en columnas.
lvwReport	3	Report. Cada objeto ListItem se muestra con su icono pequeño y etiquetas de texto. Puede proporcionar información adicional sobre cada objeto ListItem en un subelemento. Los iconos, las etiquetas de texto y la información aparecen en columnas. La columna situada en el extremo izquierdo contiene el icono pequeño, seguido de la etiqueta de texto. Otras columnas adicionales muestran el texto de cada uno de los subelementos del elemento.
Comentarios

Sólo en la vista Icon se utiliza la propiedad LabelWrap para especificar si se produce el ajuste de texto en las etiquetas del objeto ListItem.

En la vista Report puede ocultar los encabezados de columna si establece la propiedad HideColumnHeaders a True. También puede utilizar el evento ColumnClick y las propiedades Sorted, SortOrder y SortKey para ordenar los objetos ListItem o los subelementos cuando un usuario hace clic en un encabezado de columna. El usuario puede cambiar el tamaño de la columna si arrastra el borde derecho de un encabezado de columna hasta obtener el tamaño deseado.


FindItem (Método, control ListView)

Busca y devuelve una referencia a un objeto ListItem de un control ListView.

Sintaxis

objeto.FindItem (cadena, valor, índice, coincidencia)

La sintaxis del método FindItem consta de las siguientes partes:

Parte	Descripción
objeto	Necesario. Una expresión de objeto que da como resultado un control ListView.
cadena	Necesario. Una expresión de cadena que indica el objeto ListItem que debe buscarse.
valor	Opcional. Un entero o una constante que especifica si la cadena coincidirá con la propiedad Text, Subitems o Tag del objeto ListItem, como se describe en Valores.
índice	Opcional. Un entero o una cadena que identifica de forma única a un miembro de una colección de objetos y especifica la ubicación desde la cual debe comenzar la búsqueda. El entero es el valor de la propiedad Index; la cadena es el valor de la propiedad Key. Si no se especifica ningún índice, el valor predeterminado será 1.
coincidencia	Opcional. Un entero o una constante que especifica que se encontrará una coincidencia si la propiedad Text del elemento es la misma que la cadena, como se describe en Valores.
Valores

Los valores admitidos para valor son:

Constante	Valor	Descripción
lvwText	0	(Predeterminado) Hace coincidir la cadena con la propiedad Text de un objeto ListItem.
lvwSubitem	1	Hace coincidir la cadena con cualquier cadena de la propiedad SubItems de un objeto ListItem.
lvwTag	2	Hace coincidir la cadena con cualquier propiedad Tag de un objeto ListItem.
Los valores de coincidencia son:

Constante	Valor	Descripción
lvwWholeWord	0	(Predeterminado) Un entero o una constante que especifica que se producirá una coincidencia si la propiedad Text del elemento comienza por la palabra completa que se busca. Se pasa por alto si el criterio no es texto.
lvwPartial	1	Un entero o una constante que especifica que se producirá una coincidencia si la propiedad Text del elemento comienza la cadena que se busca. Se pasa por alto si el criterio no es texto.
Comentarios

Si especifica Text como criterio de búsqueda, podrá utilizar lvwPartial para que se produzca una coincidencia cuando la propiedad Text del objeto ListItem comience con la cadena que busca. Por ejemplo, para buscar el ListItem cuyo texto sea "Autoexec.bat", utilice:

' Crea una variable ListItem.

Dim itmX As ListItem

' Establece la variable al elemento encontrado.

Set itmX = ListView1.FindItem("Auto",,,lvwpartial)


FindItem (Ejemplo del método)
Ejemplo del método FindItem

Este ejemplo llena un control ListView con el contenido de la tabla Publishers de la base de datos BIBLIO.MDB. Una matriz de controles con tres controles OptionButton también se llena con tres opciones para el método FindItem. Un CommandButton contiene el código para el método FindItem; cuando hace clic en el botón, se le pide que escriba la cadena que desea buscar y el método FindItem busca la cadena en el control ListView. Si la encuentra, el control se desplazará mediante el método EnsureVisible para mostrar el objeto ListItem encontrado. Para probar el ejemplo, coloque un control ListView, una matriz de controles con tres controles OptionButton y un control CommandButton en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en el botón de comando.

Nota   El ejemplo no se ejecutará a menos que agregue una referencia a la Biblioteca de objetos de Microsoft DAO 3.0 mediante el comando Referencias del menú Proyecto.

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es el

' ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

ListView1.BorderStyle = ccFixedSingle  ' Establece la propiedad BorderStyle.

ListView1.View = lvwReport  ' Establece la propiedad View a Report.

Command1.Caption = "&Buscar elemento"

' Etiqueta los controles OptionButton con opciones

' de FindItem.

Option1(0).Caption = "Texto"

Option1(1).Caption = "Subelemento"

Option1(2).Caption = "Etiqueta"

ListView1.FindItem = 0 ' Establece la propiedad FindItem de ListView a Text.

' Llena el control ListView con registros de base de datos.

' Crea variables de objeto para los objetos de acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros como la tabla

' Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Mientras el registro no sea el último, agrega un objeto ListItem.

' Usa la referencia al nuevo objeto para establecer propiedades.

' Establece la propiedad Text como el campo Nombre (myRS!Name).

' Establece SubItem(1) como el campo Dirección (myRS!Address).

' Establece SubItem(7) como el campo Teléfono (myRS!Telephone).

While Not myRs.EOF

Dim itmX As ListItem	' Una variable ListItem.

Dim intCount As Integer	' Una variable de contador.

' Utiliza el método Add para agregar un nuevo

' ListItem y establecer una variable de objeto a la

' nueva referencia. Usa la referencia para establecer propiedades.

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

intCount = intCount + 1 ' Incrementa el contador para la propiedad Tag.

itmX.Tag = "ListItem " & intCount  ' Establece Tag con contador.

' Si el campo Dirección no es Null, establece

' SubItem 1 a Dirección.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address) ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece

' SubItem 2 a Teléfono.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext	' Pasa al registro siguiente.

Wend

End Sub

Private Sub Command1_Click()

' Método FindItem.

' Crea una variable entera llamada

' intSelectedOption para almacenar el índice del

' botón seleccionado

' Crea una variable de cadena llamada strFindMe. Usa

' el InputBox para almacenar la cadena que se debe

' encontrar en la variable.

' Usa el método FindItem para buscar la cadena. Option1

' se usa para cambiar el argumento FindItem que

' determina dónde buscar.

Dim intSelectedOption as Integer

Dim strFindMe As String

If Option1(0).Value = True then

strFindMe = InputBox("Buscar en " & Option1(0).Caption)

intSelectedOption = lvwText

End If

If Option1(1).Value = True then

strFindMe = InputBox("Buscar en " & Option1(1).Caption)

intSelectedOption = lvwSubItem

End If

If Option1(2).Value = True then

strFindMe = InputBox("Buscar en " & Option1(2).Caption)

intSelectedOption = lvwTag

End If

' El método FindItem devuelve una referencia al

' elemento hallado, por lo que deberá crear una

' variable de objeto y establecer el elemento

' hallado como ella.

Dim itmFound As ListItem	' Variable FoundItem.

Set itmFound = ListView1. _

FindItem(strFindMe, intSelectedOption, , lvwPartial)

' Si no se encuentra ningún ListItem, informa al usuario y

' sale. Si se encuentra un ListItem, se desplaza al

' control con el método EnsureVisible y

' selecciona el ListItem.

If itmFound Is Nothing Then  ' Si no hay coincidencia, informa al usuario y sale.

MsgBox "No se ha encontrado ninguna coincidencia"

Exit Sub

Else

 itmFound.EnsureVisible ' Desplaza ListView para mostrar el ListItem hallado.

 itmFound.Selected = True	' Selecciona el ListItem.

' Devuelve el enfoque al control para ver la selección.

 ListView1.SetFocus

End If

End Sub

Private Sub ListView1_LostFocus()

' Cuando el control pierde el enfoque, reinicia la

' propiedad Selected de cada ListItem a False.

Dim i As Integer

For i = 1 to ListView1.ListItems.Count

ListView1.ListItems.Item(i).Selected = False

Next i

End Sub


GetFirstVisible (Método, control ListView)

Devuelve una referencia al primer objeto ListItem visible en el área interna de un control ListView.

Sintaxis

objeto.GetFirstVisible()

El marcador de posición objeto representa una expresión de objeto que da como resultado un control ListView.

Comentarios

Un control ListView puede contener mostrar más objetos ListItem de los que pueden verse en el área interna del control ListView. Puede utilizar la referencia devuelta por el método GetFirstVisible para determinar el primer objeto ListItem visible en la vista List o Report.


GetFirstVisible (Ejemplo del método)
Ejemplo del método GetFirstVisible

Este ejemplo llena un control ListView con el contenido de la tabla Publishers de la base de datos BIBLIO.MDB. Cuando hace clic en el control CommandButton, aparece el texto del primer elemento visible. Haga clic en los encabezados de columna para cambiar la propiedad SortKey y vuelva a hacer clic en CommandButton. Para probar el ejemplo, coloque un control ListView y otro CommandButton en el formulario y pegue el código en la sección Declaraciones del formulario.

Nota   El ejemplo no se ejecutará a menos que agregue una referencia a la Biblioteca de objetos de Microsoft DAO 3.0 mediante el comando Referencias del menú Herramientas. Ejecute el ejemplo.

Private Sub Command1_Click()

' Crea una variable ListItem y establece la variable

' al objeto devuelto por el método GetFirstVisible.

' Usa la referencia para mostrar el texto del ListItem.

Dim itmX As ListItem

Set itmX = ListView1.GetFirstVisible

MsgBox itmX.Text

End Sub

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es el

' ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

ListView1.BorderStyle = ccFixedSingle ' Establece la propiedad BorderStyle.

' Crea variables de objeto para los objetos de acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros a la tabla

' Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Crea una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un

' objeto ListItem.

' Usa el campo Nombre para el texto del objeto ListItem.

' Usa el campo Dirección para el subelemento(1) del

' objeto ListItem.

' Usa el campo Teléfono para el subelemento(2) del

' objeto ListItem.

While Not myRs.EOF

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

' Si el campo Dirección no es Null, establece

' SubItem 1 como el campo.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address) ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece el

' SubItem 2 como el campo.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext	' Va al siguiente registro.

Wend

ListView1.View = lvwReport	' Pasa al registro siguiente.

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)

ListView1.SortKey = ColumnHeader.Index - 1

ListView1.Sorted = True

End Sub


SubItems (Propiedad, control ListView)

Devuelve o establece una matriz de cadenas (un subelemento) que representa los datos del objeto ListItem de un control ListView.

Sintaxis

objeto.SubItems(índice) [= cadena]

La sintaxis de la propiedad SubItems consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto ListItem.
índice	Un entero que identifica un subelemento para el ListItem especificado.
cadena	Texto que describe el subelemento.
Comentarios

Los subelementos son matrices de cadenas que representan los datos del objeto ListItem y se muestran en la vista Report. Por ejemplo, podría mostrar el tamaño de archivo y la fecha de la última modificación de un archivo.

Un objeto ListItem puede tener cualquier número de cadenas de datos de elementos asociados (subelementos), pero cada objeto ListItem debe tener el mismo número de subelementos.

Hay encabezados de columna correspondientes definidos para cada subelemento.

No puede agregar elementos directamente a la matriz de subelementos. Utilice el método Add de la colección ColumnHeaders para agregar subelementos.


ListView (Constantes del control)
Constantes del control ListView

Constantes del control ListView

Constante	Valor	Descripción
lvwIcon	0	(Predeterminado) Icon. Cada objeto ListItem se representa por un icono de tamaño completo (estándar) y una etiqueta de texto.
lvwSmallIcon	1	SmallIcon. Cada objeto ListItem se representa por un icono pequeño y una etiqueta de texto que aparece a la derecha del icono. Los elementos aparecen horizontalmente.
LvwList	2	List. Cada ListItem se representa por un icono pequeño y una etiqueta de texto que aparece a la derecha del icono. Cada ListItem aparece verticalmente y en su propia línea con la información dispuesta en columnas.
lvwReport	3	Report. Cada objeto ListItem se muestra con su icono pequeño y etiquetas de texto. Puede proporcionar información adicional sobre cada objeto ListItem. Los iconos, las etiquetas de texto y la información aparecen en columnas. La columna situada en el extremo izquierdo contiene el icono pequeño, seguido de la etiqueta de texto. Otras columnas adicionales muestran el texto de cada uno de los subelementos del elemento.
Constantes de ListArrange

Constante	Valor	Descripción
lvwNone	0	(Predeterminado) Ninguno.
lvwAutoLeft	1	Izquierda. Los objetos ListItem se alinean a lo largo de la parte izquierda del control.
lvwAutoTop	2	Superior. Los objetos ListItem se alinean a lo largo de la parte superior del control.
Constante de ListColumnAlignment

Constante	Valor	Descripción
lvwColumnLeft	0	(Predeterminado) Izquierda. El texto está alineado a la izquierda.
lvwColumnRight	1	Derecha. El texto está alineado a la derecha.
lvwColumnCenter	2	Centro. El texto está centrado.
Constantes de ListLabelEdit

Constante	Valor	Descripción
lvwAutomatic	0	(Predeterminado) Automático. El evento BeforeLabelEdit se genera cuando el usuario hace clic en la etiqueta de un nodo seleccionado.
lvwManual	1	Manual. El evento BeforeLabelEdit sólo se genera cuando se invoca el método StartLabelEdit.
Constantes de ListSortOrder

Constante	Valor	Descripción
lvwAscending	0	(Predeterminado) Orden ascendente. Ordena desde el principio del alfabeto (A-Z), la primera fecha o el número más bajo.
lvwDescending	1	Orden descendente. Ordena desde el final del alfabeto (Z-A), la última fecha o el número más alto.
Constantes de ListFindItemWhere

Constante	Valor	Descripción
lvwText	0	(Predeterminado) Texto. Hace coincidir la cadena con la propiedad Text de un objeto ListItem.
lvwSubItem	1	Subelemento. Hace coincidir la cadena con cualquier cadena de la propiedad SubItems de un objeto ListItem.
lvwTag	2	Etiqueta. Hace coincidir la cadena con la propiedad Tag de cualquier objeto ListItem.
Constantes de ListFindItemHow

Constante	Valor	Descripción
lvwWholeWord	0	(Predeterminado) Palabra completa. Establece la búsqueda de modo que se produzca una coincidencia si la propiedad Text del elemento comienza por la palabra completa que se busca. Se pasa por alto si el criterio no es texto.
lvwPartial	1	Parcial. Establece la búsqueda de modo que se produzca una coincidencia si la propiedad Text del elemento comienza por la cadena que se busca. Se pasa por alto si el criterio no es texto.


Sorted (Propiedad, control ListView)

Devuelve o establece un valor que determina si se ordenan los objetos ListItem de un control ListView.

Sintaxis

objeto.Sorted [= booleano]

La sintaxis de la propiedad Sorted consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
booleano	Una expresión booleana que especifica si se ordenan los objetos ListItem, como se describe en Valores.
Valores

Los valores admitidos para booleano son:

Valor	Descripción
True	Los elementos de la lista se ordenan alfabéticamente, de acuerdo con la propiedad SortOrder.
False	Los elementos de la lista no se ordenan.
Comentarios

La propiedad Sorted debe establecerse a True para que los valores de las propiedades SortOrder y SortKey surtan efecto.

Cada vez que cambian las coordenadas de un ListItem, la propiedad Sorted se convierte en False.


ItemClick (Evento)

Se produce cuando se hace clic en un objeto ListItem de un control ListView.

Sintaxis

Private Sub objeto_ItemClick(ByVal elemento As ListItem)

La sintaxis del evento ItemClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control ListView.
elemento	El objeto ListItem en el que se ha hecho clic.
Comentarios

Use este evento para determinar en qué ListItem se hizo clic. Este evento se desencadena antes que el evento Click. El evento Click estándar se genera si se hace clic con el mouse (ratón) en cualquier parte del control ListView. El evento ItemClick sólo se genera cuando se hace clic con el mouse en el texto o en la imagen de un objeto ListItem.


ItemClick (Ejemplo del evento)
Ejemplo del evento ItemClick

Este ejemplo llena un control ListView con el contenido de la tabla Publishers de la base de datos BIBLIO.MDB. Cuando se hace clic en un objeto ListItem, el código comprueba el valor de la propiedad Index. Si el valor es menos que 15, no ocurre nada. Si el valor es mayor que 15, el objeto ListItem se atenúa. Para probar el ejemplo, coloque un control ListView en un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y haga clic en uno de los elementos.

Private Sub ListView1_ItemClick(ByVal Item As ListItem)

Select Case Item.Index

Case Is = <15

Exit Sub

Case Is => 15

' Alterna la propiedad Ghosted.

Item.Ghosted = Abs(Item.Ghosted) - 1

End Select

End Sub

Private Sub Form_Load()

' Crea una variable de objeto para el objeto ColumnHeader.

Dim clmX As ColumnHeader

' Agrega ColumnHeaders. El ancho de las columnas es el

' ancho del control dividido entre el número de

' objetos ColumnHeader.

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Compañía", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Dirección", ListView1.Width / 3)

Set clmX = ListView1.ColumnHeaders. _

Add(, , "Teléfono", ListView1.Width / 3)

ListView1.BorderStyle = ccFixedSingle ' Establece la propiedad BorderStyle.

' Crea variables de objeto para los objetos de acceso a datos.

Dim myDb As Database, myRs As Recordset

' Establece la base de datos BIBLIO.MDB.

Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")

' Establece el conjunto de registros como la tabla

' Publishers.

Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)

' Crea una variable para agregar objetos ListItem.

Dim itmX As ListItem

' Mientras el registro no sea el último, agrega un

' objeto ListItem.

' Usa el campo Nombre para el texto del objeto ListItem.

' Usa el campo Dirección para el SubItem(1) del objeto

' ListItem.

' Usa el campo Teléfono para el SubItem(2) del

' objeto ListItem

While Not myRs.EOF

Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))

' Si el campo Dirección no es Null, establece

' SubItem 1 como el campo.

If Not IsNull(myRs!Address) Then

itmX.SubItems(1) = CStr(myRs!Address) ' Campo Dirección.

End If

' Si el campo Teléfono no es Null, establece el

' SubItem 2 como el campo.

If Not IsNull(myRs!Telephone) Then

itmX.SubItems(2) = myRs!Telephone  ' Campo Teléfono.

End If

myRs.MoveNext ' Va al registro siguiente.

Wend

ListView1.View = lvwReport	' Establece View a Report.

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)

ListView1.SortKey = ColumnHeader.Index - 1

ListView1.Sorted = True

End Sub


ProgressBar (Control)

El control ProgressBar muestra la evolución de una operación prolongada llenando un rectángulo en bloques de izquierda a derecha.

Sintaxis

ProgressBar

Comentarios

•	El control ProgressBar muestra la evolución de una operación hacia su término.

Un control ProgressBar tiene un intervalo y una posición actual. El intervalo representa la duración completa de la operación. La posición actual representa el progreso de la aplicación para completar la operación. Las propiedades Max y Min establecen los límites del intervalo. La propiedad Value especifica la posición actual dentro del intervalo. Debido al uso de segmentos completos para llenar el control, la cantidad llenada sólo brinda una aproximación al valor actual de la propiedad Value. Basándose en el tamaño del control, la propiedad Value determina el momento de llenar el segmento siguiente.

Las propiedades Height y Width del control ProgressBar determinan el número y el tamaño de los segmentos que lo llenan. Cuantos más segmentos se usen, mayor será la precisión con que el control reflejará la evolución de la operación. Para incrementar el número de segmentos mostrados, reduzca el valor de la propiedad Height o incremente el de Width. El valor de la propiedad BorderStyle también afecta al número y al tamaño de los segmentos. Para ajustarse al borde, el tamaño de los segmentos se reduce.

Puede usar la propiedad Align con el control ProgressBar para situarlo automáticamente al principio o al final del formulario.

Sugerencia   Para ajustar el tamaño del segmento para que el incremento del progreso se acerque a los valores del progreso real, haga que el control ProgressBar sea al menos 12 veces más ancho que alto.

En el ejemplo siguiente se muestra la forma de utilizar un control ProgressBar, llamado ProgressBar1, para mostrar la evolución de una operación prolongada en una matriz grande. Coloque un control CommandButton y un control ProgressBar en un formulario. La propiedad Align del código de ejemplo coloca el control ProgressBar en el borde inferior del formulario. El control ProgressBar no muestra ningún texto.

Private Sub Command1_Click()

Dim Counter As Integer

Dim Workarea(250) As String

ProgressBar1.Min = LBound(Workarea)

ProgressBar1.Max = UBound(Workarea)

ProgressBar1.Visible = True

'Establece Min como valor de Value.

ProgressBar1.Value = ProgressBar1.Min

'Bucle para recorrer la matriz.

For Counter = LBound(Workarea) To UBound(Workarea)

'Establece los valores iniciales de cada elemento de la matriz.

Workarea(Counter) = "Valor inicial" & Counter

ProgressBar1.Value = Counter

Next Counter

ProgressBar1.Visible = False

ProgressBar1.Value = ProgressBar1.Min

End Sub

Private Sub Form_Load()

ProgressBar1.Align = vbAlignBottom

ProgressBar1.Visible = False

Command1.Caption = "Inicializar matriz"

End Sub

Nota de distribución   El control ProgressBar forma parte de un grupo de controles ActiveX que podrá encontrar en el archivo COMCTL32.OCX. Para utilizar el control ProgressBar en una aplicación, debe agregar el archivo COMCTL32.OCX al proyecto. Al distribuir la aplicación, instale el archivo COMCTL32.OCX en el directorio System o System32 de Microsoft Windows. Si desea más información acerca de la forma de agregar un control ActiveX a un proyecto, consulte el Manual del programador.


Slider (Control)

Un control Slider es una ventana que contiene un control deslizante y unas marcas opcionales. Puede mover el control deslizante si lo arrastra, hace clic con el mouse (ratón) en uno de sus lados o a través del teclado.

Sintaxis

Slider

Comentarios

Los controles Slider son útiles cuando desea seleccionar un valor discreto o un conjunto de valores consecutivos de un intervalo. Por ejemplo, puede utilizar un control Slider para establecer el tamaño de una imagen mostrada moviendo el control deslizante hasta una marca determinada, en lugar de escribir un número. Para seleccionar un intervalo de valores, establezca la propiedad SelectRange a True y programe el control de modo que seleccione un intervalo cuando esté presionada la tecla MAYÚSCULAS.

El control Slider puede orientarse horizontal o verticalmente.

Nota de distribución   Para utilizar el control Slider en una aplicación, debe agregar el archivo COMCTL32.OCX al proyecto. Al distribuir la aplicación, instale el archivo COMCT32.OCX en el directorio System o System32 de Microsoft Windows del usuario. Para obtener más información acerca de cómo agregar un control ActiveX a un proyecto, consulte el Manual del programador.


LargeChange, SmallChange (Propiedades, control Slider)

•	La propiedad LargeChange establece el número de marcas que se desplazará el control deslizante al presionar las teclas RE PÁG o AV PÁG o al hacer clic con el mouse a la izquierda o a la derecha de dicho control.

•	La propiedad SmallChange establece el número de marcas que se desplazará el control deslizante al presionar las teclas FLECHA IZQUIERDA o FLECHA DERECHA.

Sintaxis

objeto.LargeChange = número

objeto.SmallChange = número

Las sintaxis de las propiedades LargeChange y SmallChange constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Slider.
Número	Un entero largo que especifica el número de marcas que se desplazará el control deslizante.
Comentarios

El valor predeterminado de la propiedad LargeChange es 5. El valor predeterminado de la propiedad SmallChange es 1.


LargeChange y SmallChange (Ejemplo de las propiedades)
Ejemplo de las propiedades LargeChange, SmallChange

En este ejemplo se hace coincidir el ancho de un control TextBox con el de un control Slider. Mientras la propiedad Value del control Slider sea superior a un determinado valor, el ancho del control TextBox coincidirá con el valor del control Slider. Las propiedades SmallChange y LargeChange dependen de la propiedad Max del control Slider. Para probar el ejemplo, coloque un control Slider y un control TextBox en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y presione las teclas AV PÁG, RE PÁG, FLECHA IZQUIERDA y FLECHA DERECHA.

Private Sub Form_Load()

Text1.Width = 4500	' Establece una anchura mínima

' para el TextBox.

Slider1.Left = Text1.Left ' Alinea el Slider y el

 ' TextBox.

' Hace coincidir los dos anchos.

Slider1.Max = Text1.Width

' Coloca el Slider por debajo del Textbox.

Slider1.Top = Text1.Top + Text1.Height + 50

' Establece TickFrequency a una fracción del valor

' de Max.

Slider1.TickFrequency = Slider1.Max * 0.1

' Establece LargeChange y SmallChange a una

' fracción de Max.

Slider1.LargeChange = Slider1.Max * 0.1

Slider1.SmallChange = Slider1.Max * 0.01

End Sub

Private Sub Slider1_Change()

' Si el tamaño del Slider es menos de 1/3 del

' TextBox, no hay cambio.

' De lo contrario, se hace coincidir el ancho del

' TextBox con el valor de Slider.

If Slider1.Value > Slider1.Max / 3 Then

Text1.Width = Slider1.Value

End If

End Sub


Orientation (Propiedad, control Slider)

Establece un valor que determina si el control Slider se orienta horizontal o verticalmente.

Sintaxis

objeto.Orientation = número

La sintaxis de la propiedad Orientation consta de las siguientes partes:

Parte	Description
objeto	Una expresión de objeto que da como resultado un control Slider.
número	Una constante o un valor que especifica la orientación, como se describe en Valores.
Valores

Los valores admitidos para número son:

Constante	Valor	Descripción
sldHorizontal	0	(Predeterminado) Horizontal. El control deslizante se desplaza horizontalmente y las marcas pueden colocarse en el borde superior, en el inferior, en ambos o en ninguno.
sldVertical	1	Vertical. El control deslizante se desplaza verticalmente y las marcas pueden colocarse en el borde izquierdo, en el derecho, en ambos o en ninguno.


Orientation (Ejemplo de la propiedad)
Ejemplo de la propiedad Orientation

En este ejemplo se alterna la orientación de un control Slider de un formulario. Para probar el ejemplo, coloque un control Slider en un formulario, pegue el código en la sección Declaraciones de éste y después ejecute el ejemplo. Haga clic en el formulario para alternar la orientación del control Slider.

Private Sub Form_Click()

If Slider1.Orientation = 0 Then

Slider1.Orientation = 1

Else

Slider1.Orientation = 0

End If

End Sub


Scroll (Evento, control Slider)

Se produce al desplazar el control deslizante de un control Slider, ya sea haciendo clic en el control o mediante comandos de teclado.

Sintaxis

Private Sub objeto_Scroll( )

El marcador de posición objeto representa una expresión de objeto que da como resultado un control Slider.

Comentarios

El evento Scroll se produce antes del evento Click.

El evento Scroll devuelve continuamente el valor de la propiedad Value mientras se va moviendo el control deslizante. Puede utilizar este evento para realizar cálculos y manipular controles que deban estar coordinados con los cambios realizados en el control Slider. Por el contrario, utilice el evento Change cuando desee que una actualización se produzca sólo una vez, después de que varíe la propiedad Value de un control Slider.

Nota   Evite el uso de funciones o instrucciones MsgBox con este evento.


SelectRange (Propiedad)

Establece un valor que determina si un control Slider puede tener un intervalo seleccionado.

Sintaxis

objeto.SelectRange = booleano

La sintaxis de la propiedad SelectRange consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Slider.
booleano	Una expresión booleana que determina si el control Slider puede o no tener un intervalo seleccionado, como se describe en Valores.
Valores

Los valores admitidos para booleano son:

Valor	Descripción
True	El control Slider puede tener un intervalo seleccionado.
False	El control Slider no puede tener un intervalo seleccionado.
Comentarios

Si establece SelectRange a False, el valor de la propiedad SelStart será el mismo que el de la propiedad Value. Al establecer la propiedad SelStart se modifica también la propiedad Value y viceversa, lo que se refleja en la posición del control deslizante en el control. La modificación de SelLength cuando el valor de SelectRange es False no tiene ningún efecto.


SelectRange (Ejemplo de la propiedad)
Ejemplo de la propiedad SelectRange

En este ejemplo se permite al usuario seleccionar un intervalo cuando la tecla MAYÚSCULAS se mantiene presionada. Para probar el ejemplo, coloque un control Slider en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y seleccione un intervalo presionando la tecla MAYÚSCULAS y arrastrando el mouse o haciendo clic en el control Slider.

Private Sub Form_Load()

'Establece los valores del control Slider

Slider1.Max = 20

End Sub

Private Sub Slider1_MouseDown(Button As Integer, MAYÚSCULA As Integer, x As Single, y As Single)

If Shift = 1 Then 	' Si MAYÚSCULAS está presionada,

Slider1.SelectRange = True 	' activa SelectRange

Slider1.SelStart = Slider1.Value	' Establece

' SelStart

Slider1.SelLength = 0	' Establece el SelLength previo

' a 0 (si hay alguno).

End If

End Sub

Private Sub Slider1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

If Shift = 1 Then

' Si el usuario selecciona hacia atrás, se producirá un

' error.

On Error Resume Next

' Establece SelLength con SelStart y el valor

' actual.

Slider1.SelLength = Slider1.Value - Slider1.SelStart

Else

Slider1.SelectRange = False	' Si el usuario

' suelta MAYÚSCULAS.

End If

End Sub


SelLength, SelStart (Propiedades, control Slider)

•	SelLength devuelve o establece la longitud de un intervalo seleccionado en un control Slider.

•	SelStart devuelve o establece el inicio de un intervalo seleccionado en un control Slider.

Sintaxis

objeto.SelLength [= valor]

objeto.SelStart [= valor]

Las sintaxis de las propiedades SelLength y SelStart constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Slider.
valor	Una valor comprendido entre los de las propiedades Min y Max.
Comentarios

Las propiedades SelLength y SelStart se utilizan conjuntamente para seleccionar un intervalo de valores contiguos de un control Slider. El control Slider tiene así la ventaja adicional de ser una analogía visual del intervalo de valores posibles.

La propiedad SelLength no puede ser menor que 0 y la suma de SelLength y SelStart no puede ser superior al valor de la propiedad Max.


SelLength, SelStart (Ejemplo de las propiedades)
Ejemplo de las propiedades SelLength, SelStart

En este ejemplo se selecciona un intervalo en un control Slider. Para probar el ejemplo, coloque un control Slider en un formulario con tres controles TextBox llamados Text1, Text2 y Text3. El valor de la propiedad SelectRange del control Slider debe ser True. Pegue el código en la sección Declaraciones del formulario y ejecute el ejemplo. Al mantener presionada la tecla MAYÚSCULAS puede seleccionar un intervalo en el control deslizante y los distintos valores se mostrarán en los cuadros de texto.

Private Sub Form_Load()

' Se asegura de que SelectRange es True para

' permitir la selección.

Slider1.SelectRange = True

End Sub

Private Sub Slider1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

If Shift = 1 Then ' Si MAYÚSCULAS está presionada,

' empieza a seleccionar.

Slider1.ClearSel	' Borra la selección anterior.

Slider1.SelStart = Slider1.Value

Text2.Text = Slider1.SelStart   ' Muestra el principio del

' intervalo en el cuadro de texto.

Else

Slider1.ClearSel	' Borra la selección anterior.

End If

End Sub

Private Sub Slider1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

' Cuando MAYÚSCULAS está presionada y SelectRange

' es True, se desencadena este evento.

If Shift = 1 And Slider1.SelectRange = True Then

' Se asegura de que el valor actual es mayor que

' SelStart o se producirá un error: SelLength no

' puede ser negativa.

If Slider1.Value >= Slider1.SelStart Then

Slider1.SelLength = Slider1.Value - Slider1.SelStart

Text1.Text = Slider1.Value  ' Para ver el final del

' intervalo.

' Text3 es la diferencia entre los valores final e inicial.

Text3.Text = Slider1.SelLength

End If

End If

End Sub


TickFrequency (Propiedad)

Devuelve o establece la frecuencia de las marcas de un control Slider en relación con su intervalo. Por ejemplo, si el intervalo es 100 y la propiedad TickFrequency tiene el valor 2, habrá una marca cada dos incrementos del intervalo.

Sintaxis

objeto.TickFrequency [= número]

La sintaxis de la propiedad TickFrequency consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Slider.
número	Una expresión numérica que especifica la frecuencia de las marcas.


TickFrequency (Ejemplo de la propiedad)
Ejemplo de la propiedad TickFrequency

En este ejemplo se hace coincidir el ancho de un control TextBox con el de un control Slider. Mientras la propiedad Value del control Slider sea superior a un determinado valor, el ancho del control TextBox coincidirá con el valor del control Slider. La propiedad TickFrequency depende de la propiedad Max del control Slider. Para probar el ejemplo, coloque un control Slider y un control TextBox en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic varias veces en el control Slider.

Private Sub Form_Load()

Text1.Width = 4500  ' Establece un ancho mínimo para el control TextBox.

Slider1.Left = Text1.Left ' Alinea el Slider y el TextBox.

' Hace coincidir los dos anchos.

Slider1.Max = Text1.Width

' Coloca el Slider por debajo del TextBox.

Slider1.Top = Text1.Top + Text1.Height + 50

' Establece TickFrequency a una fracción del valor

' de Max.

Slider1.TickFrequency = Slider1.Max * 0.1

' Establece LargeChange y SmallChange a una

' fracción de Max.

Slider1.LargeChange = Slider1.Max * 0.1

Slider1.SmallChange = Slider1.Max * 0.01

End Sub

Private Sub Slider1_Change()

' Si el tamaño del Slider es menos de 1/3 del

' TextBox, no hay cambio.

' De lo contrario, se hace coincidir el ancho del

' TextBox con el valor del Slider.

If Slider1.Value > Slider1.Max / 3 Then

Text1.Width = Slider1.Value

End If

End Sub


TickStyle (Propiedad)

Devuelve o establece el estilo (o ubicación) de las marcas mostradas en un control Slider.

Sintaxis

objeto.TickStyle [= número]

La sintaxis de la propiedad TickStyle consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Slider.
número	Una constante o un entero que especifica el valor de la propiedad TickStyle, como se describe en Valores.
Valores

Los valores admitidos para número son:

Constante	Valor	Descripción
sldBottomRight	0	(Predeterminado) Abajo y derecha. Las marcas se colocan a lo largo del borde inferior del control Slider si éste está orientado horizontalmente o a lo largo del borde derecho si la orientación es vertical.
sldTopLeft	1	Arriba e izquierda. Las marcas se colocan a lo largo del borde superior del control Slider si éste está orientado horizontalmente o a lo largo del borde izquierdo si la orientación es vertical.
sldBoth	2	Ambos. Las marcas se colocan a ambos lados del control Slider.
sldNoTicks	3	Ninguno. No se muestran marcas en el control Slider.


TickStyle (Ejemplo de la propiedad)
Ejemplo de la propiedad TickStyle

Este ejemplo permite ver los distintos estilos de marcas disponibles en una lista desplegable. Para probar el ejemplo, coloque un control Slider y un control ComboBox en un formulario. Pegue el código en la sección Declaraciones del formulario y ejecute el ejemplo. Haga clic en el control ComboBox para cambiar el valor de la propiedad TickStyle.

Private Sub Form_Load()

With combo1

.AddItem "Abajo/Derecha"

.AddItem "Arriba/Izquierda"

.AddItem "Ambos"

.AddItem "Ninguno"

.ListIndex = 0

End With

End Sub

Private Sub combo1_Click()

Slider1.TickStyle = combo1.ListIndex

End Sub


ClearSel (Método)

Borra la selección actual de un control Slider.

Sintaxis

objeto.ClearSel

El marcador de posición objeto representa una expresión de objeto que da como resultado un control Slider.

Comentarios

Este método establece la propiedad SelStart al valor de la propiedad Value y asigna 0 a la propiedad SelLength.


GetNumTicks (Método)

Devuelve el número de marcas entre las propiedades Min y Max de un control Slider.

Sintaxis

objeto.GetNumTicks

El marcador de posición objeto representa una expresión de objeto que da como resultado un control Slider.

Comentarios

Para cambiar el número de marcas, restablezca las propiedades Min, Max o TickFrequency.


GetNumTicks (Ejemplo del método)
Ejemplo del método GetNumTicks

En este ejemplo se muestra el número actual de marcas de un control Slider y luego se incrementa en 10 la propiedad Max. Para probar el ejemplo, coloque un control Slider en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el control Slider para obtener el número de marcas. Cada vez que haga clic en el control se incrementará el número de marcas.

Private Sub Slider1_Click()

MsgBox Slider1.GetNumTicks

Slider1.Max = Slider1.Max + 10

End Sub


Constantes de Slider

Constantes de Orientation

Constante	Valor	Descripción
sldHorizontal	0	Orientación horizontal.
sldVertical	1	Orientación vertical.
Constantes de Tickstyle

Constante	Valor	Descripción
sldBottomRight	0	Abajo y derecha. Las marcas se colocan a lo largo del borde inferior del control Slider si éste está orientado horizontalmente o a lo largo del borde derecho si la orientación es vertical.
SldTopLeft	1	Arriba e izquierda. Las marcas se colocan a lo largo del borde superior del control Slider si éste está orientado horizontalmente o a lo largo del borde izquierdo si la orientación es vertical.
SldBoth	2	Ambos. Las marcas se colocan a ambos lados del control Slider.
sldNoTicks	3	Ninguno. No se muestran marcas en el control Slider.


StatusBar (Control)

El control StatusBar proporciona una ventana, normalmente ubicada en la parte inferior de un formulario primario, a través de la cual una aplicación puede mostrar varios tipos de datos de estado. El control StatusBar puede dividirse hasta en un máximo de 16 objetos Panel contenidos en una colección Panels.

Sintaxis

StatusBar

Comentarios

Un control StatusBar está formado por objetos Panel, cada uno de los cuales puede contener texto o una imagen. Entre las propiedades para controlar la apariencia de cada panel se encuentran Width, Alignment (alineamiento del texto y las imágenes) y Bevel. Además, puede utilizar uno de los siete valores de la propiedad Style para mostrar automáticamente datos habituales, como la fecha, la hora y los estados del teclado.

En tiempo de diseño puede crear paneles, personalizar su apariencia y establecer sus valores en la ficha Panel de la Hoja de propiedades del control StatusBar. En tiempo de ejecución, los objetos Panel pueden volverse a configurar para reflejar distintas funciones, dependiendo del estado de la aplicación. Si desea más información acerca de las propiedades, eventos y métodos de los objetos Panel, vea los temas Panel (Objeto) y Panels (Colección).

Normalmente, el control StatusBar muestra información sobre un objeto visible en el formulario, sus componentes o información de contexto relacionada con su funcionamiento. El control StatusBar, junto con otros controles como Toolbar, proporciona las herramientas necesarias para crear una interfaz sencilla y rica en información.

Nota de distribución   El control StatusBar forma parte de los controles personalizados que se encuentran en el archivo COMCTL32.OCX. Para usar el control StatusBar en su aplicación, debe agregar el archivo COMCTL32.OCX a su proyecto. Al distribuir su aplicación, instale el archivo COMCTL32.OCX en el directorio SYSTEM de Microsoft Windows del usuario. Para obtener más información acerca de cómo agregar un control personalizado a un proyecto, consulte el Manual del programador.


StatusBar (Constantes del control)
Constantes del control StatusBar

Constantes de Style (StatusBar)

Constante	Valor	Descripción
sbrNormal	0	Normal. El control StatusBar se divide en paneles.
sbrSimple	1	Simple. El control StatusBar sólo tiene un panel grande y texto simple.
Constantes de Alignment (Panel)

Constante	Valor	Descripción
sbrLeft	0	Texto a la izquierda.
sbrCenter	1	Texto centrado.
sbrRight	2	Texto a la derecha.
Constantes de AutoSize (Panel)

Constante	Valor	Descripción
sbrNoAutoSize	0	Sin ajuste automático de tamaño.
sbrSpring	1	El espacio adicional se divide entre los paneles.
sbrContents	2	Se ajusta al contenido.
Constantes de Bevel (Panel)

Constante	Valor	Descripción
sbrNoBevel	0	Sin bisel.
sbrInset	1	Bisel hundido hacia adentro.
sbrRaised	2	Bisel hacia afuera en relieve.
Constantes de Style (Panel)

Constante	Valor	Descripción
sbrText	0	Muestra texto y mapa de bits.
sbrCaps	1	Muestra el estado de Bloq Mayús.
sbrNum	2	Muestre el estado de Bloq Núm.
sbrIns	3	Muestra el estado de Insert.
sbrScrl	4	Muestra el estado de Bloq Despl.
sbrTime	5	Muestra la hora con el formato del sistema.
sbrDate	6	Muestra la fecha con el formato del sistema.
sbrKana	7	Kana. Muestra las letras KANA en negrita cuando Bloqu Despl está activado y en modo normal cuando está desactivado.


Panels (Colección)

Una colección Panels contiene un conjunto de objetos Panel.

Sintaxis

statusbar.Panels(índice)

La sintaxis de la colección Panels consta de las siguientes partes.

Parte	Descripción
statusbar	Una expresión de objeto que da como resultado un control StatusBar.
índice	Un entero o una cadena que identifica de forma única el objeto en la colección. El entero será el valor de la propiedad Index del objeto Panel deseado; la cadena es el valor de la propiedad Key del objeto Panel deseado.
La colección Panels es una matriz de objetos Panel que empieza la numeración por 1. De forma predeterminada, los controles StatusBar tienen un objeto Panel. Por ello, si desea tener tres paneles, sólo deberá agregar dos objetos a la colección Panels.

La propiedad Panels devuelve una referencia a una colección Panels.

Para agregar un objeto Panel a una colección, utilice el método Add para objetos Panel en tiempo de ejecución o la ficha de Panel en la Página de propiedades del  control StatusBar en tiempo de diseño.

El acceso a cada elemento de la colección puede hacerse por su propiedad Index o con la propiedad Key. Por ejemplo, para obtener una referencia al tercer objeto Panel de una colección, puede utilizar la sintaxis siguiente:

Dim pnlX As Panel

Set pnlX = StatusBar1.Panels(3)	' Referencia por número de índice.

' o bien

Set pnlX = StatusBar1.Panels("Third")	' Referencia por clave única.

' o bien

Set pnlX = StatusBar1.Panels.Item(3)	' Uso del método Item.


Panel (Objeto)

Un objeto Panel representa un panel individual de la colección Panels de un control StatusBar.

Comentarios

Un objeto Panel puede contener texto y un mapa de bits que pueden utilizarse para reflejar el estado de una aplicación.

Utilice la colección Panels para recuperar, agregar o quitar un único objeto Panel.

Para cambiar la apariencia del panel, cambie las propiedades del objeto Panel. Para modificar las propiedades en tiempo de diseño, puede cambiar las propiedades del objeto Panel en la ficha Paneles de la Página de propiedades. En tiempo de ejecución, puede cambiar las propiedades del objeto Panel en el código.


Add (Método, colección Panels)

Agrega un objeto Panel a una colección Panels y devuelve una referencia al objeto Panel creado.

Sintaxis

objeto.Add(índice, clave, texto, estilo, imagen)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado una colección Panels.
índice	Opcional. Un entero que especifica la posición en la que se insertará el objeto Panel. Si no se especifica índice, el Panel se agregará al final de la colección Panels.
clave	Opcional. Una cadena única que identifica el objeto Panel. Utilice clave para obtener un objeto Panel específico. Es equivalente a asignar la propiedad Key del nuevo objeto Panel después de que se haya agregado el proyecto.
texto	Opcional. Una cadena que aparece en el Panel. Es equivalente a establecer la propiedad Text del nuevo objeto Panel después de que se haya agregado el objeto.
estilo	Opcional. El estilo del panel. Los estilos disponibles se detallan en Style (Propiedad, objeto Panel). Es equivalente a asignar la propiedad Style del nuevo objeto Panel después de que se haya agregado el objeto.
imagen	Opcional. Especifica el mapa de bits mostrado en el objeto Panel activo. Si desea más información, vea la función LoadPicture. Esto es equivalente a asignar la propiedad Picture del nuevo objeto Panel después de que se haya agregado el objeto.
Comentarios

En tiempo de ejecución, el método Add devuelve una referencia al objeto Panel recién insertado. Con esta referencia puede establecer las propiedades de los nuevos objetos Panel como se indica a continuación:

Dim pnlX As Panel

Dim i As Integer

For i = 1 To 6  ' Agrega seis objetos Panel.

   ' Crea un panel y obtiene simultáneamente una
   ' referencia al mismo.

    Set pnlX = StatusBar1.Panels.Add(, "Panel" & i) ' Set Key property.

    pnlX.Style = i  ' Establece la propiedad Style.

    pnlX.AutoSize = sbrContents ' Establece la propiedad AutoSize.

Next i

El valor de la propiedad Text se muestra en un objeto Panel cuando la propiedad Style del objeto Panel se establece a sbrText.

La colección Panels empieza a numerar por 1. Para obtener una referencia al primer objeto Panel de una colección (el predeterminado), puede utilizar sus propiedades Index o Key (si existen) o el método Item. El código siguiente hace referencia al primer objeto Panel mediante su índice.

Dim pnlX As Panel

' Obtiene una referencia al primer panel.

Set pnlX = StatusBar1.Panels(1) ' Utiliza el índice

pnlX.Text = "Texto modificado"	' Cambia el texto del objeto Panel.

De forma predeterminada, el control ya contiene un objeto Panel. Por ello, después de agregar paneles a una colección, el valor de la propiedad Count será una unidad superior al número de paneles agregado. Por ejemplo:

Dim i as Integer

For i = 1 to 4  ' Agrega cuatro paneles.

StatusBar1.Panels.Add   ' Agrega paneles sin propiedades.

Next i

MsgBox StatusBar1.Panels.Count   ' Devuelve 5 paneles.


Add (Ejemplo del método) (colección Panels)
Ejemplo del método Add (colección Panels)

En este ejemplo se utiliza el método Add para agregar tres nuevos objetos Panel a un control StatusBar. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Después ejecute el ejemplo.

Private Sub Form_Load()

Dim pnlX As Panel

    ' Agrega un panel en blanco como separador

    Set pnlX = StatusBar1.Panels.Add()

    pnlX.AutoSize = sbrSpring

    pnlX.MinWidth = 1

    ' Agrega un panel con un icono de reloj y el estilo hora.

    Set pnlX = StatusBar1.Panels.Add _

    (, , , sbrTime, LoadPicture("Graphics\icons\misc\clock03.ico"))

    ' Agrega un segundo panel con un mapa de bits y el estilo fecha.

    Set pnlX = StatusBar1.Panels.Add _

    (, , , sbrDate, LoadPicture("Graphics\bitmaps\assorted\calendar.bmp"))

    ' Establece la propiedad Bevel del último objeto

    ' Panel.

    pnlX.Bevel = sbrInset   ' Bisel hacia adentro.

    pnlX.Alignment = sbrRight   ' Propiedad Alignment del último objeto.

    ' Establece Text y AutoSize del primer panel (el

    ' predeterminado).

    StatusBar1.Panels(1).Text = "Ejemplo de agregar panel"

    StatusBar1.Panels(1).AutoSize = sbrContents

End Sub


Alignment (Propiedad, objeto Panel)

Devuelve o establece la alineación del texto del título de un objeto Panel de un control StatusBar.

Sintaxis

objeto.Alignment [= número]

La sintaxis de la propiedad Alignment consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
número	Una constante o un valor que especifica el tipo de acción, como se describe en Valores.
Valores

Los valores de número son:

Constante	Valor	Descripción
sbrLeft	0	(Predeterminado). El texto aparece alineado a la izquierda y a la derecha del mapa de bits.
sbrCenter	1	El texto aparece centrado y a la derecha de mapa de bits.
sbrRight	2	El texto aparece alineado a la derecha y a la izquierda del mapa de bits.
Comentarios

Además de situar el texto, la propiedad Alignment especifica la posición del mapa de bits, como se describe en Valores. No hay ninguna forma de situar de forma independiente el mapa de bits en el panel.


Alignment (Ejemplo de la propiedad) (Objeto Panel)
Ejemplo de la propiedad Alignment (Objeto Panel)

En este ejemplo se agregan dos objetos Panel a un control StatusBar y se alinea el texto de cada panel con cada uno de los tres estilos disponibles. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Después ejecute el ejemplo.

Private Sub Form_Load()

    ' Declara variables.

    Dim pnlX As Panel

    Dim I As Integer

    For I = 1 To 2  ' Agrega dos paneles.

      StatusBar1.Panels.Add

    Next I

    For I = 1 To 3  ' Agrega una imagen a cada panel.

      Set pnlX = StatusBar1.Panels(I)

      Set pnlX.Picture = LoadPicture("Graphics\icons\comm\net12.ico")

' Establece AutoSize y MinWidth para que los

' paneles sean siempre visibles.

      pnlX.AutoSize = sbrSpring

      pnlX.MinWidth = 1

    Next I

    ' Establece los estilos y la alineación.

    With StatusBar1.Panels

      .Item(1).Text = "Izquierda"

      .Item(1).Alignment = sbrLeft ' Alineación a la izquierda.

      .Item(2).Text = "Centrado"

      .Item(2).Alignment = sbrCenter ' Alineación centrada.

      .Item(3).Text = "Derecha"

      .Item(3).Alignment = sbrRight ' Alineación a la derecha.

    End With

End Sub


AutoSize (Propiedad, objeto Panel)

Devuelve o establece un valor que determina el ancho de un objeto Panel después de que se haya ajustado el tamaño de un control StatusBar.

Sintaxis

objeto.AutoSize [= número]

La sintaxis de la propiedad AutoSize consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
número	Una constante o un valor que especifica el tipo de acción, como se describe en Valores.
Valores

Los valores de número son:

Constante	Valor	Descripción
sbrNoAutoSize	0	(Predeterminado). Ninguna. No se ajusta automáticamente el tamaño. El ancho de Panel es el especificado por la propiedad Width.
SbrSpring	1	División. Cuando cambia el tamaño del formulario primario y hay espacio adicional disponible, los paneles con este valor se reparten el espacio y su tamaño aumenta. Sin embargo, el ancho de los paneles nunca será inferior al especificado en la propiedad MinWidth.
sbrContents	2	Contenido. El tamaño del objeto Panel se ajusta para adaptarlo al de su contenido; sin embargo, el ancho nunca sobrepasará el valor especificado por la propiedad MinWidth.
Comentarios

Los objetos Panel con el estilo Contenido tienen preferencia sobre los que tienen el estilo División. Esto significa que los objetos Panel con el estilo División se acortarán si un objeto Panel con estilo Contenido requiere más espacio.


AutoSize (Ejemplo de la propiedad) (Objeto Panel)
Ejemplo de la propiedad AutoSize (Objeto Panel)

En este ejemplo se agregan dos objetos Panel a un control StatusBar y se establece Content en la propiedad AutoSize de todos los paneles. Al mover el cursor sobre los objetos del formulario, se muestran las coordenadas x e y junto con el valor de la propiedad Tag de cada control. Para probar el ejemplo, coloque un control StatusBar, un control PictureBox y un control CommandButton en un formulario y luego pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y mueva el cursor sobre los distintos controles.

Private Sub Form_Load()

Dim pnlX As Panel

' Establece etiquetas largas para cada objeto.

Form1.Tag = "Formulario del proyecto 1"

Command1.Tag = "Botón de comando"

Picture1.Tag = "Título de cuadro de imagen"

StatusBar1.Tag = "Barra de estado de la aplicación"

' Establece Contents en AutoSize del primer panel.

StatusBar1.Panels(1).AutoSize = sbrContents

' Agrega dos paneles más y establece en ellos

' Contenido.

Set pnlX = StatusBar1.Panels.Add

pnlX.AutoSize = sbrContents

Set pnlX = StatusBar1.Panels.Add

pnlX.AutoSize = sbrContents

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

' Muestra la etiqueta del control en el panel 1 y las

' coordenadas x e y en los paneles 2 y 3. Como

' AutoSize = Contents, el primer panel cambiará de

' tamaño para ajustarse al texto

StatusBar1.Panels(1).Text = Form1.Tag

StatusBar1.Panels(2).Text = "X = " & x

StatusBar1.Panels(3).Text = "Y = " & y

End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

StatusBar1.Panels(1).Text = Command1.Tag

StatusBar1.Panels(2).Text = "X = " & x

StatusBar1.Panels(3).Text = "Y = " & y

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

StatusBar1.Panels(1).Text = Picture1.Tag

StatusBar1.Panels(2).Text = "X = " & x

StatusBar1.Panels(3).Text = "Y = " & y

End Sub

Private Sub StatusBar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

StatusBar1.Panels(1).Text = StatusBar1.Tag

StatusBar1.Panels(2).Text = "X = " & x

StatusBar1.Panels(3).Text = "Y = " & y

End Sub


Bevel (Propiedad, objeto Panel)

Devuelve o establece el estilo de bisel de un objeto Panel de un control StatusBar.

Sintaxis

objeto.Bevel [= valor]

La sintaxis de la propiedad Bevel consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
valor	Una constante o un valor que determina el estilo de bisel, como se describe en Valores.
Valores

Las opciones para valor son:

Constante	Valor	Descripción
sbrNoBevel	0	Ninguno. El objeto Panel no presenta bisel y el texto aparece directamente sobre la barra de estado.
sbrInset	1	(Predeterminado). Hacia adentro. El objeto Panel aparece hundido en la barra de estado.
sbrRaised	2	Hacia afuera. El objeto Panel aparece levantado sobre la barra de estado.


Bevel (Ejemplo de la propiedad) (objeto Panel)
Ejemplo de la propiedad Bevel (objeto Panel)

En este ejemplo se agregan dos objetos Panel a un control StatusBar y se especifica para cada uno de ellos un estilo de bisel distinto. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones del mismo. Después ejecute el ejemplo.

Private Sub Form_Load()

Dim pnlX As Panel

Dim I as Integer

For I = 1 to 2

Set pnlX = StatusBar1.Panels.Add() ' Agrega 2 paneles.

Next I

With StatusBar1.Panels

.Item(1).Style = sbrCaps	' BLOQ MAYÚS

.Item(1).Bevel = sbrInset	' Hacia adentro

.Item(2).Style = sbrNum	' BLOQ NÚM

.Item(2).Bevel = sbrNoBevel	' Sin bisel

.Item(3).Style = sbrDate	' Fecha

.Item(3).Bevel = sbrRaised	' Hacia afuera

End With

End Sub


MinWidth (Propiedad)

Devuelve o establece el ancho mínimo de un objeto Panel de un control StatusBar.

Sintaxis

objeto.MinWidth [= valor]

La sintaxis de la propiedad MinWidth consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
valor	Un entero que determina el ancho mínimo del objeto Panel. El modo de escala de este valor viene determinado por el contenedor del control.
Comentarios

La propiedad MinWidth se utiliza cuando la propiedad AutoSize está establecida a Contents o Spring para evitar que el panel se ajuste automáticamente a un ancho demasiado pequeño. Cuando la propiedad AutoSize está establecida a None, la propiedad MinWidth está siempre establecida al mismo valor que la propiedad Width.

El valor predeterminado es el mismo que el de la propiedad Width. El argumento valor utiliza el mismo modo de escala que el formulario primario o el contenedor.


MinWidth (Ejemplo de la propiedad)
Ejemplo de la propiedad MinWidth

Este ejemplo utiliza el panel predeterminado de un control StatusBar para mostrar la fecha actual. La propiedad MinWidth está establecida, de forma que cuando haga clic en el panel se eliminará la fecha pero el panel permanecerá con el mismo tamaño. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el objeto Panel para borrar la fecha.

Private Sub Form_Load()

    StatusBar1.Panels(1).AutoSize = sbrContents

    StatusBar1.Panels(1).Text = "La fecha de hoy es: " & Str(Now)

    ' Establecer el ancho mínimo al tamaño actual del panel

    StatusBar1.Panels(1).MinWidth = StatusBar1.Panels(1).Width

End Sub

Private Sub StatusBar1_PanelClick(ByVal Panel As ComctlLib.Panel)

    ' Se borra la fecha de hoy pero se mantiene el

    ' tamaño con el ancho mínimo.

    Panel.Text = "La fecha de hoy es: "

End Sub


Panels (Propiedad)

Devuelve una referencia a una colección de objetos Panel.

Sintaxis

objeto.Panels

El marcador de posición objeto es una expresión de objeto que da como resultado un control StatusBar.


PanelClick (Evento)

El evento PanelClick es similar al evento Click estándar, pero se produce cuando el usuario presiona y después suelta un botón del mouse (ratón) sobre cualquiera de los objetos Panel de un control StatusBar.

Sintaxis

Private Sub objeto_PanelClick(ByVal panel As Panel)

La sintaxis del evento PanelClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control  StatusBar.
panel	Una referencia a un objeto Panel.
Comentarios

Al hacer clic en un objeto Panel también se produce el evento Click estándar.

El evento PanelClick sólo se genera cuando se hace clic en un objeto Panel. Cuando el valor de la propiedad Style del control StatusBar es Simple, los paneles permanecen ocultos y por tanto no se genera este evento.

Puede utilizar la referencia al objeto Panel para establecer las propiedades del panel. Por ejemplo, el código siguiente restablece la propiedad Bevel del Panel en el que se ha hecho clic:

Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)

Select Case Panel.Key

Case "DisplayFileName" ' Key="DisplayFileName"

  Panel.Bevel = sbrRaised	' Establece la propiedad Bevel

' Agrega otras instrucciones Case para otros paneles

End Select

End Sub


PanelClick (Ejemplo del evento)
Ejemplo del evento PanelClick

En este ejemplo se agregan dos objetos Panel a un control StatusBar. Cuando se hace clic en un Panel, el valor de sus propiedades Key y Width de ese control Panel se muestra en un tercer objeto Panel. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Después ejecute el ejemplo.

Private Sub Form_Load()

Dim I as Integer

For I = 1 to 2

StatusBar1.Panels.Add

Next I

With StatusBar1.Panels

.Item(1).Style = sbrDate

.Item(1).Key = "Panel de fecha"

.Item(1).AutoSize = sbrContents

.Item(1).MinWidth = 2000

.Item(2).Style = sbrTime

.Item(2).Key = "Panel de hora"

.Item(3).AutoSize = sbrContents	' Contenido

.Item(3).Text = "Panel 3"

.Item(3).Key = "Panel 3"

End With

End Sub

Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)

' Muestra la clave y el ancho del panel en el

' Panel 3.

StatusBar1.Panels("Panel 3").Text = Panel.Key & " Width = " & Panel.Width

End Sub


PanelDblClick (Evento)

El evento PanelDblClick es similar al evento DblClick estándar, pero se produce cuando el usuario presiona y después suelta un botón del mouse (ratón) dos veces sobre cualquiera de los objetos Panel de un control StatusBar.

Sintaxis

Sub objeto_PanelDblClick(ByVal panel As Panel)

La sintaxis del evento PanelDblClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control StatusBar.
panel	Una referencia al objeto Panel en el que se ha hecho clic.
Comentarios

Al hacer doble clic en un objeto Panel también se produce el evento DblClick estándar.

El evento PanelDblClick sólo se genera cuando se hace doble clic en un objeto Panel. Cuando el valor de la propiedad Style del control StatusBar es Simple, los paneles permanecen ocultos y por tanto no se genera este evento.


PanelDblClick (Ejemplo del evento)
Ejemplo del evento PanelDblClick

En este ejemplo se agregan dos objetos Panel a un control StatusBar. Cuando el usuario hace doble clic en el control, se muestra el texto del objeto Panel en el que se ha hecho doble clic. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Después, ejecute el ejemplo y haga doble clic en el control.

Private Sub Form_Load()

Dim I as Integer

For I = 1 to 2

StatusBar1.Panels.Add

Next I

With StatusBar1.Panels

.Item(1).Text = "Un texto de información largo."

.Item(1).AutoSize = sbrContents	' Contenido

.Item(2).Style = sbrDate	' Estilo de fecha

.Item(2).AutoSize = sbrContents	' Contenido

.Item(3).Style = sbrTime	' Estilo de hora

End With

End Sub

Private Sub StatusBar1_PanelDblClick(ByVal Panel As Panel)

MsgBox "Panel.Style = " & Panel.Style

End Sub


SimpleText (Propiedad)

Devuelve o establece el texto mostrado cuando el valor de la propiedad Style de un control StatusBar es Simple.

Sintaxis

objeto.SimpleText [= cadena]

La sintaxis de la propiedad SimpleText consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control StatusBar.
cadena	Una cadena que se muestra cuando el valor de la propiedad Style es Simple.
Comentarios

El control StatusBar tiene una propiedad llamada Style que puede tomar los valores Simple y Normal. Cuando el valor es Simple, en la barra de estado sólo se muestra un panel. El texto mostrado con el estilo Simple es distinto del que aparece con el estilo Normal y se establece con la propiedad SimpleText.

La propiedad SimpleText puede utilizarse en situaciones en las que el modo de funcionamiento de la aplicación cambia temporalmente. Por ejemplo, al desplegar un menú, SimpleText puede describir su propósito.


SimpleText (Ejemplo de la propiedad)
Ejemplo de la propiedad SimpleText

En este ejemplo se agrega a un control StatusBar dos objetos Panel que aparecerán con el estilo Normal y después se agrega una cadena (con la propiedad SimpleText) que aparecerá cuando el valor de Style sea Simple. El control alterna entre los estilos Simple y Normal. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el control StatusBar.

Private Sub Form_Load()

Dim I As Integer

For I = 1 to 2

StatusBar1.Panels.Add	' Agrega dos objetos Panel.

Next I

With StatusBar1.Panels

.Item(1).Style = sbrNum	' BLOQ NÚM

.Item(2).Style = sbrCaps	' BLOQ MAYÚS

.Item(3).Style = sbrScrl	' BLOQ DESP

End With

End Sub

Private Sub StatusBar1_Click()

' Alterna entre los estilos Simple y Normal.

With StatusBar1

If .Style = 0 Then

' Este texto se mostrará cuando StatusBar

' esté con estilo Simple.

.SimpleText = "Fecha y hora: " & Now

.Style = sbrSimple	' Estilo simple.

Else

.Style = sbrNormal	' Estilo normal.

End If

End With

End Sub


Style (Propiedad, control StatusBar)

Devuelve o establece el estilo de un control StatusBar.

Sintaxis

objeto.Style [= número]

La sintaxis de la propiedad Style consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control StatusBar.
número	Un entero o una constante que determina la apariencia del control StatusBar, como se describe en Valores.
Valores

Los valores admitidos para número son:

Constante	Valor	Descripción
sbrNormal	0	(Predeterminado). Normal. El control StatusBar muestra todos los objetos Panel.
sbrSimple	1	Simple. El control sólo muestra un panel grande.
Comentarios

El control StatusBar puede alternar entre dos modos: Normal y Simple. Con el estilo Simple, el control StatusBar sólo muestra un panel. Su apariencia también cambia: el estilo de bisel es hacia afuera y sin bordes. Ello permite al control tener dos apariencias, que se mantienen de forma independiente entre sí.

Es posible mostrar cadenas distintas dependiendo del estilo del control. Utilice la propiedad SimpleText para establecer el texto de la cadena que se mostrará cuando el valor de la propiedad Style sea Simple2.

Nota   Cuando la propiedad Style está establecida a Simple, el control StatusBar muestra un panel grande (el ancho del control) que no puede controlarse mediante la colección Panels.


Style (Ejemplo de la propiedad) (control StatusBar)
Ejemplo de la propiedad Style (control StatusBar)

En este ejemplo se agrega a un control StatusBar dos objetos Panel que aparecerán con el estilo Normal y después se agrega una cadena (con la propiedad SimpleText) que aparecerá cuando el valor de Style sea Simple. El control alterna entre los estilos Simple y Normal para mostrar la cadena de la propiedad SimpleText. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el control StatusBar.

Private Sub Form_Load()

Dim I As Integer

For I = 1 to 2

StatusBar1.Panels.Add

Next I

With StatusBar1.Panels

.Item(1).Style = sbrDate	' Fecha

.Item(2).Style = sbrCaps	' BLOQ MAYÚS

.Item(3).Style = sbrScrl	' BLOQ DESPL

End With

End Sub

Private Sub StatusBar1_Click()

With StatusBar1

If .Style = sbrNormal Then

.SimpleText = Time	' Muestra la hora.

.Style = sbrSimple	' Estilo simple

Else

.Style = sbrNormal	' Estilo normal

End If

End With

End Sub


Style (Propiedad, objeto Panel)

Devuelve o establece el estilo de un objeto Panel de un control StatusBar.

Sintaxis

objeto.Style [= número]

La sintaxis de la propiedad Style consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
número	Un entero o una constante que especifica el estilo del objeto Panel, como se describe en Valores.
Valores

Los valores admitidos para número son:

Constante	Valor	Descripción
sbrText	0	(Predeterminado). Texto y mapa de bits. Establece el texto con la propiedad Text.
sbrCaps	1	Tecla BLOQ MAYÚS. Muestra las letras MAYÚS en negrita cuando BLOQ MAYÚS está activada y atenuada cuando está desactivada.
sbrNum	2	Tecla BLOQ NUM. Muestra las letras NÚM en negrita cuando BLOQ NUM está activada y atenuadas cuando está desactivada.
sbrIns	3	Tecla INSERT. Muestra las letras INS en negrita cuando INSERT está activada y atenuadas cuando no lo está.
sbrScrl	4	Tecla BLOQ DESPL. Muestra las letras DESPL en negrita cuando BLOQ DEPL está activada y atenuadas cuando no lo está.
sbrTime	5	Hora. Muestra la hora actual con el formato del sistema.
sbrDate	6	Fecha. Muestra la fecha actual con el formato del sistema.
sbrKana	7	Kana. Muestra las letras KANA en negrita cuando BLOQ DESPL está activada y atenuada cuando está desactivada.
Comentarios

Si establece la propiedad Style a un estilo distinto de 0 (texto y mapa de bits), el texto establecido con la propiedad Text no aparecerá hasta que se vuelva a establecer Style a 0.

La propiedad Style puede establecerse al agregar objetos Panel a una colección. Si desea más información, vea el método Add.

Nota   El control StatusBar tiene también la propiedad Style. Cuando el Style de un control StatusBar está establecido a Simple, el control sólo muestra un panel grande y su cadena(establecida con la propiedad SimpleText).


Style (Ejemplo de la propiedad) (objeto Panel)
Ejemplo de la propiedad Style (objeto Panel)

En este ejemplo se muestran datos con distintos estilos en un control StatusBar. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones de éste. Después ejecute el ejemplo.

Private Sub Form_Load()

' Variables Dim.

Dim I as Integer

Dim pnlX as Panel

For I = 1 to 5	' Agrega 5 paneles.

Set pnlX = StatusBar1.Panels.Add( )

Next I

' Establece el estilo de cada panel.

With StatusBar1.Panels

.Item(1).Style = sbrDate 	' Fecha

.Item(2).Style = sbrTime 	' Hora

.Item(3).Style = sbrCaps 	' BLOQ MAYÚS

.Item(4).Style = sbrNum	' BLOQ NÚM

.Item(5).Style = sbrIns 	' Tecla Insert

.Item(6).Style = sbrScrl 	' BLOQ DESPL

End With

Form1.Width = 9140 ' Formulario ancho para mostrar todos los paneles.

End Sub


Width (Propiedad, objeto Panel)

Devuelve o establece el ancho actual de un control Panel de un objeto StatusBar.

Sintaxis

objeto.Width[= número]

La sintaxis de la propiedad Width consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Panel.
número	Un entero que determina el ancho del objeto Panel.
Comentarios

La propiedad Width refleja siempre el ancho actual de un objeto Panel y no puede ser menor que el valor de la propiedad MinWidth.


Width (Ejemplo de la propiedad) (objeto Panel)
Ejemplo de la propiedad Width (objeto Panel)

En este ejemplo se crean tres objetos Panel y se establecen distintos valores en su propiedad Width. Al hacer clic en el formulario se restablece la propiedad Width del primer panel. Para probar el ejemplo, coloque un control StatusBar en un formulario y pegue el código en la sección Declaraciones del mismo. Ejecute el ejemplo y haga clic en el formulario para cambiar el ancho del primer panel.

Private Sub Form_Load()

Dim X As Panel

Dim I as Integer

For I = 1 to 2	' Agrega 2 paneles.

Set X = StatusBar1.Panels.Add()

Next I

With StatusBar1.Panels

.Item(1).Text = "Ruta = " & App.Path

.Item(1).Width = 2000	' Panel largo

.Item(2).Text = "Campo de registro"

.Item(2).AutoSize = sbrSpring	' División

.Item(2).Width = 1000	' Panel medio

.Item(3).Style = sbrTime	' Hora

.Item(3).AutoSize = sbrSpring	' División

.Item(3).Width = 500	' Panel medio

End With

End Sub

Private Sub Form_Click()

' Cambia el ancho.

StatusBar1.Panels(1). Width = 800

End Sub


TabStrip (Control)

Un control TabStrip es como los separadores de un cuaderno o las etiquetas de un grupo de carpetas de archivo. Mediante un control TabStrip puede definir varias páginas para la misma área de una ventana o cuadro de diálogo en su aplicación.

Sintaxis

TabStrip

Comentarios

El control consiste en uno o más objetos Tab de una colección Tabs. Tanto en tiempo de diseño como en tiempo de ejecución puede cambiar la apariencia del objeto Tab estableciendo propiedades. También puede agregar y quitar fichas  utilizando la Página de propiedades del control TabStrip en tiempo de diseño o bien agregar y quitar objetos Tab en tiempo de ejecución mediante métodos.

La propiedad Style determina si el control TabStrip tiene la apariencia de un botón de comando (Buttons) o de un separador de carpeta (Tabs). En tiempo de diseño, cuando pone un control TabStrip en un formulario, tiene un separador de carpeta. Si elige el valor tabTabs para la propiedad Style, habrá un borde alrededor del área interna del control TabStrip. Aunque el valor tabButtons de la propiedad Style no muestra ningún borde alrededor del área interna, esa área existe.

Para determinar el tamaño total del control TabStrip, use sus controladores de arrastre o establezca las propiedades Top, Left, Height y Width. Basándose en el tamaño total del control en tiempo de ejecución, Visual Basic determina automáticamente el tamaño y la posición del área interna y devuelve las propiedades de coordenadas del cliente: ClientLeft, ClientTop, ClientHeight y ClientWidth. La propiedad MultiRow determina si el control puede tener más de una fila de fichas, la propiedad TabWidthStyle determina la apariencia de cada fila y, si la propiedad TabWidthStyle se establece a tabFixed, puede usar las propiedades TabFixedHeight y TabFixedWidth para establecer el mismo alto y ancho para todas las fichas del control TabStrip.

El control TabStrip no es un contenedor. Para contener las páginas reales y sus objetos, debe usar controles Frame u otro tipo de contenedores que coincidan con el tamaño del área interna compartida por todos los objetos Tab del control. Si usa una matriz de controles para el contenedor, puede asociar cada elemento de la matriz con un objeto Tab específico, como en el siguiente ejemplo:

Option Explicit

Private mintCurFrame As Integer' Marco activo visible

Private Sub Tabstrip1_Click()

If Tabstrip1.SelectedItem.Index = mintCurFrame _

Then Exit Sub ' No necesita cambiar el marco.

' Oculte el marco antiguo y muestre el nuevo.

Frame1(Tabstrip1.SelectedItem.Index).Visible = True

Frame1(mintCurFrame).Visible = False

' Establece mintCurFrame al nuevo valor.

mintCurFrame = Tabstrip1.SelectedItem.Index

End Sub

Nota   Cuando agrupe controles en un contenedor, es mejor utilizar mostrar u ocultar en vez de utilizar el método Zorder para traer al frente un marco de objeto. Por otra parte, los controles que tengan asociadas teclas de acceso (ALT + tecla de acceso) aún responderán a los comandos de teclado, aunque el contenedor no sea el control más alto. Observe también que debe separar los grupos de los controles OptionButton para ubicar cada grupo en su propio contenedor, o por el contrario todos los controles OptionButtons del formulario se comportarán como un gran grupo de controles OptionButtons.

Sugerencia   Utilice un control Frame con su BorderStyle establecido a None como el contenedor, en lugar de un control PictureBox. Un control Frame produce menos sobrecarga que un control PictureBox.

La propiedad Tabs del control TabStrip es la colección de todos los objetos Tab. Cada objeto Tab tiene propiedades asociadas con su estado y apariencia actuales. Por ejemplo, puede asociar un control ImageList con el control TabStrip y después usar imágenes en fichas individuales. También puede asociar una información sobre herramientas con cada objeto Tab.

Nota de distribución   El control TabStrip forma parte de un grupo de controles personalizados que se encuentran en el archivo COMCTL32.OCX. Para usar el control TabStrip en su aplicación, debe agregar el archivo COMCTL32.OCX al proyecto. Cuando distribuya su aplicación, instale el archivo COMCTL32.OCX en el directorio SYSTEM de Microsoft Windows del usuario. Para obtener más información acerca de cómo agregar un control personalizado a un proyecto, consulte el Manual del programador.


Tab (Objeto)

Un objeto Tab representa una ficha individual de la colección Tabs de un control TabStrip.

Comentarios

Para cada objeto Tab puede emplear varias propiedades con el fin de especificar su apariencia y también puede especificar su estado con la propiedad Selected.

En tiempo de diseño, use los botones Insertar ficha y Quitar ficha de la ficha Fichas en la Página de propiedades del control TabStrip para insertar y quitar fichas, y utilice los cuadros de texto para especificar cualquiera de estas propiedades para un objeto Tab: Caption, Image, ToolTipText, Tag, Index o Key. También puede especificar estas propiedades en tiempo de ejecución.

Use las propiedades Caption e Image, por separado o juntas, para etiquetar o poner un icono en una ficha.

•	Para usar la propiedad Caption, en el cuadro de texto Título en la Página de propiedades del control TabStrip, escriba el texto que desee mostrar en la ficha o en el botón en tiempo de ejecución.

•	Para usar la propiedad Image, ponga un control ImageList en el formulario y llene la colección ListImages con objetos ListImage, dándole a cada uno de ellos un número de índice y una clave opcional. En la ficha General de la Página de propiedades del control TabStrip, seleccione ese ImageList para asociarlo con el control TabStrip. En el cuadro de texto Image de la ficha Fichas, escriba el número de índice del objeto ListImage que debe aparecer en el objeto Tab.

Use la propiedad ToolTipText para mostrar temporalmente una cadena de texto en un pequeño cuadro rectangular en tiempo de ejecución cuando el cursor del usuario se posa sobre la ficha. Para establecer la propiedad ToolTipText en tiempo de diseño, active la casilla de verificación ShowTips en la ficha General y después escriba la cadena de información sobre herramientas en el cuadro de texto ToolTipText.

Para devolver una referencia a un objeto Tab que un usuario ha seleccionado, use la propiedad SelectedItem; para determinar si una ficha específica se ha seleccionado, use la propiedad Selected. Estas propiedades son útiles junto con el evento BeforeClick para comprobar o grabar datos asociados con la ficha seleccionada actualmente antes de mostrar la siguiente ficha seleccionada por el usuario.

Cada objeto Tab también tiene propiedades de sólo lectura que puede utilizar para hacer referencia a un único objeto Tab de la colección Tabs: Left, Top, Height y Width.


Tabs (Colección)

Una colección Tabs contiene un conjunto de objetos Tab.

Sintaxis

tabstrip.Tabs(índice)

tabstrip.Tabs.Item(índice)

La sintaxis de la colección Tabs consta de las siguientes partes:

Parte	Descripción
tabstrip	Una expresión de objeto que da como resultado un control TabStrip.
índice	Un entero o una cadena que identifica de forma única a un miembro de una colección de objetos. El entero es el valor de la propiedad Index del objeto Tab deseado, mientras que la cadena es el valor de la propiedad Key del objeto Tab deseado.
En tiempo de diseño, use los botones Insertar ficha y Quitar ficha de la ficha Fichas de la Página de propiedades del control TabStrip para agregar y quitar objetos Tab de la colección Tabs.

La colección Tabs utiliza la propiedad Count para devolver el número de fichas de la colección. Para manipular los objetos Tab de la colección Tabs, utilice estos métodos en tiempo de ejecución:

•	Add: agrega objetos Tab al control TabStrip.

•	Item: recupera el objeto Tab identificado por su Key o Index de la colección.

•	Clear: quita todos los objetos Tab de la colección.

•	Remove: quita el objeto Tab identificado mediante su Key o Index de la colección.


TabStrip (Constantes del control)
Constantes del control TabStrip

Constantes de TabStyle

Constante	Valor	Descripción
tabTabs	0	Las fichas aparecen como separadores de cuaderno y el área interna tiene un borde tridimensional alrededor.
tabButtons	1	Las fichas aparecen como botones de comando y el área interna no tiene ningún borde alrededor.
Constantes de TabWidthStyle

Constante	Valor	Descripción
tabJustified	0	Cada ficha es lo bastante ancha como para dar cabida a su contenido y el ancho de cada ficha se incrementa, si es necesario, de forma que cada fila iguala al ancho del control. Si sólo hay una fila de fichas, este estilo no tiene ningún efecto.
tabNonJustified	1	Cada ficha es lo bastante ancha como para dar cabida a su contenido. Las filas no se justifican, por lo que las distintas filas terminan de manera irregular.
tabFixed	2	Los valores del alto y ancho de todas las fichas son idénticos, y se establecen mediante las propiedades TabFixedHeight y TabFixedWidth.


Add (Método, colección Tabs)

Agrega un objeto Tab a una colección Tabs en un control TabStrip.

Sintaxis

objeto.Add(índice, clave, título, imagen)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado una colección Tabs.
índice	Opcional. Un entero que especifica la posición en la que desea insertar el objeto Tab. Si no especifica ningún índice, el objeto Tab se agrega al final de la colección Tabs.
clave	Opcional. Una cadena única que identifica al objeto Tab. Utilice la clave para recuperar una ficha específica. Es equivalente a establecer la propiedad Key del nuevo objeto Tab después de haberlo agregado a la colección Tabs.
título	Opcional. La cadena que aparece en el objeto Tab. Es equivalente a establecer la propiedad Caption del nuevo objeto Tab después de haberlo agregado a la colección Tabs.
imagen	Opcional. El índice de una imagen en un control ImageList asociado. Esta imagen se muestra en la ficha. Es equivalente a establecer la propiedad Image del nuevo objeto Tab después de haberlo agregado a la colección Tabs.
Comentarios

Para agregar fichas al control TabStrip en tiempo de diseño, haga clic en el botón Insertar ficha de la ficha Fichas de la Página de propiedades del control TabStrip y complete los campos apropiados para la nueva ficha.

Para agregar fichas al control TabStrip en tiempo de ejecución, utilice el método Add, que devuelve una referencia al objeto Tab recién insertado. Por ejemplo, el siguiente código agrega una ficha con el título "Hola" y cuya clave es "MiFicha", como la segunda ficha (su índice es 2).

Set X = TabStrip1.Tabs.Add(2,"MiFicha","Hola")


Add (Ejemplo del método) (Colección Tabs)
Ejemplo del método Add (Colección Tabs)

Este ejemplo agrega tres objetos Tab, cada uno con títulos e imágenes de un control ImageList, a un control TabStrip. Para probar este ejemplo, ponga un control ImageList y un control TabStrip en un formulario. El control ImageList proporciona las imágenes para los objetos Tab. Pegue el siguiente código en el evento Load del objeto Form y ejecute el programa.

Private Sub Form_Load()

Dim X As Integer

Set TabStrip1.ImageList = ImageList1

TabStrip1.Tabs(1).Caption = "Hora"

TabStrip1.Tabs.Add 2, , "Fecha"

TabStrip1.Tabs.Add 3, , "Correo"

For X = 1 To TabStrip1.Tabs.Count

TabStrip1.Tabs(X).Image = X

Next X

End Sub


BeforeClick (Evento)

Se genera cuando se hace clic en un objeto Tab de un control TabStrip o cuando el valor Selected de un objeto Tab ha cambiado.

Sintaxis

Private Sub objeto_BeforeClick(cancelar As Integer)

La sintaxis del objeto BeforeClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control TabStrip.
cancelar	Se evalúa como un entero con valores de 0 (False) y -1 (True). El valor inicial es 0.
Comentarios

Use el evento BeforeClick para validar la información del objeto Tab antiguo antes de generar realmente un evento Click que seleccione el nuevo objeto Tab. Establecer el argumento cancelar a True le permite detener un cambio a la nueva selección.

Nota   Establecer el argumento cancelar a True evita que el enfoque cambie a otra ficha pero no detendrá el evento Click.

Nota   Si usa las funciones MsgBox o InputBox durante el procedimiento de evento BeforeClick, el control TabStrip no recibirá un evento Click, cualquiera que sea el valor del argumento cancelar.


BeforeClick (Ejemplo del evento)
Ejemplo del evento BeforeClick

Este ejemplo usa el evento BeforeClick para demostrar cómo evitar que un usuario cambie a otra ficha. Esto es útil cuando desea comprobar información en la ficha actual antes de mostrar la ficha recién seleccionada.

Para probar este ejemplo, ponga un control TabStrip y una matriz de controles Frame de dos elementos en el formulario (establezca la propiedad BorderStyle a None). En el primer control Frame, agregue un control CheckBox y en el segundo, agregue un TextBox. Pegue el siguiente código en el evento Load del objeto Form y ejecute el programa. Haga clic en la ficha titulada Texto después de activar o desactivar el CheckBox en la ficha titulada Casilla.

Private Sub Form_Load()

Dim i As Integer

Dim Tabx As Object

' Establece el título de la primera ficha como "Casilla"

TabStrip1.Tabs(1).Caption = "Casilla"

' Agrega una segunda ficha con "Texto" como título.

Set Tabx = TabStrip1.Tabs.Add(2, , "Texto")

' Etiqueta la casilla de verificación.

Check1.Caption = "Cancelar cambio de ficha"

' Alinea los marcos con el área interna

' del control Tabstrip.

For i = 0 To 1

Frame1(i).Left = TabStrip1.ClientLeft

Frame1(i).Top = TabStrip1.ClientTop

Frame1(i).Height = TabStrip1.ClientHeight

Frame1(i).Width = TabStrip1.ClientWidth

Next

' Pone arriba el contenedor de marco

' de la primera ficha.

Frame1(0).ZOrder 0

End Sub

' El evento BeforeClick comprueba el valor de la casilla

' de verificación para determinar si se continúa con el

' evento Click.

Private Sub TabStrip1_BeforeClick(Cancel As Integer)

If TabStrip1.Tabs(1).Selected Then

If Check1.Value = 1 Then Cancel = True

End If

End Sub

Private Sub TabStrip1_Click()

Frame1(TabStrip1.SelectedItem.Index-1).ZOrder 0

End Sub


Caption (Propiedad, objeto Tab)

Devuelve o establece el título que aparece en la ficha o el botón de un objeto Tab en un control TabStrip.

Sintaxis

objeto.Caption [= cadena]

La sintaxis de la propiedad Caption consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Tab.
cadena	Una expresión de cadena que da como resultado un texto mostrado como título.
Comentarios

Puede establecer la propiedad Caption de un objeto Tab en el control TabStrip en tiempo de diseño o en tiempo de ejecución.

•	Tiempo de diseño: en la ficha Ficha de la Página de propiedades del control TabStrip, escriba la cadena de título en el cuadro de texto Caption.

•	Tiempo de ejecución: establezca el título como sigue:

TabStrip1.Tabs(1).Caption = "Primera ficha"

   O bien

TabStrip1.Tabs.Add 2, , "Segunda ficha"


Caption (Ejemplo de la propiedad) (Objeto Tab)
Ejemplo de la propiedad Caption (Objeto Tab)

Este ejemplo establece la propiedad Caption para cada uno de los tres objetos Tab que agrega a un control TabStrip. Las cadenas de título son "Hora", "Fecha" y "Correo". Cada objeto Tab también muestra una imagen procedente de un control ImageList. Para probar este ejemplo, sitúe un control ImageList y un control TabStrip en un formulario. Ponga tres mapas de bits en el control ImageList. El control ImageList proporciona las imágenes para los objetos Tab. Pegue el siguiente código en el evento Load del objeto Form y ejecute el programa.

Private Sub Form_Load()

Dim X As Integer

' Asocia un ImageList con el control TabStrip.

Set TabStrip1.ImageList = ImageList1

' Establece los títulos.

TabStrip1.Tabs(1).Caption = "Hora"

TabStrip1.Tabs.Add 2, , "Fecha"

TabStrip1.Tabs.Add 3, , "Correo"

For X = 1 To TabStrip1.Tabs.Count

' Asocia una imagen con una ficha.

TabStrip1.Tabs(X).Image = X

Next X

End Sub


ClientHeight, ClientWidth, ClientLeft, ClientTop (Propiedades)

Devuelve las coordenadas del área interna (área de presentación) del control TabStrip. Es de sólo lectura en tiempo de ejecución y no está disponible en tiempo de diseño.

Sintaxis

objeto.ClientHeight

objeto.ClientWidth

objeto.ClientLeft

objeto.ClientTop

El marcador de posición objeto representa una expresión de objeto que da como resultado un control TabStrip.

Comentarios

En tiempo de ejecución, las propiedades de coordenada del cliente (ClientLeft, ClientTop, ClientHeight y ClientWidth) almacenan automáticamente las coordenadas del área interna del control TabStrip, que comparten todos los objetos Tab del control. Para que los controles asociados con un Tab específico aparezcan cuando se selecciona el objeto Tab, coloque los controles del objeto Tab dentro de un contenedor, como un control Frame, cuyo tamaño y posición sean iguales a las propiedades de coordenada del cliente. Para asociar un contenedor (y sus controles) con un objeto Tab, cree una matriz de controles, como una matriz de controles Frame.

Todas las propiedades de coordenada de cliente usan el modo de escala del formulario primario. Para colocar un control Frame de manera que quepa perfectamente en el área interna, use el siguiente código:

Frame1.Left = TabStrip1.ClientLeft

Frame1.Top = TabStrip1.ClientTop

Frame1.Width = TabStrip1.ClientWidth

Frame1.Height = TabStrip1.ClientHeight

Para crear el efecto de colocar una nueva ficha y su contenedor asociado en la parte superior cuando se selecciona la ficha:

•	Establezca el tamaño y la ubicación del contenedor en el área interna del control TabStrip como las propiedades de coordenada del cliente y

•	Use el método ZOrder para situar el control del contenedor de la ficha seleccionada al principio o al final del orden Z.


ClientHeight, ClientWidth, ClientLeft y ClientTop (Ejemplo de las propiedades)
Ejemplo de las propiedades ClientHeight, ClientWidth, ClientLeft, ClientTop

El siguiente ejemplo demuestra el uso de las propiedades de coordenada del cliente (ClientLeft, ClientTop, ClientWidth y ClientHeight) junto con una matriz de controles Frame para mostrar objetos específicos de la ficha en el área interna del control TabStrip cuando se cambia de ficha. El ejemplo usa el método ZOrder para mostrar el control Frame apropiado y los objetos que contiene.

Para probar este ejemplo, sitúe un control TabStrip y una matriz de controles Frame de tres elementos en el formulario. En un control Frame, coloque un control CheckBox, en otro coloque un control CommandButton y en el tercero, coloque un control TextBox. Pegue el código siguiente en el evento Load del objeto Form y ejecute el programa. Haga clic en las distintas fichas para seleccionarlas, así como su contenido.

Private Sub Form_Load()

Dim Tabx As Object

Dim i As Integer

' Establece el título de la primera ficha como

' "Casilla."

TabStrip1.Tabs(1).Caption = "Casilla"

' Agrega una segunda ficha con "Comando" como

' título.

Set Tabx = TabStrip1.Tabs.Add(2, , "Comando")

' Agrega una tercera ficha con "Texto" como título.

Set Tabx = TabStrip1.Tabs.Add(3, , "Texto")

' Alinea los contenedores de marco con el área

' interna del control TabStrip.

For i = 0 To 2

With TabStrip1

      	Frame1(i).Move .ClientLeft, .ClientTop, _

         	.ClientWidth, .ClientHeight

   	End With

Next

' Pone el contenedor de cuadro con imagen de la

' primera ficha en la parte superior al inicio.

Frame1(0).ZOrder 0

End Sub

Private Sub TabStrip1_Click()

Frame1(TabStrip1.SelectedItem.Index - 1).ZOrder 0

End Sub


MultiRow (Propiedad)

Devuelve o establece un valor que indica si un control TabStrip puede mostrar más de una fila de fichas.

Sintaxis

objeto.MultiRow [= booleano]

La sintaxis de la propiedad MultiRow consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control TabStrip.
booleano	Una expresión booleana que especifica si el control tiene más de una fila de fichas, como se describe en Valores.
Valores

Los valores válidos para booleano son:

Valor	Descripción
True	Permite más de una fila de fichas.
False	Restringe las fichas a una única fila.
Comentarios

El número de filas se establece automáticamente según el ancho y el número de fichas. El número de filas puede cambiar si el control cambia de tamaño, lo que asegura que la ficha se ajusta a la siguiente fila. Si MultiRow es False y la última ficha excede el ancho del control, se agregará un control numérico horizontal en el extremo derecho del control TabStrip.

En tiempo de diseño, sitúe la propiedad MultiRow en la ficha General de la Página de propiedades del control TabStrip. En tiempo de ejecución, use código como el siguiente para establecer la propiedad MultiRow:

' Permite más de una fila de fichas en el control TabStrip.

TabStrip1.MultiRow = TRUE


Style (Propiedad, control TabStrip)

Devuelve o establece la apariencia, fichas o botones, de un control TabStrip.

Sintaxis

objeto.Style [= valor]

La sintaxis de la propiedad Style consta de las siguiente partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control TabStrip.
valor	Una constante o un entero que determina la apariencia del cuadro de diálogo con fichas, como se describe en Valores.
Valores

Los valores válidos para valor son:

Constante	Valor	Descripción
tabTabs	0	(Predeterminado) Fichas. Las fichas aparecen como separadores de cuadernos y el área interna tiene un borde tridimensional alrededor.
tabButtons	1	Botones. Las fichas aparecen como botones de comando normales y el área interna no tiene borde alrededor.
Comentarios

En tiempo de diseño, seleccione la propiedad Style que desee (fichas o botones) de la lista Estilo en la ficha General de la Página de propiedades del control TabStrip.

En tiempo de ejecución, emplee código como el siguiente para establecer la propiedad Style:

' Propiedad Style establecida a Tabs.

TabStrip1.Style = tabTabs

' Propiedad Style establecida a Buttons.

TabStrip1.Style = tabButtons


Tabs (Propiedad, control TabStrip)

Devuelve una referencia a la colección de objetos Tab en un control TabStrip.

Sintaxis

objeto.Tabs(índice)

La sintaxis de la propiedad Tabs consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control TabStrip.
índice	Un valor que identifica un objeto Tab de la colección Tabs. Puede ser la propiedad Index o la propiedad Key del objeto Tab deseado.
Comentarios

Puede tener acceso a la colección Tabs mediante los métodos de colección estándar, como el método Item.


TabFixedHeight, TabFixedWidth (Propiedades)

Devuelven o establecen el alto y el ancho fijo de todos los objetos Tab de un control TabStrip, pero sólo si la propiedad TabWidthStyle está establecida a tabFixed.

Sintaxis

objeto.TabFixedHeight [= entero]

objeto.TabFixedWidth [= entero]

Las sintaxis de las propiedades TabFixedHeight y TabFixedWidth constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto TabStrip.
entero	El número de píxeles o twips del alto o ancho de un control TabStrip. La escala utilizada en entero depende del valor de ScaleMode del contenedor.
Comentarios

La propiedad TabFixedHeight se aplica a todos los objetos Tab del control TabStrip. Se establece de manera determinada como el alto de la fuente, como queda especificado en la propiedad Font, o el alto del objeto ListImage especificado por la propiedad Image, lo que sea mayor, mas unos pocos píxeles extra que hacen de borde. Si la propiedad TabWidthStyle está establecida a tabFixed y el valor de la propiedad TabFixedWidth está establecido, el ancho de cada objeto Tab sigue siendo igual tanto si se agregan como si se eliminan objetos Tab en el control.


TabWidthStyle (Propiedad)

Devuelve o establece un valor que determina la justificación o ancho de todos los objetos Tab de un control TabStrip.

Sintaxis

objeto.TabWidthStyle [=valor]

La sintaxis de la propiedad TabWidthStyle consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control TabStrip.
valor	Un entero o una constante que determina si las fichas se justifican o se establecen a un ancho fijo, como se especifica en Valores.
Valores

Los valores válidos para valor son:

Constante	Valor	Descripción
tabJustified	0	(Predeterminado) Justificado. Si la propiedad MultiRow es True, cada ficha es lo suficientemente ancha como para dar cabida a su contenido y, si es necesario, el ancho de cada ficha se incrementa de manera que cada fila ocupa el ancho del control. Si la propiedad MultiRow es False, o si sólo hay una fila de fichas, este valor no tiene ningún efecto.
tabNonJustified	1	No justificado. Cada ficha es lo suficientemente ancha como para dar cabida a su contenido. Las filas no se justifican, por lo que terminan de manera irregular.
tabFixed	2	Fijo. Todas las fichas tienen un ancho idéntico que se determina por la propiedad TabFixedWidth.
Comentarios

En tiempo de diseño puede establecer la propiedad TabWidthStyle en la ficha General de la Página de propiedades del control TabStrip. El valor de la propiedad TabWidthStyle afecta al ancho con el que cada objeto Tab aparece en tiempo de ejecución.

En tiempo de ejecución, puede establecer la propiedad TabWidthStyle como sigue:

' Justifica todas las fichas de una fila para ajustarlas ' al ancho del control.

TabStrip1.MultiRow = True

TabStrip1.TabWidthStyle = tabJustified

' Crea filas de fichas desiguales.

TabStrip1.MultiRow = True

TabStrip1.TabWidthStyle = tabNonJustified

' Establece el mismo ancho para todas las fichas.

TabStrip1.TabFixedWidth = 500

TabStrip1.TabWidthStyle = tabFixed


Toolbar (Control)

Un control Toolbar contiene una colección de objetos Button utilizados para crear una barra de herramientas asociada a una aplicación.

Sintaxis

Toolbar

Comentarios

Normalmente, una barra de herramientas contiene botones que corresponden a elementos de menú de una aplicación, proporcionando una interfaz gráfica al usuario que le permite tener acceso a las funciones y comandos empleados con más frecuencia en esa aplicación.

El control Toolbar le permite crear barras de herramientas agregando objetos Button a una colección Buttons; cada objeto Button puede tener texto opcional o una imagen, proporcionados por un control ImageList asociado. Puede mostrar una imagen en un botón con la propiedad Image o mostrar texto con la propiedad Caption, o ambos, para cada objeto Button. En tiempo de diseño puede agregar objetos Button al control utilizando la Página de propiedades del control Toolbar. En tiempo de ejecución, puede agregar o quitar botones de la colección Buttons mediante los métodos Add y Remove.

Para programar el control Toolbar, agregue código al evento ButtonClick para que responda al botón seleccionado. También puede determinar el comportamiento y la apariencia de cada objeto Button mediante la propiedad Style. Por ejemplo, si a cuatro botones se les asigna el estilo ButtonGroup, sólo se podrá presionar uno de ellos y al menos uno estará siempre presionado.

Puede crear espacio para otros controles en la barra de herramientas si asigna a un objeto Button el estilo Placeholder y después coloca un control sobre el marcador de posición. Por ejemplo, para colocar en una barra de herramientas un cuadro combinado desplegable en tiempo de diseño, agregue un objeto Button con estilo PlaceHolder y dele el ancho de un control ComboBox. Después, coloque un ComboBox en el marcador de posición.

Al hacer doble clic en una barra de herramientas en tiempo de ejecución se invoca el cuadro de diálogo Personalizar barra de herramientas, que permite al usuario ocultar, mostrar o reorganizar los botones de la barra de herramientas. Para activar o desactivar el cuadro de diálogo, use la propiedad AllowCustomize. Puede invocar también el cuadro de diálogo Personalizar barra de herramientas mediante el método Customize. Si desea guardar y restaurar el estado de una barra de herramientas, o permitir al usuario hacerlo, puede elegir entre dos métodos: SaveToolbar y RestoreToolbar. El evento Change, que se genera cuando se altera una barra de herramientas, se usa normalmente para invocar el método SaveToolbar.

Nota   El cuadro de diálogo Personalizar también incluye un botón Ayuda. Utilice las propiedades HelpFile y HelpContextID para determinar qué archivo de Ayuda (si lo hay) se mostró la última vez que el usuario hizo clic en el botón Ayuda.

La facilidad de uso se mejora considerablemente programando descripciones ToolTipText de cada objeto Button. Para mostrar información sobre herramientas, la propiedad ShowTips debe establecerse a True. Cuando el usuario invoca el cuadro de diálogo Personalizar barra de herramientas, al hacer clic en un botón se muestra una descripción del botón en el cuadro de diálogo; esta descripción puede programarse mediante la propiedad Description.

Nota de distribución   El control Toolbar forma parte de un grupo de controles ActiveX que se encuentran en el archivo COMCTL32.OCX. Para usar el control Toolbar en su aplicación debe agregar el archivo COMCTL32.OCX al proyecto. Cuando distribuya su aplicación, instale el archivo COMCTL32.OCX en la carpeta System o System32 (en plataformas con Windows NT) de Microsoft Windows del usuario. Para obtener más información acerca de cómo agregar un control ActiveX a un proyecto, consulte "Cargar controles ActiveX" en la Guía de herramientas componentes.


Toolbar (Ejemplo del control)
Ejemplo del control Toolbar

Este ejemplo agrega varios objetos Button a un control Toolbar mediante el método Add y asigna imágenes proporcionadas por el control ImageList. El comportamiento de cada botón está determinado por la propiedad Style. El código crea botones que pueden utilizarse para abrir y guardar archivos e incluye un control ComboBox que se utiliza para cambiar el color de fondo del formulario. Para probar el ejemplo, coloque un control Toolbar, ImageList y un control ComboBox en un formulario y pegue el código en la sección Declaraciones del formulario. Asegúrese de que ha insertado el ComboBox directamente en el control Toolbar. Ejecute el ejemplo, haga clic en los distintos botones y seleccione algo del cuadro combinado.

Private Sub Form_Load()

    ' Crea una variable de objeto para ImageList.

    Dim imgX As ListImage

    ' Carga imágenes en el control ImageList.

    Set imgX = ImageList1.ListImages. _

    Add(, "abrir", LoadPicture("Graphics\bitmaps\tlbr_w95\open.bmp"))

    Set imgX = ImageList1.ListImages. _

    Add(, "guardar", LoadPicture("Graphics\bitmaps\tlbr_w95\save.bmp"))

    Toolbar1.ImageList = ImageList1

    ' Crea una variable de objeto para Toolbar.

    Dim btnX As Button

    ' Agrega objetos Button a la colección Buttons

 ' mediante el método Add.

    ' Después de crear cada botón se establecen las

    ' propiedades Description y ToolTipText.

    Toolbar1.Buttons.Add , , , tbrSeparator

    Set btnX = Toolbar1.Buttons.Add(, "abrir", , tbrDefault, "abrir")

    btnX.ToolTipText = "Abrir archivo"

    btnX.Description = btnX.ToolTipText

    Set btnX = Toolbar1.Buttons.Add(, "guardar", , tbrDefault, "guardar")

    btnX.ToolTipText = "Guardar archivo"

    btnX.Description = btnX.ToolTipText

    Set btnX = Toolbar1.Buttons.Add(, , , tbrSeparator)

    ' El siguiente botón tiene el estilo Placeholder.

 ' Se colocará un control ComboBox en la

 ' parte superior de este botón.

    Set btnX = Toolbar1.Buttons.Add(, "combo1", , tbrPlaceholder)

    btnX.Width = 1500 ' Ancho del marcador de posición para dar cabida a un cuadro combinado.

    Show ' Muestra el formulario para continuar configurando el ComboBox.

    ' Configura el control ComboBox para colocarlo en

 ' la misma posición que el objeto Button con el

    ' estilo Placeholder (key = "combo1").

    With Combo1

        .Width = Toolbar1.Buttons("combo1").Width

        .Top = Toolbar1.Buttons("combo1").Top

        .Left = Toolbar1.Buttons("combo1").Left

        .AddItem "Negro" ' Agrega colores al texto.

        .AddItem "Azul"

        .AddItem "Rojo"

        .ListIndex = 0

    End With

End Sub

Private Sub Form_Resize()

    ' Configura el control ComboBox.

    With Combo1

        .Width = Toolbar1.Buttons("combo1").Width

        .Top = Toolbar1.Buttons("combo1").Top

        .Left = Toolbar1.Buttons("combo1").Left

    End With

End Sub

Private Sub toolbar1_ButtonClick(ByVal Button As Button)

    ' Utiliza la propiedad Key con la instrucción

    ' SelectCase para especificar una acción.

    Select Case Button.Key

    Case Is = "abrir"           ' Abre archivo.

        MsgBox "Agregue código para abrir el archivo"

    Case Is = "guardar"              ' Guarda archivo.

        MsgBox "Agregue código para guardar el código"

    End Select

End Sub

Private Sub Combo1_Click()

    ' Cambia el color del fondo utilizando el ComboBox.

    Select Case Combo1.ListIndex

    Case 0

        Form1.BackColor = vbBlack

    Case 1

        Form1.BackColor = vbBlue

    Case 2

        Form1.BackColor = vbRed

    End Select

End Sub


Button (Objeto)

Un objeto Button representa un botón individual de la colección Buttons de un control Toolbar.

Comentarios

En cada objeto Button puede agregar texto, una imagen de mapa de bits o ambos desde un control ImageList y establecer propiedades para cambiar su estado y estilo.

En tiempo de diseño, utilice los botones Insertar botón y Quitar botón de la ficha Botones de la Página de propiedades del control Toolbar para insertar y quitar objetos Button de la colección Buttons. En tiempo de ejecución también puede agregar objetos Button mediante el método Add de la colección Buttons.

En tiempo de diseño y en tiempo de ejecución puede establecer las propiedades Caption, Image, Value, MixedState y ToolTipText para cambiar la apariencia de cada objeto Button.

Cuando se hace clic en un botón del control Toolbar se llama al evento ButtonClick con el objeto Button seleccionado como parámetro. Para realizar alguna acción cuando se haga clic en un botón, utilice las propiedades Index o Key en una instrucción Select Case como en este código de ejemplo:

Select Case Button.Key

    Case Is = "abrir" ' Abrir archivo.

    ' Agregue aquí código para abrir un archivo

    Case Is = "guardar" ' Guardar archivo.

    ' Agregue aquí código para guardar un archivo

    Case Else

    ' Si se hace clic en cualquier otro botón

End Select


Buttons (Colección)

Una colección Buttons es una colección de objetos Button de un control Toolbar.

Sintaxis

toolbar.Buttons(índice)

toolbar.Buttons.Item(índice)

La sintaxis de la colección Buttons consta de las siguientes partes:

Parte	Descripción
toolbar	Una expresión de objeto que da como resultado un control Toolbar.
índice	Un valor de tipo entero o de cadena que identifica de manera única el objeto de la colección. El valor entero es el valor de la propiedad Index; el valor de cadena es el valor de la propiedad Key.
Comentarios

La colección Buttons es una colección basada en 1, lo que significa que su propiedad Index comienza con el número 1 (en lugar de 0 como en las colecciones basadas en 0).

Puede tener acceso a cada elemento de la colección por su índice o por una clave única. Por ejemplo, para obtener una referencia al tercer objeto Button de una colección, use la siguiente sintaxis:

Dim btnX As Button

' Hace referencia por el número del índice.

Set btnX = Toolbar1.Buttons(3)

' O por una clave única.

Set btnX = Toolbar1.Buttons("tercero") ' Asume que la clave es "tercero".

' O utiliza el método Item.

Set btnX = Toolbar1.Buttons.Item(3)


Add (Método, colección Buttons)

Agrega un objeto Button a una colección Buttons y devuelve una referencia al objeto recién creado.

Sintaxis

objeto.Add(índice, clave, título, estilo, imagen)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado una colección Buttons.
índice	Opcional. Un entero que especifica la posición en la que desea insertar el objeto Button. Si no se especifica ningún índice, Button se agrega al final de la colección Buttons.
clave	Opcional. Una cadena única que identifica al objeto Button. Use este valor para recuperar un objeto Button específico.
título	Opcional. Una cadena que aparecerá bajo el objeto Button.
estilo	Opcional. El estilo de un objeto Button. Los estilos disponibles se detallan en la propiedad Style. (objeto Button).
imagen	Opcional. Un entero o clave única que especifica un objeto ListImage en un control ImageList asociado.
Comentarios

Puede agregar objetos Button en tiempo de diseño mediante la ficha Botones de la Página de propiedades del control Toolbar. En tiempo de ejecución, emplee el método Add para agregar objetos Button como en el ejemplo de código siguiente:

Dim btnButton as Button

Set btnButton = Toolbar1.Buttons.Add(, "abrir", , tbrDefault, "abrir")

Asocie un control ImageList con Toolbar mediante la propiedad ImageList del control Toolbar.


AllowCustomize (Propiedad)

Devuelve o establece un valor que determina si el usuario final puede personalizar un control Toolbar con el cuadro de diálogo Personalizar barra de herramientas.

Sintaxis

objeto.AllowCustomize [= booleano]

La sintaxis de la propiedad AllowCustomize consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Toolbar.
booleano	Una constante o un valor que determina si el usuario puede personalizar un control Toolbar, como se describe en Valores.
Valores

Los valores para booleano son:

Valor	Descripción
True	Permite al usuario final invocar el cuadro de diálogo Personalizar barra de herramientas haciendo doble clic en un control Toolbar.
False	No se permite la personalización del control Toolbar con el cuadro de diálogo Personalizar barra de herramientas.
Comentarios

Si la propiedad AllowCustomize se establece a True, se invocará el cuadro de diálogo Personalizar barra de herramientas al hacer doble clic en un control Toolbar.

Personalizar barra de herramientas también se puede invocar con el método Customize.


ButtonClick (Evento)

Ocurre cuando el usuario hace clic en un objeto Button de un control Toolbar.

Sintaxis

Private Sub object_ButtonClick(ByVal botón As Button)

La sintaxis del evento ButtonClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Toolbar.
botón	Una referencia al objeto Button en el que se ha hecho clic.
Comentarios

Para programar la respuesta de un objeto Button individual al evento ButtonClick, use el valor del argumento botón. Por ejemplo, el siguiente fragmento de código usa la propiedad Key del objeto Button para determinar la acción apropiada.

Private Sub Toolbar1_ButtonClick(ByVal Button As Button)

Select Case Button.Key

Case "Abrir"

CommonDialog1.ShowOpen

Case "Guardar"

CommonDialog1.ShowSave

End Select

End Sub

Nota   Como el usuario puede reorganizar los objetos Button mediante el cuadro de diálogo Personalizar barra de herramientas, el valor de la propiedad Index puede no siempre indicar la posición del botón. Por tanto, es preferible emplear el valor de la propiedad Key para recuperar un objeto Button.


ButtonHeight, ButtonWidth (Propiedades)

Devuelve o establece el alto y el ancho de los botones de un control Toolbar.

Sintaxis

objeto.ButtonHeight [= número]

objeto.ButtonWidth [= número]

Las sintaxis de las propiedades ButtonHeight y ButtonWidth constan de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Toolbar.
número	Una expresión numérica que especifica las dimensiones de todos los botones del control que tienen el estilo Button, Check o ButtonGroup.
Comentarios

ButtonHeight y ButtonWidth utilizan las unidades de escala del contenedor del control Toolbar, determinadas con la propiedad ScaleMode del contenedor.

De forma predeterminada, las propiedades ButtonWidth y ButtonHeight se actualizan automáticamente para dar cabida a la cadena de la propiedad Caption o la imagen de la propiedad Image del objeto Button.


Buttons (Propiedad)

Devuelve una referencia a una colección de objetos Button de un control Toolbar.

Sintaxis

objeto.Buttons

El marcador de posición objeto es una expresión de objeto que da como resultado un control Toolbar.

Comentarios

Puede manipular objetos Button mediante métodos de colección estándar (por ejemplo, los métodos Add y Remove). Es posible tener acceso a cada elemento de la colección por su índice, el valor de la propiedad Index, o por una clave única, el valor de la propiedad Key.


Customize (Método)

Llama al cuadro de diálogo Personalizar barra de herramientas, que permite al usuario reorganizar u ocultar objetos Button en un control Toolbar.

Sintaxis

objeto.Customize

El marcador de posición objeto es una expresión de objeto que da como resultado un control Toolbar.

Comentarios

El control Toolbar contiene un cuadro de diálogo incorporado que permite al usuario ocultar, mostrar o reorganizar botones en una barra de herramientas. Al hacer doble clic en la barra de herramientas se llama al método Customize, que presenta el cuadro de diálogo.

Utilice el método Customize cuando desee restringir la alteración de la barra de herramientas. Por ejemplo, el siguiente código permite al usuario personalizar la barra de herramientas sólo si se proporciona una contraseña:

Private Sub Command1_Click()

If InputBox("Contraseña:") = "Chorus&Line9" Then

Toolbar1.Customize	' Llama al método Customize

End If

End Sub

Para proteger el estado de un control Toolbar, el método SaveToolbar escribe en el registro de Windows. Puede restaurar un control Toolbar a su estado anterior mediante el método RestoreToolbar para leer la información guardada anteriormente en el registro.


Description (Propiedad, objeto Button)

Devuelve o establece el texto de la descripción de un objeto Button, que se muestra en el cuadro de diálogo Personalizar barra de herramientas.

Sintaxis

objeto.Description [= cadena]

La sintaxis de la propiedad Description consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Button.
cadena	La cadena que se muestra en el cuadro de diálogo Personalizar barra de herramientas cuando se hace clic en el botón.
Comentarios

En tiempo de ejecución, el cuadro de diálogo Personalizar barra de herramientas puede invocarse mediante un doble clic en el control Toolbar o bien mediante programa usando el método Customize. En cualquier caso, cuando el usuario hace clic en un botón del cuadro de diálogo, se muestra una descripción del botón en la esquina inferior izquierda del cuadro de diálogo. El texto de esta descripción se establece con la propiedad Description.

Puede establecer el texto de Description al agregar un objeto Button, como sigue:

Dim btnX As Button

' Agrega un botón con la clave "guardar"

Set btnX = Toolbar1.Buttons.Add(,"guardar")

btnX.Description = "Guardar un archivo."


MixedState (Propiedad)

Devuelve o establece un valor que determina si un objeto Button de un control Toolbar aparece en un estado indeterminado.

Sintaxis

objeto.MixedState [= booleano]

La sintaxis de la propiedad MixedState consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Button.
booleano	Una expresión booleana que determina si un Button muestra el estado indeterminado, como se especifica en Valores.
Valores

Los valores de booleano son:

Valor	Descripción
True	El objeto Button está en estado indeterminado y se muestra atenuado.
False	El objeto Button no está en estado indeterminado y se muestra de la forma normal.
Comentarios

La propiedad MixedState se usa normalmente cuando una selección contiene diversos atributos. Por ejemplo, si selecciona texto que contiene tanto caracteres sin formato (normales) como caracteres en negrita, se usará la propiedad MixedState. La imagen mostrada por el objeto Button podría cambiarse para indicar su estado, que sería distinto del valor Checked o Unchecked devuelto por la propiedad Value.


RestoreToolbar (Método)

Restaura una barra de herramientas, creada con un control Toolbar, a su estado original después de personalizarla.

Sintaxis

objeto.RestoreToolbar(clave As String, subclave As String, valor As String)

La sintaxis del método RestoreToolbar consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un control Toolbar.
clave	Requerido. Un entero que especifica la clave del registro de Windows de donde el método recupera la información de Toolbar.
subclave	Requerido. Una cadena que especifica una subclave en el parámetro clave del registro.
valor	Requerido. Una expresión de cadena que identifica el valor de subclave donde se almacena la información de Toolbar en el registro.
Comentarios

Advertencia   Cuando se utiliza el método RestoreToolbar, los botones de la barra de herramientas que no contengan objetos ImageList o ListImage desaparecerán. Un usuario puede volver a hacerlos visibles mediante el botón Restablecer del cuadro de diálogo Personalizar barra de herramientas. Puede utilizar el método Customize para llamar mediante un programa a este cuadro de diálogo para el usuario.

Para personalizar el control Toolbar en tiempo de ejecución, utilice en el código el método Customize o bien, si la propiedad AllowCustomize es True, el usuario puede personalizarla haciendo doble clic en el control.

El estado de la barra de herramientas se puede guardar en el registro mediante el método SaveToolbar. El método RestoreToolbar restaura el estado de una barra de herramientas leyendo del registro.

El siguiente código restaura el valor del control Toolbar para el usuario actual, suponiendo que lo ha guardado anteriormente con el método SaveToolbar.

Toolbar1.RestoreToolbar "AppName", "User1", "Toolbar1"


SaveToolbar (Método)

En tiempo de ejecución, guarda el estado de una barra de herramientas, creada con el control Toolbar, en el registro. No acepta argumentos con nombre.

Sintaxis

objeto.SaveToolbar(clave As String, subclave As String, valor As String)

El método SaveToolbar consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un control Toolbar.
clave	Requerido. Una expresión de cadena que especifica la clave del registro donde el método almacena la información de Toolbar.
subclave	Requerido. Una expresión de cadena que especifica una ubicación del registro bajo el parámetro clave anterior.
valor	Requerido. La información de Toolbar que se va a almacenar en subclave.
Comentarios

Para personalizar el control Toolbar en tiempo de ejecución, utilice el método Customize en el código o bien, si la propiedad AllowCustomize es True, el usuario puede personalizarla haciendo doble clic en el control.

Si la clave, subclave o valor que especifique no existe en el registro, se creará una nueva.

Para guardar más de una versión de la barra de herramientas, puede cambiar el parámetro subclave o valor. Esto hará que la barra de herramientas se escriba en otro sitio del registro. El siguiente código guarda dos estados distintos de una barra de herramientas después de haberla personalizado.

' Guarda los valores de User1

Toolbar1.SaveToolbar "AppName", "User1", "Toolbar1"

' Guarda los valores de User2

Toolbar1.SaveToolbar "AppName", "User2", "Toolbar1"

Después de que se produzca el evento Change del control Toolbar una vez que se haya personalizado la barra de herramientas, en la mayoría de los casos el código anterior puede colocarse en el evento Change de la barra de herramientas.


Style (Propiedad, objeto Button)

Devuelve o establece una constante o un valor que determina la apariencia y el comportamiento de un objeto Button en un control Toolbar.

Sintaxis

objeto.Style [=valor]

La sintaxis de la propiedad Style consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto Button.
valor	Un valor de tipo constante o entero que determina la apariencia y el comportamiento de un objeto Button, como se especifica en Valores.
Valores

Los valores válidos para valor son:

Constante	Valor	Descripción
tbrDefault	0	(Predeterminado) Button. El botón es un botón de comando normal.
tbrCheck	1	Check. El botón es una casilla de verificación, que puede estar activada o desactivada.
tbrButtonGroup	2	ButtonGroup. El botón permanece presionado hasta que se presiona otro botón del grupo. Solamente un botón del grupo puede estar presionado en un momento determinado.
tbrSeparator	3	Separator. El botón funciona como un separador con un ancho fijo de 8 píxeles.
tbrPlaceholder	4	Placeholder. El botón es como un separador en cuanto a apariencia y funcionalidad, pero tiene un ancho ajustable.
Comentarios

Los botones que tienen el estilo ButtonGroup deben estar agrupados. Para distinguir un grupo, sitúe todos los objetos Button que tengan el mismo estilo (ButtonGroup) entre dos objetos Button con el estilo Separator.

También puede situar otro control en una barra de herramientas si asigna a un objeto Button el estilo PlaceHolder y después dibuja un control en la barra de herramientas. Por ejemplo, para colocar un cuadro combinado desplegable en una barra de herramientas en tiempo de diseño, agregue un objeto Button con el estilo PlaceHolder y dele el tamaño de un control ComboBox. Después sitúe el ComboBox en el marcador de posición.

Cuando a un objeto Button se le asigna el estilo PlaceHolder, puede establecer el valor de la propiedad Width para dar cabida a otro control situado en el Button. Si un objeto Button tiene el estilo Button, Check o ButtonGroup, el alto y el ancho quedan determinados por las propiedades ButtonHeight y ButtonWidth.

Si coloca un control en un botón con el estilo PlaceHolder, debe utilizar código para alinear y dar tamaño al control si se cambia el tamaño del formulario, como se muestra a continuación:

Private Sub Form_Resize()

' Ajusta un ComboBox estableciendo sus propiedades

' Top, Left y Width con el mismo valor que las

' propiedades Top, Left y Width de un objeto Button.

With Toolbar1.Buttons("Combo1")

Combo1.Move .Left,.Top,.Width

End With

End Sub


Wrappable (Propiedad)

Devuelve o establece un valor que determina si los botones del control Toolbar se ajustarán automáticamente cuando la ventana cambie de tamaño.

Sintaxis

objeto.Wrappable [= booleano]

La sintaxis de la propiedad Wrappable consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un control Toolbar.
booleano	Una expresión booleana que determina si los objetos Button de un control Toolbar se ajustarán, como se describe en Valores.
Valores

Los valores para booleano son:

Value	Descripción
True	Los botones del control Toolbar se ajustarán si cambia el tamaño del formulario.
False	Los botones del control Toolbar no se ajustarán si cambia el tamaño del formulario.


Toolbar (Constantes del control)
Constantes del control Toolbar

Constantes de Style

Constante	Valor	Descripción
tbrDefault	0	El botón es un botón de comando normal.
tbrCheck	1	El botón es una casilla de verificación.
tbrButtonGroup	2	El botón se mantiene presionado hasta que se presiona otro botón del grupo. Solamente un botón del grupo está presionado en un momento determinado.
tbrSeparator	3	El botón funciona como separador con una anchura fija de 8 pixeles.
tbrPlaceholder	4	El botón es como un separador en cuanto a apariencia y funcionalidad, pero tiene un ancho variable.
Constantes de Value

Constante	Valor	Descripción
tbrUnpressed	0	El botón no está presionado o activado en ese momento.
tbrPressed	1	El botón está presionado o activado en ese momento.


Controls (Propiedad, control Toolbar)

Devuelve una referencia a un colección de controles contenida en un objeto.

Sintaxis

objeto.Controls(índice)

objeto.Controls.Item(índice)

La sintaxis de la propiedad Controls consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
índice	Un valor que identifica a un miembro de la colección Controls.
Comentarios

La propiedad Controls es similar a la colección Controls de un objeto Form y se tiene acceso a ella de la misma forma. Por ejemplo, utilice el siguiente código para obtener la propiedad Top del segundo control de un control Toolbar:

MsgBox Toolbar1.Controls(2).Top

Con la propiedad Controls puede desplazarse por todos los controles de un objeto Tab o un control Toolbar y cambiar las propiedades de cada control como se muestra en el siguiente ejemplo:

For Each ContainedControl in Toolbar1.Controls

ContainedControl.Width = Toolbar1.Width / Toolbar1.Buttons.Count

Next

Nota   La colección Controls se refiere a un control contenido en el control Toolbar, como un control ComboBox y no los objetos Button, que forman parte del propio control.


HelpContextID (Propiedad, control Toolbar)

Devuelve o establece un número de contexto asociado para un objeto. Se utiliza para proporcionar Ayuda interactiva para su aplicación.

Nota   La propiedad HelpContextID del control Toolbar activa un vínculo a la Ayuda desde el cuadro de diálogo Personalizar barra de herramientas, no desde el propio control. Este comportamiento es diferente del de otros controles de Visual Basic que contienen la propiedad HelpContextID.

Sintaxis

objeto.HelpContextID [= número]

La sintaxis de la propiedad HelpContextID consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite objeto, el formulario asociado al módulo de formulario activo se supone que es objeto.
número	Una expresión numérica que especifica el número de contexto del tema de Ayuda asociado a objeto.
Valores

Los valores para número son:

Valor	Descripción
0	(Predeterminado) No se especifica ningún número de contexto.
> 0	Un entero que especifica un número de contexto válido.
Comentarios

Para la Ayuda interactiva acerca de un objeto de su aplicación debe asignar el mismo número de contexto tanto a objeto como al tema de Ayuda asociado cuando compile el archivo de Ayuda.

Si ha creado un archivo de Ayuda del entorno operativo Microsoft Windows para su aplicación y establece la propiedad HelpFile de la aplicación, cuando un usuario presione la tecla F1, Visual Basic llamará automáticamente a la Ayuda y buscará el tema identificado por el número de contexto actual.

El número de contexto actual es el valor de HelpContextID para el objeto que tiene el enfoque. Si HelpContextID se establece a 0, Visual Basic buscará en el HelpContextID del contenedor del objeto y después en el contenedor del objeto, y así sucesivamente. Si no se encuentra un número de contexto actual distinto de cero, se pasará por alto la tecla F1.

Para un control Menu, HelpContextID suele ser de lectura y escritura en tiempo de ejecución. HelpContextID es de sólo lectura para los elementos de menú expuestos o proporcionados por Visual Basic para los complementos, como el comando Administrador de complementos del menú Complementos.

Nota   Para generar un archivo de Ayuda se requiere el compilador de Ayuda de Microsoft Windows, que se incluye en la Edición profesional de Visual Basic.


HelpFile (Propiedad, control Toolbar)

Especifica la ruta de acceso y el nombre de un archivo de Ayuda de Microsoft Windows utilizado por su aplicación para mostrar Ayuda o documentación en pantalla.

Nota   La propiedad HelpFile del control Toolbar activa un vínculo a la Ayuda desde el cuadro de diálogo Personalizar barra de herramientas, no desde el propio control. Este comportamiento es diferente del de otros controles de Visual Basic que contienen la propiedad HelpFile.

Sintaxis

objeto.HelpFile[ = nombre_archivo]

La sintaxis de la propiedad HelpFile consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
nombre_archivo	Una expresión de cadena que especifica la ruta de acceso y el nombre del archivo de Ayuda de Windows para su aplicación.
Comentarios

Si ha creado un archivo de Ayuda de Windows para su aplicación y establece la propiedad HelpFile de la aplicación, cuando un usuario presione la tecla F1, Visual Basic llamará automáticamente a la Ayuda. Si la propiedad HelpContextID contiene un número de contexto para el control o el formulario activo, la Ayuda mostrará el tema correspondiente al contexto de Ayuda actual; de lo contrario, mostrará la pantalla principal de contenido.

También puede utilizar la propiedad HelpFile para determinar qué archivo de Ayuda se muestra cuando un usuario solicita Ayuda desde el Examinador de objetos para un componente ActiveX.

Nota   Para generar un archivo de Ayuda se requiere el compilador de Ayuda de Microsoft Windows, que se incluye en la Edición profesional de Visual Basic.


TreeView (Control)

Un control TreeView muestra una lista jerárquica de objetos Node, cada uno de los cuales consta de una etiqueta y un mapa de bits opcional. Los controles TreeView se utilizan habitualmente para mostrar los encabezados de un documento, las entradas de un índice, los archivos y directorios de un disco o cualquier otro tipo de información que pueda ser útil ver en una estructura jerárquica.

Sintaxis

Treeview

Comentarios

Una vez creado un control TreeView, puede agregar, quitar, organizar y manipular de diversas formas los objetos Node si establece propiedades e invoca métodos. Puede expandir y contraer mediante programa los objetos Node para mostrar u ocultar todos los nodos secundarios. Existen tres eventos, Collapse, Expand y NodeClick, que también ofrecen funcionalidad mediante programa.

Puede desplazarse por un árbol en el código si recupera una referencia a los objetos Node mediante las propiedades Root, Parent, Child, FirstSibling, Next, Previous y LastSibling. Los usuarios también pueden desplazarse por un árbol mediante el teclado. Las teclas FLECHA ARRIBA y FLECHA ABAJO recorren hacia abajo uno a uno todos los objetos Node expandidos. Los objetos Node se seleccionan de izquierda a derecha y de arriba abajo. En la parte inferior del árbol, la selección vuelve a la parte superior y la ventana se desplaza si es necesario. Las teclas FLECHA A LA DERECHA y FLECHA A LA IZQUIERDA también permiten desplazarse por los objetos Node expandidos, pero si presiona la tecla FLECHA A LA DERECHA cuando hay seleccionado un nodo no expandido, éste se expandirá y una segunda pulsación desplazará la selección al siguiente objeto Node. Por el contrario, al presionar FLECHA A LA IZQUIERDA cuando hay seleccionado un objeto Node expandido, éste se contrae Si el usuario presiona una tecla ANSI, el enfoque pasará al objeto Node más próximo que comience con esa letra. Si se presiona repetidamente la misma tecla, la selección recorrerá uno a uno todos los nodos expandidos que comiencen por esa letra.

Existen diversos estilos que modifican la apariencia del control. Los objetos Node pueden aparecer con una de ocho combinaciones posibles de texto, mapas de bits, líneas y signos más y menos.

El control TreeView utiliza el control ImageList, especificado por la propiedad ImageList, para almacenar los mapas de bits e iconos mostrados en los objetos Node. Un control TreeView sólo puede utilizar un control ImageList cada vez. Esto significa que todos los elementos del control TreeView tendrán una imagen del mismo tamaño junto a ellos al establecer la propiedad Style del control TreeView a un estilo que muestre imágenes.

Nota de distribución   El control TreeView forma parte de un grupo de controles ActiveX que se encuentran en el archivo COMCTL32.OCX. Para utilizar el control TreeView en su aplicación, debe agregar el archivo COMCTL32.OCX al proyecto. Cuando distribuya su aplicación, instale el archivo COMCTL32.OCX en el directorio System o System32 de Microsoft Windows del usuario.


TreeView (Constantes del control)
Constantes del control TreeView

Constantes de TreeLine

Constante	Valor	Descripción
tvwTreeLines	0	Se muestran las líneas del árbol.
tvwRootLines	1	Se muestran las líneas de raíz con las líneas del árbol.
Constantes de TreeRelationship

Constante	Valor	Descripción
tvwFirst	0	Primer objeto del mismo nivel.
tvwLast	1	Último objeto del mismo nivel.
tvwNext	2	Siguiente objeto del mismo nivel.
tvwPrevious	3	Anterior objeto del mismo nivel.
tvwChild	4	Secundario.
Constantes de TreeStyle

Constante	Valor	Descripción
tvwTextOnly	0	Sólo texto.
tvwPictureText	1	Imagen y texto.
tvwPlusMinusText	2	Más/menos y texto.
tvwPlusPictureText	3	Más/menos, imagen y texto.
tvwTreelinesText	4	Líneas de árbol y texto.
tvwTreelinesPictureText	5	Líneas de árbol, imagen y texto.
tvwTreelinesPlusMinusText	6	Líneas de árbol, más/menos y texto.
tvwTreelinesPlusMinusPictureText	7	Líneas de árbol, más/menos, imagen y texto.
Constantes de LabelEdit

Constante	Valor	Descripción
tvwAutomatic	0	La edición de etiquetas es automática.
tvwManual	1	La edición de etiquetas se debe invocar.


Node (Objeto, colección Nodes)

•	Un objeto Node es un elemento de un control TreeView que puede contener imágenes y texto.

•	Una colección Nodes contiene uno o más objetos Node.

Sintaxis

treeview.Nodes

treeview.Nodes.Item(índice)

Las líneas de sintaxis anteriores hacen referencia a la colección y sus elementos individuales, respectivamente, de acuerdo con la sintaxis de colección estándar.

La sintaxis del objeto Node y de la colección Nodes consta de las siguientes partes:

Parte	Descripción
treeview	Una expresión de objeto que da como resultado un control TreeView.
índice	Un entero o una cadena que identifica unívocamente a un miembro de una colección Nodes. El valor entero es el valor de la propiedad Index, mientras que la cadena es el valor de la propiedad Key.
Comentarios

Los nodos pueden contener texto e imágenes. Sin embargo, para utilizar imágenes es necesario asociar un control ImageList mediante la propiedad ImageList.

Las imágenes pueden variar dependiendo del estado del nodo. Por ejemplo, un nodo seleccionado puede tener una imagen distinta de uno que no lo esté si establece la propiedad SelectedImage a una imagen del control ImageList asociado.


Add (Método, colección Nodes)

Agrega un objeto Node a la colección Nodes de un control TreeView.

Sintaxis

objeto.Add(relativa, relación, clave, texto, imagen, imagen_seleccionada)

La sintaxis del método Add consta de las siguientes partes:

Parte	Descripción
objeto	Requerido. Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
relativa	Opcional. El número de índice o clave de un objeto Node ya existente. Su relación con el nuevo nodo viene determinada por el argumento siguiente, relación.
relación	Opcional. Especifica la ubicación relativa del objeto Node, como se describe en Valores.
clave	Opcional. Una cadena única que puede utilizarse para recuperar el objeto Node con el método Item.
texto	Requerido. La cadena que aparece en el objeto Node.
imagen	Opcional. El índice de una imagen de un control ImageList asociado.
imagen_seleccionada	Opcional. El índice de una imagen de un control ImageList asociado que se muestra cuando se selecciona el objeto Node.
Valores

Los valores válidos para relación son:

Constante	Valor	Descripción
tvwFirst	0	Primero. El objeto Node se sitúa antes de todos los demás nodos al mismo nivel que el especificado en relativo.
tvwLast	1	Último. El objeto Node se sitúa después de todos los demás nodos al mismo nivel que el especificado en relativo. Los objetos Node que se agregan secuencialmente se irán situando detrás del último agregado.
tvwNext	2	(Predeterminado) Siguiente. El objeto Node se sitúa después del especificado en relativo.
tvwPrevious	3	Anterior. El objeto Node se sitúa antes del especificado en relativo.
tvwChild	4	Secundario. El objeto Node es secundario con respecto al nodo especificado en relativo.
Nota   Si no se especifica ningún objeto Node en relativo, el nuevo nodo se situará en la última posición del nivel superior de la jerarquía de nodos.

Comentarios

La colección Nodes empieza a numerar por 1.

A medida que se agrega un objeto Node se le asigna un número de índice que se almacena en su propiedad Index. El valor de índice del último miembro agregado es el valor de la propiedad Count de la colección Nodes.

Como el método Add devuelve una referencia al objeto Node recién creado, resulta útil establecer las propiedades del nuevo objeto Node usando esta referencia. En el ejemplo siguiente se agregan varios objetos Node con las mismas propiedades:

Dim nodX As Node	' Declara la variable de objeto.

Dim I as Integer	' Declara una variable contador.

For I = 1 to 4

Set nodX = TreeView1.Nodes.Add(,,,"Nodo " & Cstr(i))

' Usa la referencia para establecer otras propiedades, como Enabled.

nodX.Enabled = True

' Establece la imagen 3 de un control ImageList asociado.

nodX.ExpandedImage = 3

Next I


Add (Ejemplo del método) (Colección Nodes)
Ejemplo del método Add (Colección Nodes)

En el ejemplo siguiente se agregan dos objetos Node a un control TreeView. Para probar el ejemplo, agregue a un formulario un control TreeView y pegue el código en la sección Declaraciones de dicho formulario. Ejecute el ejemplo y haga clic en el objeto Node para expandirlo.

Private Sub Form_Load()

' Establece propiedades del control ImageList.

TreeView1.LineStyle = tvwRootLines  ' Linestyle = 1

' Agrega los objetos Node.

Dim nodX As Node    ' Declara una variable Node.

' Primer nodo con el texto 'Raíz'.

Set nodX = TreeView1.Nodes.Add(, , "r", "Raíz")

' Este nodo es secundario de Node 1 ("Raíz").

Set nodX = TreeView1.Nodes.Add("r", tvwChild, "child1", "Secundario")

End Sub


Child (Propiedad, control TreeView)

Devuelve una referencia al primer elemento secundario de un objeto Node de un control TreeView.

Sintaxis

objeto.Child

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible hacer referencia a un objeto Node y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(TreeView1.SelectedItem.Index).Child

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También es posible establecer una variable de objeto al objeto Node referenciado, de esta forma:

Dim NodChild As Node

' Obtiene una referencia al secundario del nodo seleccionado.

Set NodChild = TreeView1.Nodes(TreeView1.SelectedItem.Index).Child

' Utiliza la referencia para realizar operaciones con el

' nodo secundario.

With nodChild

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


Child (Ejemplo de la propiedad)
Ejemplo de la propiedad Child

En este ejemplo se crean varios objetos Node. Al hacer clic en un objeto Node, el código utiliza primero la propiedad Children para determinar si el Node tiene nodos secundarios. En caso afirmativo, el título del formulario muestra el texto del nodo Child.

Option Explicit

Private Sub Form_Load()

' Este código crea un árbol con 3 objetos Node.

TreeView1.Style = tvwTreelinesPlusMinusText ' Estilo 6.

TreeView1.LineStyle = tvwRootLines 	'Estilo de línea 1.

' Agrega varios objetos Node.

Dim nodX As Node    ' Crea variable.

Set nodX = TreeView1.Nodes.Add(, , "r", "Raíz")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, "c1", "Secundario 1")

nodX.EnsureVisible ' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("c1", tvwChild, "c2", "Secundario 2")

Set nodX = TreeView1.Nodes.Add("c1", tvwChild, "c3", "Secundario 3")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

' Si el nodo tiene secundarios, se muestra el texto

' del Node secundario.

If Node.Children Then

Caption = Node.Child.Text

End If

End Sub


Children (Propiedad)

Devuelve el número de objetos Node secundarios contenidos en un objeto Node.

Sintaxis

objeto.Children

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

La propiedad Children puede utilizarse para comprobar si un objeto Node tiene secundarios antes de realizar una operación que les afecte. Por ejemplo, el código siguiente comprueba con la propiedad Child si existen nodos secundarios antes de recuperar la propiedad Text del primer objeto Node.

Private Sub TreeView1_NodeClick(ByVal Node As Node)

If Node.Children > 0 Then

MsgBox Node.Child.Text

End If

End Sub


Children (Ejemplo de la propiedad)
Ejemplo de la propiedad Children

En este ejemplo se agregan varios objetos Node a un control TreeView. El código comprueba cada objeto Node para averiguar si tiene nodos secundarios. En caso afirmativo, muestra el texto de estos nodos. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones del mismo. Ejecute el ejemplo, haga clic en un objeto Node para seleccionarlo y después haga clic en el formulario para ver el texto de sus nodos secundarios.

Option Explicit

Private Sub Form_Click()

Dim strC As String

Dim N As Integer

If TreeView1.SelectedItem.Children > 0 Then ' Hay secundarios.

' Obtiene el texto del primer secundario y

' establece a N su índice.

strC = TreeView1.SelectedItem.Child.Text & vbLF

N = TreeView1.SelectedItem.Child.Index

' Mientras N no sea el índice del último nodo del

' mismo nivel que el secundario, obtiene el

' texto del secundario siguiente.

While N <> TreeView1.SelectedItem.Child.LastSibling.Index

strC = strC & TreeView1.Nodes(N).Next.Text & vbLF

' Restablece a N el índice del siguiente secundario.

N = TreeView1.Nodes(N).Next.Index

Wend

' Muestra el resultado.

MsgBox "Los secundarios de " & TreeView1.SelectedItem.Text & _

" son: " & vbLF & strC

Else ' No tiene secundarios.

MsgBox TreeView1.SelectedItem.Text & " no tiene secundarios"

End If

End Sub

Private Sub Form_Load()

TreeView1.BorderStyle = 1  ' Se asegura de que el borde sea visible

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"d","Fechas")

Set nodX = TreeView1.Nodes.Add("d",tvwChild,"d89","1989")

Set nodX = TreeView1.Nodes.Add("d",tvwChild,"d90","1990")

' Crea los secundarios del nodo 1989.

Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"John")

Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Brent")

Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Eric")

Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Ian")

nodX.EnsureVisible ' Muestra todos los nodos.

' Crea los secundarios del nodo 1990.

Set nodX = TreeView1.Nodes.Add("d90",tvwChild, ,"Randy")

Set nodX = TreeView1.Nodes.Add("d90",tvwChild, ,"Ron")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub


Collapse (Evento, control TreeView)

Se genera al contraer cualquier objeto Node de un control TreeView.

Sintaxis

Private Sub objeto_Collapse(ByVal nodo As Node)

La sintaxis del evento Collapse consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
nodo	Una referencia al objeto Node en el que se ha hecho clic.
Comentarios

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.

El evento pasa una referencia al objeto Node contraído. Esta referencia puede utilizarse para validar una acción, como en el ejemplo siguiente:

Private Sub TreeView1_Collapse(ByVal Node As Node)

If Node.Index = 1 Then

Node.Expanded = True	' Expande el nodo de nuevo.

End If

End Sub


Collapse (Ejemplo del evento) (Control TreeView)
Ejemplo del evento Collapse (Control TreeView)

En este ejemplo se agrega a un control TreeView un objeto Node con varios nodos secundarios. Cuando el usuario contrae un objeto Node, el código realiza una comprobación para ver cuántos secundarios tiene el Node. Si tiene más de uno, el objeto Node vuelve a expandirse. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga doble clic en un Node para contraerlo y generar el evento.

Private Sub Form_Load()

TreeView1.Style = tvwTreelinesPlusMinusText ' Estilo 6.

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"DV","Da Vinci")

Set nodX = TreeView1.Nodes.Add("DV",tvwChild,"T","Tiziano")

Set nodX = TreeView1.Nodes.Add("T",tvwChild,"R","Rembrandt")

Set nodX = TreeView1.Nodes.Add("R",tvwChild,,"Goya")

Set nodX = TreeView1.Nodes.Add("R",tvwChild,,"David")

nodX.EnsureVisible	' Muestra todos los nodos.

End Sub

Private Sub TreeView1_Collapse(ByVal Node As Node)

' Si el nodo tiene más de un secundario,

' lo mantiene expandido.

Select Case Node.Children

Case Is > 1

Node.Expanded = True

End Select

End Sub


AfterLabelEdit (Evento, controles ListView y TreeView)

Se produce cuando un usuario termina de modificar la etiqueta del objeto Node o ListItem seleccionado actualmente.

Sintaxis

Private Sub objeto_AfterLabelEdit(cancelar As Integer, nueva_cadena As String)

La sintaxis del evento AfterLabelEdit consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
cancelar	Un entero que determina si la operación de edición de etiqueta debe cancelarse. Cualquier entero distinto de cero cancelará la operación. También se admiten valores booleanos.
nueva_cadena	La cadena que ha escrito el usuario o Null si el usuario ha cancelado la operación.
Comentarios

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.

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 ListItem 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 nueva_cadena puede utilizarse para comprobar una condición antes de cancelar una operación. Por ejemplo, el código siguiente cancela la operación si nueva_cadena 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


AfterLabelEdit (Ejemplo del evento) (Controles ListView y TreeView)
Ejemplo del evento AfterLabelEdit (Controles ListView y TreeView)

En este ejemplo se agregan tres objetos Node a un control TreeView. Al intentar modificar la etiqueta de un objeto Node, se comprueba el índice del objeto. Si es 1, la operación se cancela. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, haga clic dos veces en la etiqueta del objeto Node superior para modificarla, escriba texto y presione ENTRAR.

Private Sub Form_Load()

TreeView1.Style = tvwTreelinesText ' Líneas y texto.

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,,"Primario")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Secundario1")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Secundario2")

nodX.EnsureVisible	' Se asegura de que todos los nodos sean visibles.

End Sub

Private Sub TreeView1_AfterLabelEdit _

(Cancel As Integer, NewString As String)

' Si el índice del nodo actual es 1, se cancela la edición.

If TreeView1.SelectedItem.Index = 1 Then

Cancel = True

MsgBox "No se puede reemplazar " & TreeView1.SelectedItem.Text & _

" por " & NewString

End If

End Sub

Este ejemplo agrega tres objetos ListItem a un control ListView. Al intentar modificar la etiqueta de un objeto ListItem, se comprueba el índice del objeto. Si es 1, la operación se cancela. Para probar el ejemplo, agregue un control ListView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, haga clic dos veces en la etiqueta de cualquier objeto ListItem para modificarla, escriba texto y presione ENTRAR.

Private Sub Form_Load()

Dim itmX As ListItem

Set itmX = ListView1.ListItems.Add(,,"Elemento 1")

Set itmX = ListView1.ListItems.Add(,,"Elemento 2")

Set itmX = ListView1.ListItems.Add(,,"Elemento 3")

End Sub

Private Sub ListView1_AfterLabelEdit _

(Cancel As Integer, NewString As String)

' Si el índice del objeto ListItem actual es 1, se cancela la edición.

If ListView1.SelectedItem.Index = 1 Then

Cancel = True

MsgBox "No se puede reemplazar " & ListView1.SelectedItem.Text & _

" por " & NewString

End If

End Sub


BeforeLabelEdit (Evento, controles ListView y TreeView)

Se produce cuando el usuario intenta modificar la etiqueta del objeto ListItem o Node seleccionado actualmente.

Sintaxis

Private Sub objeto_BeforeLabelEdit(cancelar As Integer)

La sintaxis del evento BeforeLabelEdit consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
cancelar	Un entero que determina si la operación de edición de etiqueta debe cancelarse. Cualquier entero distinto de cero cancelará la operación. El valor predeterminado es 0.
Comentarios

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.

El evento BeforeLabelEdit se produce después del evento Click estándar.

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


BeforeLabelEdit (Ejemplo del evento) (Controles ListView y TreeView)
Ejemplo del evento BeforeLabelEdit (Controles ListView y TreeView)

En este ejemplo se agregan varios objetos Node a un control TreeView. Al intentar modificar una etiqueta, se comprueba el índice del objeto Node. Si es 1, se impide la edición. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo e intente modificar las etiquetas.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"P1","Primario 1")

Set nodX = TreeView1.Nodes.Add("P1",tvwChild,,"Secundario 1")

Set nodX = TreeView1.Nodes.Add("P1",tvwChild,,"Secundario 2")

nodX.EnsureVisible	' Se asegura de que todos los nodos sean visibles.

End Sub

Private Sub TreeView1_BeforeLabelEdit(Cancel As Integer)

' Comprueba el índice del nodo seleccionado. Si es 1,

' cancela la operación de edición.

If TreeView1.SelectedItem.Index = 1 Then

MsgBox "No se puede modificar " + TreeView1.SelectedItem.Text

Cancel = True

End If

End Sub

Este ejemplo agrega varios objetos ListItem a un control ListView. Si intenta modificar una etiqueta, se comprobará el índice del objeto ListItem. Si es 1, se impide la edición. Para probar el ejemplo, agregue un control ListView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y pruebe a modificar las etiquetas.

Private Sub Form_Load()

Dim nodX As ListViewItem

Set nodX = ListView1.ListItems.Add(, , "Elemento 1")

Set nodX = ListView1.ListItems.Add(, , "Elemento 2")

Set nodX = ListView1.ListItems.Add(, , "Elemento 3")

End Sub

Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)

' Comprueba el índice del elemento seleccionado. Si es

' 1, se cancela la operación de edición.

If ListView1.SelectedItem.Index = 1 Then

MsgBox "No se puede modificar " + ListView1.SelectedItem.Text

Cancel = True

End If

End Sub


CreateDragImage (Método)

Crea una imagen de arrastre con una versión difuminada de la imagen asociada a un objeto. Normalmente, esta imagen se utiliza en las operaciones de arrastrar y colocar.

Sintaxis

objeto.CreateDragImage

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Normalmente, el método CreateDragImage se utiliza para asignar una imagen a una propiedad DragIcon al inicio de una operación de arrastrar y colocar.


CreateDragImage (Ejemplo del método)
Ejemplo del método CreateDragImage

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un objeto Node, puede arrastrarlo hasta cualquier otro objeto Node. Para probar el ejemplo, agregue un control TreeView y un control ImageList a un formulario y pegue el código en la sección Declaraciones del formulario. Ejecute el ejemplo y arrastre objetos Node para ver el resultado.

' Declara variables globales.

Dim indrag As Boolean 'Indicador de operación de arrastrar y colocar.

Dim nodX As Object ' Elemento que se arrastra.

Private Sub Form_Load()

' Carga un mapa de bits en un control Imagelist.

Dim imgX As ListImage

Dim BitmapPath As String

BitmapPath = "icons\mail\mail01a.ico"

Set imgX = imagelist1.ListImages.Add(, , LoadPicture(BitmapPath))

' Inicializa el control TreeView y crea varios nodos.

TreeView1.ImageList = imagelist1

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(, , , "Primario 1", 1)

Set nodX = TreeView1.Nodes.Add(, , , "Primario 2", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 1", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 2", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 3", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 4", 1)

Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Secundario 5", 1)

nodX.EnsureVisible ' Expande el árbol para mostrar todos los nodos.

End Sub

Private Sub TreeView1_MouseDown _

(Button As Integer, Shift As Integer, x As Single, y As Single)

Set nodX = TreeView1.SelectedItem ' Establece el elemento arrastrado.

End Sub

Private Sub TreeView1_MouseMove _

(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = vbLeftButton Then ' Indica una operación de arrastrar.

indrag = True ' Establece el indicador a verdadero.

' Establece el icono de arrastre con el método

' CreateDragImage.

TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage

TreeView1.Drag vbBeginDrag ' Operación de arrastre.

End If

End Sub

Private Sub TreeView1_DragDrop _

(Source As Control, x As Single, y As Single)

If TreeView1.DropHighlight Is Nothing Then

Set TreeView1.DropHighlight = Nothing

indrag = False

Exit Sub

Else

If nodX = TreeView1.DropHighlight Then Exit Sub

Cls

Print nodX.Text & " colocado en " & TreeView1.DropHighlight.Text

Set TreeView1.DropHighlight = Nothing

indrag = False

End If

End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)

If indrag = True Then

' Establece las coordenadas del mouse en

' DropHighlight.

Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)

End If

End Sub


DropHighlight (Propiedad, controles ListView y TreeView)

Devuelve o establece una referencia a un objeto Node o ListItem resaltado con el color de resalte del sistema cuando se mueve el cursor a dicho objeto.

Sintaxis

objeto.DropHighlight [ = valor]

La sintaxis de la propiedad DropHighlight consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
valor	Un objeto Node o ListItem.
Comentarios

Normalmente, la propiedad DropHighlight se usa junto con el método HitTest en las operaciones de arrastrar y colocar. Al arrastrar el cursor sobre un objeto ListItem o Node, el método HitTest devuelve una referencia al objeto sobre el que se arrastra. A su vez, la propiedad DropHighlight se establece a ese objeto y simultáneamente devuelve una referencia al mismo. La propiedad DropHighlight resalta entonces el objeto con el color de resalte del sistema. El código siguiente establece la propiedad DropHighlight al objeto indicado por el método HitTest.

Private Sub TreeView1_DragOver _

(Source As Control, X As Single, Y As Single, State As Integer)

Set TreeView1.DropHighlight = TreeView1.HitTest(X,Y)

End Sub

Posteriormente puede utilizar la propiedad DropHighlight en el evento DragDrop para obtener una referencia al último objeto sobre el que se ha colocado el control de origen, como se muestra en el código siguiente:

Private Sub TreeView1_DragDrop _

(Source As Control, x As Single, y As Single)

' DropHighlight devuelve una referencia al objeto sobre el

' que se ha colocado.

Me.Caption = TreeView1.DropHighlight.Text

' Para liberar la referencia de DropHighlight, se

' establece a Nothing.

Set TreeView1.DropHighlight = Nothing

End Sub

Observe que en el ejemplo anterior se establece a Nothing la propiedad DropHighlight después de completar el procedimiento. Esto es necesario para que desaparezca el efecto de resalte.


DropHighlight (Ejemplo de la propiedad)
Ejemplo de la propiedad DropHighlight

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un objeto Node, puede arrastrarlo hasta cualquier otro objeto Node. Para probar el ejemplo, agregue un control TreeView y un control ImageList a un formulario y pegue el código en su sección Declaraciones. Ejecute el ejemplo y arrastre objetos Node para ver el resultado.

' Declara variables globales.

Dim indrag As Boolean 'Indicador de operación de arrastrar y colocar

Dim nodX As Object ' Elemento que se arrastra.

Private Sub Form_Load()

' Carga un mapa de bits en un control Imagelist.

Dim imgX As ListImage

Dim BitmapPath As String

BitmapPath = "icons\mail\mail01a.ico"

Set imgX = imagelist1.ListImages.Add(, , LoadPicture(BitmapPath))

' Inicializa el control TreeView y crea varios nodos.

TreeView1.ImageList = imagelist1

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(, , , "Primario 1", 1)

Set nodX = TreeView1.Nodes.Add(, , , "Primario 2", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 1", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 2", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 3", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 4", 1)

Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Secundario 5", 1)

nodX.EnsureVisible ' Expande el árbol para mostrar todos los nodos.

End Sub

Private Sub TreeView1_MouseDown _

(Button As Integer, Shift As Integer, x As Single, y As Single)

Set nodX = TreeView1.SelectedItem ' Elemento arrastrado.

End Sub

Private Sub TreeView1_MouseMove _

(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = vbLeftButton Then ' Indica una operación de arrastrar.

indrag = True ' Establece el indicador como verdadero.

' Establece el icono de arrastre con el método CreateDragImage.

TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage

TreeView1.Drag vbBeginDrag ' Operación de arrastre.

End If

End Sub

Private Sub TreeView1_DragDrop _

(Source As Control, x As Single, y As Single)

If TreeView1.DropHighlight Is Nothing Then

Set TreeView1.DropHighlight = Nothing

indrag = False

Exit Sub

Else

If nodX = TreeView1.DropHighlight Then Exit Sub

Cls

Print nodX.Text & " colocado en " & TreeView1.DropHighlight.Text

Set TreeView1.DropHighlight = Nothing

indrag = False

End If

End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)

If indrag = True Then

' Establece las coordenadas del mouse en DropHighlight.

Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)

End If

End Sub


EnsureVisible (Método)

Asegura que el objeto ListItem o Node especificado sea visible. Si es necesario, este método expande objetos Node y desplaza el control TreeView. Este método sólo desplaza el control ListView.

Sintaxis

objeto.EnsureVisible

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Valores devueltos

Valor	Descripción
True	El método devuelve True si el control ListView o TreeView debe desplazarse o expandirse para exponer el objeto.
False	El método devuelve False si no es necesario desplazar ni expandir el control.
Comentarios

Puede utilizar el método EnsureVisible cuando desee hacer visible un determinado objeto Node o ListItem, que puede estar oculto en un control TreeView o ListView.


EnsureVisible (Ejemplo del método)
Ejemplo del método EnsureVisible

En este ejemplo se agregan varios nodos a un control TreeView y se utiliza el método EnsureVisible para desplazar y expandir el árbol. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el formulario para ver cómo se expande el control TreeView.

Private Sub Form_Load()

Dim nodX As Node

Dim i as Integer

TreeView1.BorderStyle = FixedSingle ' Muestra los bordes.

Set nodX = TreeView1.Nodes.Add(,,,"Raíz")	' Agrega el primer nodo.

For i = 1 to 15	' Agrega 15 nodos

Set nodX = TreeView1.Nodes.Add(i,,,"Nodo " & CStr(i))

Next i

Set nodX = TreeView1.Nodes.Add(,,,"Último")
' Agrega uno con texto.

Set nodX = TreeView1.Nodes.Add(i,,,"Expandido")
'Agrega un secundario.

Set nodX = TreeView1.Nodes.Add(i+1,,,"Muéstreme")
'Agrega un último secundario.

End Sub

Private Sub Form_Click()

' El árbol se desplaza y se expande al hacer clic

' en el formulario.

TreeView1.Nodes(TreeView1.Nodes.Count).EnsureVisible

End Sub


Expand (Evento, control TreeView)

Se produce al expandir un objeto Node de un control TreeView, es decir, cuando sus nodos secundarios se hacen visibles.

Sintaxis

Private Sub objeto_Expand(ByVal nodo As Node)

La sintaxis del evento Expand consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
nodo	Una referencia al objeto Node expandido.
Comentarios

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. Puede utilizar el evento Expand para validar un objeto, como en el ejemplo siguiente:

Private Sub TreeView1_Expand(ByVal Node As Node)

If Node.Index <> 1 Then

Node.Expanded = False	' Se evita la expansión.

End If

End Sub


Expand (Ejemplo del evento)
Ejemplo del evento Expand

En este ejemplo se agregan varios objetos Node a un control TreeView. Cuando se expande un objeto Node, se genera el evento Expand y se muestra información sobre el Node. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y expanda los nodos.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(, , "RP", "Primario raíz")

Set nodX = TreeView1.Nodes.Add("RP", tvwChild, "C1", "Secundario 1")

Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C2", "Secundario 2")

Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C3", "Secundario 3")

Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C4", "Secundario 4")

TreeView1.Style = tvwTreelinesPlusMinusText	' Estilo 6.

TreeView1.LineStyle = tvwRootLines	' Estilo 1

End Sub

Private Sub TreeView1_Expand(ByVal Node As Node)

Select Case Node.Key Like "C*"

Case Is = True

MsgBox Node.Text & " es un nodo secundario."

End Select

End Sub


Expanded (Propiedad)

Devuelve o establece un valor que determina si un objeto Node de un control TreeView se encuentra expandido o contraído.

Sintaxis

objeto.Expanded[= booleano]

La sintaxis de la propiedad Expanded consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
booleano	Una expresión booleana que especifica si el nodo está expandido o contraído.
Los valores válidos para booleano son:

Valor	Descripción
True	El objeto Node está expandido.
False	El objeto Node está contraído.
Comentarios

Puede utilizar la propiedad Expanded para expandir por programa un objeto Node. El código siguiente tiene el mismo efecto que hacer doble clic en el primer objeto Node:

TreeView1.Nodes(1).Expanded = True

Al expandir un objeto Node se genera el evento Expand.

Si un objeto Node no tiene nodos secundarios, el valor de esta propiedad se pasa por alto.


Expanded (Ejemplo de la propiedad)
Ejemplo de la propiedad Expanded

En este ejemplo se agregan varios objetos Node a un control TreeView. Al hacer clic en el formulario se establece a True la propiedad Expanded de cada objeto Node. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el formulario para expandir todos los objetos Node.

Private Sub Form_Load()

Dim nodX As Node

Dim i as Integer

TreeView1.BorderStyle = vbFixedSingle ' Muestra el borde.

' Crea un nodo raíz.

Set nodX = TreeView1.Nodes.Add(,,"raíz","Raíz")

For i = 1 to 5	' Agrega 5 nodos secundarios.

Set nodX = TreeView1.Nodes.Add(i,tvwChild,,"Nodo " & CStr(i))

Next i

End Sub

Private Sub Form_Click()

Dim I as Integer

For I = 1 to TreeView1.Nodes.Count

' Expande todos los nodos.

TreeView1.Nodes(i).Expanded = True

Next I

End Sub


ExpandedImage (Propiedad)

Devuelve o establece el índice o el valor clave de un objeto ListImage en un control ImageList asociado. El objeto ListImage se muestra cuando un objeto Node está expandido.

Sintaxis

objeto.ExpandedImage[ = número]

La sintaxis de la propiedad ExpandedImage consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
número	Una expresión numérica o una expresión de cadena que especifican respectivamente el valor del índice o de la clave de la imagen que se va a mostrar.
Comentarios

Esta propiedad permite cambiar la imagen asociada a un objeto Node cuando el usuario hace doble clic en los objetos Node o cuando establece a True su propiedad Expanded.


FirstSibling (Propiedad)

Devuelve una referencia al primer objeto del mismo nivel de un objeto Node en un control in a TreeView.

Sintaxis

objeto.FirstSibling

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

El primer objeto del mismo nivel es el objeto Node que aparece en primer lugar en un nivel jerárquico de nodos. El objeto Node que aparezca en la primera posición dependerá de si los objetos Node de ese nivel están o no ordenados, lo cual se determina mediante la propiedad Sorted.

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, puede hacer referencia a un objeto Node y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(x).FirstSibling

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer una variable de objeto al Node referido, de esta forma:

Dim NodFirstSib As Node

' Obtiene una referencia al primer nodo del mismo nivel que el nodo x.

Set NodFirstSib = TreeView1.Nodes(x).FirstSibling

' Usa la referencia para realizar operaciones con el

' primer Node del mismo nivel.

With nodFirstSib

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


FirstSibling (Ejemplo de la propiedad)
Ejemplo de la propiedad FirstSibling

En este ejemplo se agregan varios nodos a un control TreeView. La propiedad FirstSibling, junto con las propiedades Next y LastSibling, se utiliza para desplazarse por el nivel jerárquico de un objeto Node en el que se ha hecho clic. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en los distintos nodos para ver el resultado.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"papá","Miguel")
' Primer nivel.

Set nodX = TreeView1.Nodes.Add(,,"mamá","Carolina")

Set nodX = TreeView1.Nodes.Add(,,,"Alicia")

' María es el valor de FirstSibling.

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"María")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Juana")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Carmen")

nodX.EnsureVisible ' Muestra todos los nodos.

' Gregorio es el valor de FirstSibling.

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Gregorio")

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Pedro")

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Benito")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim strText As String

Dim n As Integer

' Establece a n el índice de FirstSibling.

n = Node.FirstSibling.Index

' Coloca el texto de FirstSibling y un avance de línea

' en una variable de cadena.

strText = Node.FirstSibling.Text & vbLF

While n <> Node.LastSibling.Index

' Mientras n no sea el índice del último nodo del

' nivel, pasar al siguiente y colocar su texto en

' la variable de cadena.

strText = strText & TreeView1.Nodes(n).Next.Text & vbLF

' Establece a n el índice del siguiente nodo.

n = TreeView1.Nodes(n).Next.Index

Wend

MsgBox strText	' Muestra el resultado.

End Sub


FullPath (Propiedad)

Devuelve la ruta completa del objeto Node referenciado en un control TreeView. Cuando asigne esta propiedad a una variable de tipo cadena, en la cadena se establece la ruta completa del nodo con el índice especificado.

Sintaxis

objeto.FullPath

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

La ruta completa 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 determina el delimitador utilizado.


FullPath (Ejemplo de la propiedad)
Ejemplo de la propiedad FullPath

En este ejemplo se agregan varios objetos Node a un control TreeView y se muestra la ruta completa de cada uno al seleccionarlo. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un nodo y haga clic en el formulario para mostrar la ruta completa del objeto Node.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,,"Raíz")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Dir1")

Set nodX = TreeView1.Nodes.Add(2,tvwChild,,"Dir2")

Set nodX = TreeView1.Nodes.Add(3,tvwChild,,"Dir3")

Set nodX = TreeView1.Nodes.Add(4,tvwChild,,"Dir4")

nodX.EnsureVisible	' Muestra todos los nodos.

TreeView1.Style = tvwTreelinesText ' Estilo 4.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

MsgBox Node.FullPath

End Sub


GetVisibleCount (Método)

Devuelve el número de objetos Node que caben en el área interna de un control TreeView.

Sintaxis

objeto.GetVisibleCount

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

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 utilizar 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.


GetVisibleCount (Ejemplo del método)
Ejemplo del método GetVisibleCount

En este ejemplo se agregan varios objetos Node a un control TreeView. Al hacer clic en el formulario, el código utiliza el método GetVisibleCount para comprobar el número de líneas que hay visibles y luego amplía el control para mostrar todos sus objetos. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el formulario para ampliar el control.

Private Sub Form_Load()

Dim nodX As Node

Dim i as Integer

TreeView1.BorderStyle = 1 ' Muestra el borde.

For i = 1 to 20

Set nodX = TreeView1.Nodes.Add(,,,"Nodo " & CStr(i))

Next I

TreeView1.Height = 1500 ' El control es pequeño para la comparación.

End Sub

Private Sub Form_Click()

While Treeview1.GetVisibleCount < 20

' Aumenta el tamaño del control TreeView.

TreeView1.Height = TreeView1.Height + TreeView1.Font.Size

Wend

End Sub


HitTest (Método, controles ListView y TreeView)

Devuelve una referencia al objeto ListItem o 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.

Sintaxis

objeto.HitTest (x As Single, y As Single)

La sintaxis del método HitTest consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
x,y	Las coordenadas de un objeto de destino, que será un objeto Node o ListItem.
Comentarios

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. La propiedad DropHighlight requiere una referencia a un objeto específico para resaltarlo. Para determinar el objeto, puede utilizarse el método HitTest junto con un evento que devuelva las coordenadas x e y, como DragOver, como el siguiente código:

Private Sub TreeView1_DragOver _

(Source As Control, X As Single, Y As Single, State As Integer)

Set TreeView1.DropHighlight = TreeView1.HitTest(X,Y)

End Sub

A continuación puede utilizar la propiedad DropHighlight en el evento DragDrop para obtener una referencia al último objeto sobre el que se ha colocado el control de origen, como se muestra en el código siguiente:

Private Sub TreeView1_DragDrop _

(Source As Control, x As Single, y As Single)

' DropHighlight devuelve una referencia al objeto sobre el que se ha colocado.

Me.Caption = TreeView1.DropHighlight.Text

' Para liberar la referencia de DropHighlight, se

' establece a Nothing.

Set TreeView1.DropHighlight = Nothing

End Sub

Observe que en el ejemplo anterior se establece a Nothing la propiedad DropHighlight después de completar el procedimiento. Esto es necesario para que desaparezca el efecto de resalte.


HitTest (Ejemplo del método) (Controles ListView y TreeView)
Ejemplo del método HitTest (Controles ListView y TreeView)

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un objeto Node, puede arrastrarlo hasta cualquier otro objeto Node. Para probar el ejemplo, coloque controles TreeView e ImageList en un formulario y pegue el código en su sección Declaraciones. Ejecute el ejemplo y arrastre los objetos Node para ver el resultado.

' Declara variables globales

Dim indrag As Boolean ' Indicador de operación arrastrar y colocar.

Dim nodX As Object ' Elemento arrastrado.

Private Sub Form_Load()

' Carga un mapa de bits en un control Imagelist.

Dim imgX As ListImage

Dim BitmapPath As String

BitmapPath = "icons\mail\mail01a.ico"

Set imgX = imagelist1.ListImages.Add(, , LoadPicture(BitmapPath))

' Inicializa el control TreeView y crea varios nodos.

TreeView1.ImageList = imagelist1

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(, , , "Primario 1", 1)

Set nodX = TreeView1.Nodes.Add(, , , "Primario 2", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 1", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 2", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 3", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 4", 1)

Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Secundario 5", 1)

nodX.EnsureVisible ' Expande el árbol para mostrar todos los nodos.

End Sub

Private Sub TreeView1_MouseDown _

(Button As Integer, Shift As Integer, x As Single, y As Single)

Set nodX = TreeView1.SelectedItem ' Elemento arrastrado.

End Sub

Private Sub TreeView1_MouseMove _

(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = vbLeftButton Then ' Operación de arrastre.

indrag = True ' Establece el indicador como verdadero.

' Establece el icono de arrastre con el método CreateDragImage.

TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage

TreeView1.Drag vbBeginDrag ' Operación de arrastre.

End If

End Sub

Private Sub TreeView1_DragDrop _

(Source As Control, x As Single, y As Single)

If TreeView1.DropHighlight Is Nothing Then

Set TreeView1.DropHighlight = Nothing

indrag = False

Exit Sub

Else

If nodX = TreeView1.DropHighlight Then Exit Sub

Cls

Print nodX.Text & " colocado en " & TreeView1.DropHighlight.Text

Set TreeView1.DropHighlight = Nothing

indrag = False

End If

End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)

If indrag = True Then

' Establece las coordenadas del mouse en DropHighlight.

Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)

End If

End Sub


Indentation (Propiedad)

Devuelve o establece el ancho de la sangría de un control TreeView. Cada nuevo objeto Node secundario se desplaza la cantidad que se establezca aquí.

Sintaxis

objeto.Indentation[ = número]

La sintaxis de la propiedad Indentation consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
número	Un entero que especifica el ancho que se desplaza cada objeto Node secundario.
Comentarios

Si modifica la propiedad Indentation en tiempo de ejecución, el control TreeView vuelve a dibujarse para reflejar el nuevo ancho. El valor de esta propiedad no puede ser negativo.


Indentation (Ejemplo de la propiedad)
Ejemplo de la propiedad Indentation

En este ejemplo se agregan varios objetos Node a un control TreeView, cuya propiedad Indentation se muestra en el título del formulario. Un control OptionButton proporciona valores alternativos para el ancho de Indentation. Para probar el ejemplo, coloque un control TreeView y una matriz de tres controles OptionButton en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en un control OptionButton para cambiar el valor de la propiedad Indentation.

Private Sub Form_Load()

' Etiqueta los controles OptionButton con las opciones de Indentation.

Option1(0).Caption = "250"

Option1(1).Caption = "500"

Option1(2).Caption = "1000"

' Selecciona la primera opción y establece la sangría inicialmente a 250

Option1(0).Value = True

Treeview1.Indentation = 250

Dim nodX As Node

Dim i As Integer

Set nodX = TreeView1.Nodes.Add(,,,CStr(1)) ' Agrega el primer nodo.

For i = 1 To 6	' Agrega 6 nodos.

Set nodX = TreeView1.Nodes.Add(i,tvwChild,,CStr(i + 1))

Next i

nodX.EnsureVisible	' Se asegura de que todos los nodos sean visibles.

Form1.Caption = "Sangría = " & TreeView1.Indentation

End Sub

Private Sub Option1_Click(Index as Integer)	' Cambia el valor de Indentation según ComboBox.

TreeView1.Indentation = Val(Option1(Index).Caption)

Form1.Caption = "Sangría = " & TreeView1.Indentation

End Sub


LabelEdit (Propiedad)

Devuelve o establece un valor que determina si el usuario puede modificar las etiquetas de los objetos ListItem o Node de un control ListView o TreeView.

Sintaxis

objeto.LabelEdit [ = entero]

La sintaxis de la propiedad LabelEdit consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
entero	Un entero que determina si puede modificarse la etiqueta de un objeto Node o ListItem, como se especifica en Valores.
Valores

Los valores válidos para entero son:

Constante	Valor	Descripción
ListView:   lvwAutomatic TreeView:   tvwAutomatic	0	(Predeterminado) Automático. Se genera el evento BeforeLabelEdit cuando el usuario hace clic en la etiqueta de un nodo seleccionado.
ListView:   lvwManual TreeView:   tvwManual	1	Manual. El evento BeforeLabelEdit sólo se genera al invocar el método StartLabelEdit.
Comentarios

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. Por ejemplo, el código siguiente permite al usuario modificar la etiqueta de un objeto Node haciendo clic en un botón de comando:

Private Sub Command1_Click()

' Determina si está seleccionado el nodo correcto.

If TreeView1.SelectedItem.Index = 1 Then

TreeView1.StartLabelEdit ' Permite al usuario iniciar la edición.

End If

End Sub


LabelEdit (Ejemplo de la propiedad)
Ejemplo de la propiedad LabelEdit

En este ejemplo se inicia la edición de una etiqueta al hacer clic en el botón de comando. Así se permite modificar los objetos Node que no sean el nodo raíz. El valor de la propiedad LabelEdit debe ser Manual. Para probar el ejemplo, agregue un control TreeView y un control CommandButton a un formulario y pegue el código en su sección Declaraciones. Ejecute el ejemplo, seleccione un nodo para su edición y haga clic en el CommandButton.

Private Sub Form_Load()

Dim nodX As Node

Dim i As Integer

TreeView1.LabelEdit = tvwManual	' Establece el valor Manual.

Set nodX = TreeView1.Nodes.Add(,,," Nodo 1")	' Agrega el primer nodo.

For i = 1 to 5	' Agrega 5 nodos.

Set nodX = TreeView1.Nodes.Add(i,tvwChild,,"Nodo " & CStr(i + 1))

Next I

nodX.EnsureVisible	' Muestra todos los nodos.

End Sub

Private Sub Command1_Click()

' Invoca el método StartLabelEdit para el nodo

' seleccionado, desencadenando así el evento

' BeforeLabelEdit.

TreeView1.StartLabelEdit

End Sub

Private Sub TreeView1_BeforeLabelEdit (Cancel as Integer)

' Si el nodo seleccionado es el raíz, se cancela la edición.

If TreeView1.SelectedItem Is TreeView1.SelectedItem.Root Then

Cancel = True

End If

End Sub

Private Sub TreeView1_AfterLabelEdit _

(Cancel As Integer, NewString As String)

' Supone que el usuario ha escrito texto y ha presionado ENTRAR.

' Cualquier cadena no vacía es válida.

If Len(NewString) = 0 Then

Cancel = True

End If

End Sub


LastSibling (Propiedad)

Devuelve una referencia al último nodo del mismo nivel que un objeto Node en un control TreeView.

Sintaxis

objeto.LastSibling

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

El último nodo del mismo nivel es el objeto Node que aparece en último lugar en un nivel jerárquico de nodos. El objeto Node que aparezca realmente en la última posición dependerá de si los nodos del nivel están ordenados, lo cual se determina mediante la propiedad Sorted. Para ordenar los objetos Node en el primer nivel, establezca a True la propiedad Sorted del nodo Parent, como se muestra en el código siguiente:

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Node.Parent.Sorted = True

End Sub

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible referirse a un nodo y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(x).LastSibling

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer en una variable de objeto el Node referido, de esta forma:

Dim NodLastSib As Node

' Obtiene una referencia al último nodo del mismo nivel que Nodo x.

Set NodLastSib = TreeView1.Nodes(x).LastSibling

' Usa la referencia para realizar operaciones con el nodo del mismo nivel.

With nodLastSib

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


LastSibling (Ejemplo de la propiedad)
Ejemplo de la propiedad LastSibling

En este ejemplo se agregan varios objetos Node a un control TreeView. La propiedad LastSibling, junto con las propiedades Next y FirstSibling, se utiliza para desplazarse por el nivel jerárquico de un objeto Node en el que se ha hecho clic. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en los distintos nodos para ver el resultado.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"papá","Miguel")

Szet nodX = TreeView1.Nodes.Add(,,"mamá","Carolina")

' Alicia es el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add(,,,"Alicia")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"María")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Juana")

' Carmen es el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Carmen")

nodX.EnsureVisible ' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Gregorio")

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Pedro")

' Benito es el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Benito")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim strText As String

Dim n As Integer

' Establece a n el índice de FirstSibling.

n = Node.FirstSibling.Index

' Coloca el texto de FirstSibling y un avance de

' línea en una variable de cadena.

strText = Node.FirstSibling.Text & vbLF

While n <> Node.LastSibling.Index

' Mientras n no sea el índice del último objeto de

' ese nivel, pasar al siguiente y poner su texto

' en la variable de cadena

strText = strText & TreeView1.Nodes(n).Next.Text & vbLF

' Establece a n el índice del siguiente nodo.

n = TreeView1.Nodes(n).Next.Index

Wend

MsgBox strText ' Muestra el resultado.

End Sub


LineStyle (Propiedad)

Devuelve o establece el estilo de las líneas que aparecen entre los objetos Node.

Sintaxis

objeto.LineStyle [ = número]

La sintaxis de la propiedad LineStyle consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
número	Un valor o una constante que especifica el estilo de línea, como se indica en Valores.
Valores

Los valores válidos para número son:

Constante	Valor	Descripción
tvwTreeLines	0	(Predeterminado) Líneas de árbol. Muestra líneas entre los nodos del mismo nivel y su nodo primario.
tvwRootLines	1	Líneas de raíz. Además de las líneas entre los nodos del mismo nivel y su nodo primario, se muestran líneas entre los nodos raíz.
Comentarios

En la propiedad Style debe establecer un estilo que incluya líneas de árbol.


LineStyle, Style (Ejemplo de las propiedades)
Ejemplo de las propiedades LineStyle, Style

En este ejemplo se agregan varios objetos Node con imágenes a un control TreeView. Puede modificar las propiedades LineStyle y Style si selecciona los estilos alternativos en dos matrices de controles OptionButton. Para probar el ejemplo, coloque un control TreeView, un control ImageList y dos matrices de controles OptionButton (una con dos botones y otra con ocho) en un formulario y pegue el código en la sección Declaraciones del mismo. Ejecute el ejemplo y haga clic en cualquier OptionButton para cambiar las propiedades LineStyle y Style.

Private Sub Form_Load()

' Agrega una imagen al control ImageList.

Dim imgX As ListImage

Set imgX = ImageList1.ListImages. _

Add(,,LoadPicture("bitmaps\outline\leaf.bmp"))

TreeView1.ImageList = ImageList1 ' Inicializa ImageList.

' Etiqueta los controles OptionButton con las opciones de estilos de líneas.

Option1(0).Caption = "Líneas de árbol"

Option1(1).Caption = "Líneas de raíz"

' Selecciona la primera opción y establece LineStyle a TreeLines inicialmente

Option1(0).Value = True

Treeview1.LineStyle = tvwTreeLines

' Etiqueta los controles OptionButton con las opciones de Style.

Option2(0).Caption = "Sólo texto"

Option2(1).Caption = "Imagen y texto"

Option2(2).Caption = "Más/menos y texto"

Option2(3).Caption = "Más/menos, imagen y texto"

Option2(4).Caption = "Líneas y texto"

Option2(5).Caption = "Líneas, imagen y texto"

Option2(6).Caption = "Líneas, más/menos y texto"

Option2(7).Caption = "Líneas, más/menos, imagen y texto"

' Selecciona la última opción y establece el estilo inicial

Option2(7).Value = True

Treeview1.Style = tvwTreelinesPlusMinusPictureText

Dim nodX As Node

Dim i as Integer

' Crea el nodo raíz.

Set nodX = TreeView1.Nodes.Add(,,,"Nodo " & "1",1)

For i = 1 to 5	' Agrega 5 nodos.

Set nodX = TreeView1.Nodes. _

Add(i,tvwChild,,"Nodo " & CStr(i + 1),1)

Next I

nodX.EnsureVisible	' Muestra todos los nodos.

End Sub

Private Sub Option1_Click(Index as Integer)

' Cambia el estilo de línea de OptionButton.

TreeView1.LineStyle = Index

End Sub

Private Sub Option2_Click(Index as Integer)

' Cambia el estilo de línea de OptionButton.

TreeView1.Style = Index

Form1.Caption = "Style del TreeView = " & Option2(Index).Caption

End Sub


Next (Propiedad)

Devuelve una referencia al siguiente nodo del mismo nivel que un objeto Node de un control TreeView.

Sintaxis

objeto.Next

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible referirse a un nodo y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(x).Child

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer a una variable de objeto el Node referido, de esta forma:

Dim NodChild As Node

' Obtiene una referencia al secundario del nodo x.

Set NodChild = TreeView1.Nodes(x).Child

' Usa la referencia para realizar operaciones con el secundario.

With nodChild

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


Next (Ejemplo de la propiedad)
Ejemplo de la propiedad Next

En este ejemplo se agregan varios objetos Node a un control TreeView. La propiedad LastSibling, junto con las propiedades Next y FirstSibling, se utiliza para desplazarse por un nivel jerárquico de un objeto Node en el que se ha hecho clic. Para probar el ejemplo, coloque un control TreeView en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en los distintos nodos para ver el resultado.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"papá","Miguel")

Set nodX = TreeView1.Nodes.Add(,,"mamá","Carolina")

' Alicia el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add(,,,"Alicia")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"María")

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Juana")

' Carmen es el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add("mamá",tvwChild,,"Carmen")

nodX.EnsureVisible ' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Gregorio")

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Pedro")

' Benito es el valor de LastSibling.

Set nodX = TreeView1.Nodes.Add("papá",tvwChild,,"Benito")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim strText As String

Dim n As Integer

' Establece a n el índice de FirstSibling.

n = Node.FirstSibling.Index

' Coloca el texto de FirstSibling y un avance de línea

' en la variable de cadena.

strText = Node.FirstSibling.Text & vbLF

' Mientras n no sea el índice de LastSibling, pasa al

' nodo siguiente y pone su texto en la variable de cadena.

While n <> Node.LastSibling.Index

strText = strText & TreeView1.Nodes(n).Next.Text & vbLF

' Establece a n el índice del siguiente nodo.

n = TreeView1.Nodes(n).Next.Index

Wend

MsgBox strText ' Muestra el resultado.

End Sub


NodeClick (Evento)

Se produce al hacer clic en un objeto Node.

Sintaxis

Private Sub objeto_NodeClick(ByVal nodo As Node)

La sintaxis del evento NodeClick consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
nodo	Una referencia al objeto Node en el que se ha hecho clic.
Comentarios

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 utilizarse para validarlo antes de realizar alguna otra acción.

El evento NodeClick se produce antes del evento Click estándar.


NodeClick (Ejemplo del evento)
Ejemplo del evento NodeClick

En este ejemplo se agregan varios objetos Node a un control TreeView. Al hacer clic en un objeto Node se desencadena el evento NodeClick, que se utiliza para obtener el índice y el texto del nodo. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en cualquier objeto Node.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"R","Raíz")

nodX.Expanded = True

Set nodX = TreeView1.Nodes.Add(,,"P","Primario")

nodX.Expanded = True

Set nodX = TreeView1.Nodes.Add("R",tvwChild,,"Secundario 1")

Set nodX = TreeView1.Nodes.Add("R",tvwChild,,"Secundario 2")

Set nodX = TreeView1.Nodes.Add("R",tvwChild,,"Secundario 3")

Set nodX = TreeView1.Nodes.Add("P",tvwChild,,"Secundario 4")

Set nodX = TreeView1.Nodes.Add("P",tvwChild,,"Secundario 5")

Set nodX = TreeView1.Nodes.Add("P",tvwChild,,"Secundario 6")

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Form1.Caption = "Índice = " & Node.Index & " Texto:" & Node.Text

End Sub


Nodes (Propiedad)

Devuelve una referencia a una colección de objetos TreeView de un control Node.

Sintaxis

objeto.Nodes

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Puede manipular los objetos Node con los métodos estándar para colecciones (como los métodos Add y Remove). El acceso a cada elemento de la colección puede hacerse por su índice o por una clave única almacenada en la propiedad Key.


Nodes (Ejemplo de la propiedad)
Ejemplo de la propiedad Nodes

En este ejemplo se agregan varios objetos Node a un control TreeView. Cuando se hace clic en el formulario, se utiliza una referencia a cada objeto Node para mostrar su texto. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en el formulario.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,"R","Raíz")

Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C1","Secundario 1")

Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C2","Secundario 2")

Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C3","Secundario 3")

Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C4","Secundario 4")

nodX.EnsureVisible

TreeView1.Style = tvwTreelinesText ' Estilo 4.

TreeView1.BorderStyle = vbFixedSingle

End Sub

Private Sub Form_Click()

Dim i As Integer

Dim strNodes As String

For i = 1 To TreeView1.Nodes.Count

strNodes = strNodes & TreeView1.Nodes(i).Index & " " & _

"Clave: " & TreeView1.Nodes(i).Key & " " & _

"Texto: " & TreeView1.Nodes(i).Text & vbLF

Next i

MsgBox strNodes

End Sub


Parent (Propiedad, objeto Node)

Devuelve o establece el objeto primario de un objeto Node. Sólo está disponible en tiempo de ejecución.

Sintaxis

objeto.Parent[ = nodo]

La sintaxis de la propiedad Parent consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
nodo	Un objeto Node que se convierte en el primario del objeto especificado.
Comentarios

En tiempo de ejecución se producirá un error si establece esta propiedad a un objeto que origina un bucle. Por ejemplo, no puede hacer que cualquier objeto Node se convierta en un nodo secundario de sus propios descendientes.

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible referirse a un nodo y realizar simultáneamente operaciones con él, de esta forma:

With TreeView1.Nodes(x).Parent

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer en una variable de objeto el Node referido, de esta forma:

Dim NodParent As Node

' Obtiene una referencia al primario del nodo x.

Set NodParent = TreeView1.Nodes(x).Parent

' Usa la referencia para realizar operaciones con el primario.

With nodParent

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


Parent (Ejemplo de la propiedad) (Objeto Node)
Ejemplo de la propiedad Parent (Objeto Node)

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un objeto Node, puede hacer clic en él y arrastrarlo hasta cualquier otro para convertirlo en secundario del nodo de destino. Para probar el ejemplo, coloque un control TreeView y un control ImageList en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y arrastre unos objetos Node sobre otros para ver el resultado.

' Declara variables globales.

Dim indrag As Boolean ' Indicador de operación de arrastrar y colocar.

Dim nodX As Object ' Elemento arrastrado.

Private Sub Form_Load()

' Carga un mapa de bits en un control ImageList.

Dim imgX As ListImage

Dim BitmapPath As String

BitmapPath = "icons\mail\mail01a.ico"

Set imgX = ImageList1.ListImages.Add(, , LoadPicture(BitmapPath))

' Inicializa el control TreeView y crea varios nodos.

TreeView1.ImageList = ImageList1

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(, , , "Primario 1", 1)

Set nodX = TreeView1.Nodes.Add(, , , "Primario 2", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 1", 1)

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Secundario 2", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 3", 1)

Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Secundario 4", 1)

Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Secundario 5", 1)

nodX.EnsureVisible ' Expande el árbol para mostrar todos los nodos.

End Sub

Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

Set nodX = TreeView1.SelectedItem ' Elemento arrastrado.

Set TreeView1.DropHighlight = Nothing

End Sub

Private Sub TreeView1_MouseMove _

(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = vbLeftButton Then ' Operación de arrastre.

indrag = True ' Establece el indicador como verdadero.

' Establece el icono de arrastre con el método

' CreateDragImage.

TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage

TreeView1.Drag vbBeginDrag ' Operación de arrastre.

End If

End Sub

Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)

' Si el usuario no ha movido el mouse o lo ha soltado

' en una zona no válida.

If TreeView1.DropHighlight Is Nothing Then

indrag = False

Exit Sub

Else

' La propiedad Parent del nodo arrastrado es el

' nodo de destino.

On Error GoTo checkerror ' Para evitar errores circulares.

Set nodX.Parent = TreeView1.DropHighlight

Cls

Print TreeView1.DropHighlight.Text & _

" es el primario de " & nodX.Text

' Libera la referencia de DropHighlight.

Set TreeView1.DropHighlight = Nothing

indrag = False

Exit Sub ' Salir si no hay errores.

End If

checkerror:

' Define constantes para código de errores de

' Visual Basic.

Const CircularError = 35614

If Err.Number = CircularError Then

Dim msg As String

msg = "Un nodo no puede ser secundario de su propio secundario."

' Muestra el cuadro de mensajes con un icono de

' exclamación y con botones Aceptar y Cancelar.

If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then

' Libera la referencia de DropHighlight.

indrag = False

Set TreeView1.DropHighlight = Nothing

Exit Sub

End If

End If

End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)

Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)

End Sub


PathSeparator (Propiedad, control TreeView)

Devuelve o establece el carácter delimitador utilizado en la ruta devuelta por la propiedad FullPath.

Sintaxis

objeto.PathSeparator [ =cadena]

La sintaxis de PathSeparator consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
cadena	Una cadena que determina el valor de PathSeparator; normalmente es un único carácter.
Comentarios

El carácter predeterminado es "\".


PathSeparator (Ejemplo de la propiedad)
Ejemplo de la propiedad PathSeparator

En este ejemplo se agregan varios objetos Node a un control TreeView y se utiliza un control OptionButton para modificar la propiedad PathSeparator. Para probar el ejemplo, agregue un control TreeView y una matriz de tres controles OptionButton a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un nodo y haga clic en el formulario. Cambie el valor de la propiedad PathSeparator mediante el OptionButton.

Private Sub Form_Load

TreeView1.BorderStyle = vbFixedSingle   ' Muestra el borde.

' Etiqueta los controles OptionButton con las opciones de Style.

Option1(0).Caption = "/"

Option1(1).Caption = "-"

Option1(2).Caption = ":"

' Selecciona la última opción y establece el estilo inicial

Option1(2).Value = True

Treeview1.PathSeparator = Option1(2).Caption

Dim nodX As Node

Dim i As Integer

Set nodX = TreeView1.Nodes.Add(,,,CStr(1)) 	' Agrega el primer nodo.

For i = 1 to 5	' Agrega otros nodos.

Set nodX = TreeView1.Nodes.Add(i,tvwChild,,CStr(i + 1))

Next i

nodX.EnsureVisible	' Asegura que estén todos visibles.

End Sub

Private Sub Option1_Click(Index as Integer)

' Cambia el carácter delimitador.

TreeView1.PathSeparator = Option1(Index).Caption

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

' Muestra la ruta en el título del formulario.

Me.Caption = Node.FullPath

End Sub


Previous (Propiedad, objeto Node)

Devuelve una referencia al nodo anterior del mismo nivel que un objeto Node.

Sintaxis

objeto.Previous

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible referirse a un nodo y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(x).Previous

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer en una variable de objeto el Node referido, de esta forma:

Dim NodPrevious As Node

' Obtiene una referencia al nodo anterior del nodo x.

Set NodChild = TreeView1.Nodes(x).Previous

' Usa la referencia para realizar operaciones con el nodo anterior.

With nodPrevious

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


Previous (Ejemplo de la propiedad)
Ejemplo de la propiedad Previous

En este ejemplo se agregan varios nodos a un control TreeView. La propiedad Previous, junto con las propiedades LastSibling y FirstSibling, se utiliza para desplazarse por el nivel jerárquico del objeto Node en el que se ha hecho clic. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en los distintos nodos para ver el resultado.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(, , "r", "Raíz")

Set nodX = TreeView1.Nodes.Add(, , "p", "Primario")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Secundario 1")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Secundario 2")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Secundario 3")

nodX.EnsureVisible ' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Secundario 4")

Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Secundario 5")

Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Secundario 6")

nodX.EnsureVisible ' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim strText As String

Dim n As Integer

' Establece a n el índice de LastSibling.

n = Node.LastSibling.Index

' Coloca en una variable de cadena el texto de

' LastSibling y un avance de línea.

strText = Node.LastSibling.Text & vbLF

While n <> Node.FirstSibling.Index

' Mientras n no sea el índice de FirstSibling, va

' al anterior y agrega su contenido a la

' variable de cadena.

strText = strText & TreeView1.Nodes(n).Previous.Text & vbLF

' Establece a n el índice del nodo anterior.

n = TreeView1.Nodes(n).Previous.Index

Wend

MsgBox strText ' Muestra el resultado.

End Sub


Root (Propiedad, objeto Node)

Devuelve una referencia al objeto Node raíz de un objeto Node seleccionado.

Sintaxis

objeto.Root

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

Las propiedades Child, FirstSibling, LastSibling, Previous, Parent, Next y Root devuelven una referencia a otro objeto Node. Por tanto, es posible referirse a un nodo y realizar operaciones con él simultáneamente, de esta manera:

With TreeView1.Nodes(x).Root

.Text = "Nuevo texto"

.Key = "Nueva clave"

.SelectedImage = 3

End With

También puede establecer en una variable de objeto el Node referido, de esta forma:

Dim NodRoot As Node

' Obtiene una referencia al raíz del nodo x.

Set NodRoot = TreeView1.Nodes(x).Root

' Usa la referencia para realizar operaciones en el nodo raíz.

With nodRoot

.Text = "Nuevo texto"	' Cambia el texto.

.Key = "Nueva clave"	' Cambia la clave.

.SelectedImage = 3	' Cambia SelectedImage.

End With


Root (Ejemplo de la propiedad)
Ejemplo de la propiedad Root

En este ejemplo se agregan varios objetos Node a un control TreeView. Al hacer clic en un objeto Node, el código se desplaza hacia arriba por el árbol hasta el nodo Root y muestra el texto de cada nodo Parent. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en un objeto Node.

Private Sub Form_Load()

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(,,"r", "Raíz")

Set nodX = TreeView1.Nodes.Add(,,"p", "Primario")

Set nodX = TreeView1.Nodes.Add("p",tvwChild,, "Secundario 1")

nodX.EnsureVisible	' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("r",tvwChild,"C2", "Secundario 2")

Set nodX = TreeView1.Nodes.Add("C2",tvwChild,"C3", "Secundario 3")

Set nodX = TreeView1.Nodes.Add("C3",tvwChild,, "Secundario 4")

Set nodX = TreeView1.Nodes.Add("C3",tvwChild,, "Secundario 5")

nodX.EnsureVisible	' Muestra todos los nodos.

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim n As Integer

Dim strParents As String 	' Variable para información.

n = Node.Index	' Índice del nodo en el que se ha hecho clic.

strParents = Node.Text & vbLF

While n <> Node.Root.Index

strParents = strParents & _

TreeView1.Nodes(n).Parent.Text & vbLF

' Establece a n el índice del siguiente nodo primario.

n = TreeView1.Nodes(n).Parent.Index

Wend

MsgBox strParents

End Sub


Selected (Propiedad, controles ActiveX)

Devuelve o establece un valor que determina si está seleccionado un objeto Node o Tab. En un objeto ListItem, la propiedad Selected no establece la propiedad SelectedItem, por lo que no se selecciona el objeto. Sólo devuelve un valor que indica si el objeto ListItem ya está seleccionado por otro medio.

Sintaxis

objeto.Selected [ = booleano]

La sintaxis de la propiedad Selected consta las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
booleano	Una expresión booleana que determina si el objeto está seleccionado.
Comentarios

La propiedad Selected se utiliza para seleccionar mediante programa un determinado objeto Node o Tab. Una vez seleccionado el objeto de esta forma, puede realizar con él diversas operaciones, como establecer sus propiedades e invocar sus métodos.

Para seleccionar un objeto Node específico, deber referirse a él por el valor de su propiedad Index o por su propiedad Key. En el ejemplo siguiente se selecciona un objeto Node específico de un control TreeView:

Private Sub Command1_Click()

TreeView1.Nodes(3).Selected = True ' Selecciona un objeto.

' Utiliza la propiedad SelectedItem para obtener

' una referencia al objeto.

TreeView1.SelectedItem.Text = "Texto cambiado"

End Sub

En el control ListView, la propiedad SelectedItem siempre se refiere al primer elemento seleccionado. Por tanto, cuando tenga seleccionados varios elementos, deberá recorrerlos todos ellos comprobando la propiedad Selected de cada elemento.

Nota   En lugar de utilizar la propiedad Selected para seleccionar por programa un objeto ListItem, utilice la instrucción Set con la propiedad SelectedItem, de esta forma:

Set ListView1.SelectedItem = ListView1.ListItems(1)


Selected (Ejemplo de la propiedad)
Ejemplo de la propiedad Selected

En este ejemplo se agregan varios objetos Node a un control TreeView. Cuando se selecciona un Node, se utiliza una referencia a él para mostrar su clave. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un nodo y haga clic en el formulario.

Private Sub Form_Load()

Dim nodX As Node	' Crea un árbol.

Set nodX = TreeView1.Nodes.Add(,,"r","Raíz")

Set nodX = TreeView1.Nodes.Add(,,"p","Primario")

Set nodX = TreeView1.Nodes.Add("p",tvwChild,,"Secundario 1")

nodX.EnsureVisible	' Muestra todos los nodos.

Set nodX = TreeView1.Nodes.Add("r",tvwChild,"C2","Secundario 2")

Set nodX = TreeView1.Nodes.Add("C2",tvwChild,"C3","Secundario 3")

Set nodX = TreeView1.Nodes.Add("C3",tvwChild,,"Secundario 4")

Set nodX = TreeView1.Nodes.Add("C3",tvwChild,,"Secundario 5")

nodX.EnsureVisible	' Muestra todos los nodos.

End Sub

Private Sub Form_Click()

Dim intX As Integer

On Error Resume Next	' Si no se escribe un entero.

intX = InputBox("Comprobar nodo",,TreeView1.SelectedItem.Index)

If IsNumeric(intX) Then	' Se asegura de que se escribió un entero.

If TreeView1.Nodes(intX).Selected = True Then

MsgBox TreeView1.Nodes(intX).Text & " está seleccionado."

Else

MsgBox "No seleccionado"

End If

End If

End Sub

En el ejemplo siguiente se agregan tres objetos ListItem a un control ListView. Al hacer clic en el formulario, el código utiliza la propiedad Selected para determinar si un objeto ListItem específico está seleccionado. Para probar este ejemplo, coloque un control ListView en un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un objeto ListItem y haga clic en el formulario.

Private Sub Form_Load()

Listview1.BorderStyle = vbFixedSingle  ' Muestra el borde.

Dim itmX As ListViewItem

Set itmX = ListView1.ListItems.Add(,,"Elemento 1")

Set itmX = ListView1.ListItems.Add(,,"Elemento 2")

Set itmX = ListView1.ListItems.Add(,,"Elemento 3")

End Sub

Private Sub Form_Click()

Dim intX As Integer

On Error Resume Next ' Si no se escribe un entero.

intX = InputBox("Comprobar elemento", , Listview1.SelectedItem.Index)

If IsNumeric(intX) Then	' Se asegura de que se escribió un entero.

If ListView1.ListItems(intX).Selected = True Then

MsgBox ListView1.ListItems(intX).Text & " está seleccionado."

Else

MsgBox "No seleccionado"

End If

End If

End Sub


SelectedImage (Propiedad)

Devuelve o establece el índice o el valor de clave de un objeto ListImage de un control ImageList asociado. El objeto ListImage se muestra al seleccionar un objeto Node.

Sintaxis

objeto.SelectedImage [ = índice]

La sintaxis de la propiedad SelectedImage consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
índice	Una cadena o un entero único que identifica un objeto ListImage de un control ImageList asociado. El entero es el valor de la propiedad Index del objeto ListImage; mientras que la cadena es el valor de su propiedad Key.
Comentarios

Si esta propiedad es Null, se utilizará la máscara de la imagen predeterminada especificada por la propiedad Image.


SelectedItem (Propiedad, controles ActiveX)

Devuelve una referencia a un objeto ListItem, Node o Tab seleccionado.

Sintaxis

objeto.SelectedItem

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

La propiedad SelectedItem devuelve una referencia a un objeto que puede utilizarse para establecer propiedades e invocar métodos del objeto seleccionado. Normalmente, esta propiedad se utiliza para obtener una referencia a un objeto ListItem, Node o Tab en el que el usuario ha hecho clic o que ha seleccionado. Con esta referencia puede validar un objeto antes de permitir acciones posteriores, como se ilustra en el código siguiente:

Command1_Click()

' Si el objeto seleccionado no es el raíz, quita el nodo.

If TreeView1.SelectedItem.Index <> 1 Then

Treeview1.Nodes.Remove TreeView1.SelectedItem.Index

End If

End Sub

Para seleccionar por programa un objeto ListItem, utilice la instrucción Set con la propiedad SelectedItem, de esta forma:

Set ListView1.SelectedItem = ListView1.ListItems(1)


SelectedItem (Ejemplo de la propiedad)
Ejemplo de la propiedad SelectedItem

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un Node, haga clic en el formulario para ver sus distintas propiedades. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un nodo y haga clic en el formulario.

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(, , "r", "Raíz")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, "c1", "Secundario 1")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, "c2", "Secundario 2")

Set nodX = TreeView1.Nodes.Add("r", tvwChild, "c3", "Secundario 3")

Set nodX = TreeView1.Nodes.Add("c3", tvwChild, "c4", "Secundario 4")

Set nodX = TreeView1.Nodes.Add("c3", tvwChild, "c5", "Secundario 5")

Set nodX = TreeView1.Nodes.Add("c5", tvwChild, "c6", "Secundario 6")

Set nodX = TreeView1.Nodes.Add("c5", tvwChild, "c7", "Secundario 7")

nodX.EnsureVisible

TreeView1.BorderStyle = vbFixedSingle

End Sub

Private Sub Form_Click()

Dim nodX As Node

' Establece la variable a SelectedItem.

Set nodX = TreeView1.SelectedItem

Dim strProps As String

' Obtiene las propiedades del nodo.

strProps = "Texto: " & nodX.Text & vbLF

strProps = strProps & "Clave: " & nodX.Key & vbLF

On Error Resume Next ' El nodo raíz no tiene primario.

strProps = strProps & "Primario: " & nodX.Parent.Text & vbLF

strProps = strProps & "Primero del mismo nivel: " & _

nodX.FirstSibling.Text & vbLF

strProps = strProps & "Último del mismo nivel: " & _

nodX.LastSibling.Text & vbLF

strProps = strProps & "Siguiente: " & nodX.Next.Text & vbLF

MsgBox strProps

End Sub


Sorted (Propiedad, control TreeView)

•	Devuelve o establece un valor que determina si los nodos secundarios de un objeto Node están ordenados alfabéticamente.

•	Devuelve o establece un valor que determina si los nodos del nivel raíz de un control TreeView están ordenados alfabéticamente.

Sintaxis

objeto.Sorted [ = booleano]

La sintaxis de la propiedad Sorted consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
booleano	Una expresión booleana que especifica si los objetos Node están ordenados, como se describe en Valores.
Valores

Los valores válidos para boolean son:

Valor	Descripción
True	Los objetos Node se ordenan alfabéticamente por su propiedad Text. Los objetos Node cuya propiedad Text comienza con un número se ordenan como cadenas, donde el primer dígito determina la posición inicial en el orden.
False	Los objetos Node no están ordenados.
Comentarios

La propiedad Sorted puede utilizarse de dos formas. En primer lugar, sirve para ordenar los objetos Node situados en el nivel raíz (superior) de un control TreeView y en segundo lugar permite ordenar los secundarios inmediatos de cualquier objeto Node individual. Por ejemplo, el código siguiente ordena los nodos raíz de un control TreeView:

Private Sub Command1_Click()

TreeView1.Sorted = True	' Se ordenan los nodos del nivel superior.

End Sub

En el ejemplo siguiente se muestra cómo establecer la propiedad Sorted de un objeto Node al crearlo:

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,,"Nodo primario")

nodX.Sorted = True

End Sub

Al establecer la propiedad Sorted a True se ordena únicamente la colección Nodes actual. Cuando agregue nuevos objetos Node a un control TreeView, debe establecer la propiedad Sorted a True otra vez para ordenar los objetos Node agregados.


Sorted (Ejemplo de la propiedad) (Control TreeView)
Ejemplo de la propiedad Sorted (Control TreeView)

En este ejemplo se agregan varios objetos Node a un árbol. Al hacer clic en un Node, se le preguntará si desea ordenarlo. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo y haga clic en un objeto Node para ordenarlo.

Private Sub Form_Load()

' Crea un árbol con varios objetos Node sin ordenar.

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(, , , "Adán")

Set nodX = TreeView1.Nodes.Add(1, tvwChild, "z", "Zacarías")

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Noé")

Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Abraham")

Set nodX = TreeView1.Nodes.Add("z", tvwChild, , "Silvia")

Set nodX = TreeView1.Nodes.Add("z", tvwChild, , "Pablo")

Set nodX = TreeView1.Nodes.Add("z", tvwChild, "f", "Francisco")

Set nodX = TreeView1.Nodes.Add("f", tvwChild, , "Julia")

Set nodX = TreeView1.Nodes.Add("f", tvwChild, "c", "Carolina")

Set nodX = TreeView1.Nodes.Add("f", tvwChild, , "Bruno")

Set nodX = TreeView1.Nodes.Add("c", tvwChild, , "Yale")

Set nodX = TreeView1.Nodes.Add("c", tvwChild, , "Harvard")

nodX.EnsureVisible

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)

Dim answer As Integer

' Comprueba si hay nodos secundarios.

If Node.Children > 1 Then ' Hay más de un nodo secundario.

answer = MsgBox("¿Desea ordenar este nodo?", vbYesNo)  ' Pregunta al usuario.

If answer = vbYes Then	' El usuario desea ordenar.

Node.Sorted = True

End If

End If

End Sub


Style (Propiedad, control TreeView)

Devuelve o establece el tipo de gráficos (imágenes, texto, más/menos y líneas) y texto que aparece para cada objeto Node de un control TreeView.

Sintaxis

objeto.Style [ = número]

La sintaxis de la propiedad Style consta de las siguientes partes:

Parte	Descripción
objeto	Una expresión de objeto que da como resultado un objeto de la lista Aplicable a.
número	Un entero que especifica el estilo de los gráficos, como se describe en Valores.
Valores

Los valores válidos para número son:

Valor	Descripción
0	Sólo texto.
1	Imagen y texto.
2	Más/menos y texto.
3	Más/menos, imagen y texto.
4	Líneas y texto.
5	Líneas, imagen y texto.
6	Líneas, más/menos y texto.
7	(Predeterminado) Líneas, más/menos, imagen y texto.
Comentarios

Si la propiedad Style se establece a un valor que incluye líneas, la propiedad LineStyle determinará la apariencia de éstas. Si la propiedad Style se establece a un valor que no incluye líneas, el valor de LineStyle se pasa por alto.


StartLabelEdit (Método)

Permite al usuario modificar una etiqueta.

Sintaxis

objeto.StartLabelEdit

El marcador de posición objeto es una expresión de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios

El método StartLabelEdit debe utilizarse para iniciar una operación de edición de etiqueta cuando el valor de la propiedad LabelEdit es 1 (Manual).

Cuando se invoca el método StartLabelEdit para un objeto, también se genera el evento BeforeLabelEdit.


StartLabelEdit (Ejemplo del método)
Ejemplo del método StartLabelEdit

En este ejemplo se agregan varios objetos Node a un control TreeView. Una vez seleccionado un Node, haga clic en el formulario para comenzar a modificarlo. Para probar el ejemplo, agregue un control TreeView a un formulario y pegue el código en la sección Declaraciones de éste. Ejecute el ejemplo, seleccione un nodo y haga clic en el formulario.

Private Sub Form_Load

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(,,,"Da Vinci") ' Root

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Tiziano")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Rembrandt")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Goya")

Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"David")

nodX.EnsureVisible ' Expande el árbol para ver todos los nodos.

End Sub

Private Sub Form_Click()

' Si el nodo seleccionado no es el raíz, se permite

' la edición.

If TreeView1.SelectedItem.Index <> 1 Then

TreeView1.StartLabelEdit

End If

End Sub


Change (Evento) (marcador de posición)
Change Event (placeholder)


Click (Evento) (marcador de posición)
Click Event (placeholder)


DblClick (Evento) (marcador de posición)
DblClick Event (placeholder)


DragDrop (Evento) (marcador de posición)
DragDrop Event (placeholder)


DragOver (evento, marcador de posición)
DragOver Event (placeholder)


KeyDown (Evento) (marcador de posición)
KeyDown Event (placeholder)


KeyPress (Evento) (marcador de posición)
KeyPress Event (placeholder)


KeyUp (Evento) (marcador de posición)
KeyUp Event (placeholder)


MouseDown (Evento) (marcador de posición)
MouseDown Event (placeholder)


MouseMove (Evento) (marcador de posición)
MouseMove Event (placeholder)


MouseUp (Evento) (marcador de posición)
MouseUp Event (placeholder)


OLECompleteDrag (Evento) (marcador de posición)
OLECompleteDragEvent (placeholder)


OLEDragDrop (Evento) (marcador de posición)
OLEDragDrop Event (placeholder)


OLEDragOver (Evento) (marcador de posición)
OLEDragOver Event (placeholder)


OLEGiveFeedback (Evento) (marcador de posición)
OLEGiveFeedback Event (placeholder)


OLESetData (Evento) (marcador de posición)
OLESetData Event (placeholder)


OLEStartDrag (Evento) (marcador de posición)
OLEStartDrag Event (placeholder)


Refresh (Método) (marcador de posición)
Refresh Method (placeholder)


OLEDrag (Método) (marcador de posición)
OLEDrag Method (placeholder)


Appearance (Propiedad) (marcador de posición)
Appearance Property (placeholder)


BackColor (Propiedad) (marcador de posición)
BackColor Property (placeholder)


Caption (Propiedad) (marcador de posición)
Caption Property (placeholder)


Enabled (Propiedad) (marcador de posición)
Enabled Property (placeholder)


Font (Propiedad) (marcador de posición)
Font Property (placeholder)


ForeColor (Propiedad) (marcador de posición)
ForeColor Property (placeholder)


IntegralHeight (Propiedad) (marcador de posición)
IntegralHeight Property (placeholder)


Locked (Propiedad) (marcador de posición)
Locked Property (placeholder)


MouseIcon (Propiedad) (marcador de posición)
MouseIcon Property (placeholder)


MousePointer (Propiedad) (marcador de posición)
MousePointer Property (placeholder)


OLEDragMode (Propiedad) (marcador de posición)
OLEDragMode Property (placeholder)


OLEDropMode (Propiedad) (marcador de posición)
OLEDropMode Property (placeholder)


SelLength (Propiedad) (marcador de posición)
SelLength Property (placeholder)


SelStart (Propiedad) (marcador de posición)
SelStart Property (placeholder)


SelText (Propiedad) (marcador de posición)
SelText Property (placeholder)


Style (Propiedad) (marcador de posición)
Style Property (placeholder)


Text (Propiedad) (marcador de posición)
Text Property (placeholder)


Palabra clave no encontrada

La palabra clave seleccionada no se pudo encontrar en la Ayuda de Visual Basic. Puede que:

•	Haya escrito mal la palabra clave

•	Haya seleccionado demasiado texto o muy poco texto

•	Haya solicitado Ayuda acerca de una palabra que no es una palabra clave válida de Visual Basic

La manera más sencilla de obtener Ayuda acerca de una palabra clave concreta es colocar el punto de inserción en cualquier parte de esa palabra clave y presionar F1. No necesita seleccionar la palabra clave. De hecho, si sólo selecciona una parte de la palabra clave o si selecciona más de una palabra, la Ayuda no encontrará lo que busca.

Para utilizar el cuadro de diálogo incorporado de búsqueda en la Ayuda, presione el botón Temas de Ayuda de la barra de herramientas.

Una opción para buscar lo que desea es ver el archivo Léame suministrado con Visual Basic. Este documento contiene información relativa a cambios, adiciones y eliminaciones de última hora no incluidos en la documentación final.


Left, Top (Propiedades) (marcador de posición)
Left, Top Properties (Placeholder)


Height, Width (Propiedades) (marcador de posición)
Height, Width Properties (Placeholder)


Tag (Propiedad) (marcador de posición)
Tag Property (Placeholder)


ToolTipText (Propiedad) (marcador de posición)
ToolTipText Property (Placeholder)


Count (Propiedad) (marcador de posición)
Count Property (Placeholder)


Item (Método) (marcador de posición)
Item Method (Placeholder)


Hwnd (Propiedad) (marcador de posición)
Hwnd Property (Placeholder)


TabStop (Propiedad) (marcador de posición)
TabStop Property (Placeholder)


Visible (Propiedad) (marcador de posición)
Visible Property (Placeholder)


Picture (Propiedad) (marcador de posición)
Picture Property (placeholder)


Max, Min (Propiedades) (marcador de posición)
Max, Min Properties (placeholder)


Add (Método) (marcador de posición)
Add Method (placeholder)


Clear (Método) (marcador de posición)
Clear Method (placeholder)


Container (Propiedad) (marcador de posición)
Container Property (placeholder)


Controls (Colección) (marcador de posición)
Controls Collection (placeholder)


Copies (Propiedad) (marcador de posición)
Copies Property (placeholder)


DataBinding (Objeto) (marcador de posición)
DataBinding Object (placeholder)


DataBindings (Colección) (marcador de posición)
DataBindings Collection (placeholder)


Filename (Propiedad) (marcador de posición)
Filename Property (placeholder)


FontBold, FontItalic, FontStrikeThru (Propiedades) (marcador de posición)
FontBold, FontItalic, FontStrikeThru Properties (placeholder)


FontName (Propiedad) (marcador de posición)
FontName Property (placeholder)


FontSize (Propiedad) (marcador de posición)
FontSize Property (placeholder)


GetData (Método) (marcador de posición)
GetData Method (placeholder)


GetFormat (Método) (marcador de posición)
GetFormat Method (placeholder)


HelpFile (Propiedad) (marcador de posición)
HelpFile Property (placeholder)


Item (Propiedad) (marcador de posición)
Item Property (placeholder)


Remove (Método) (marcador de posición)
Remove Method (placeholder)


SetData (Método) (marcador de posición)
SetData Method (placeholder)


Align (Propiedad) (marcador de posición)
Align Property (placeholder)


DragIcon (Propiedad) (marcador de posición)
DragIcon Property (placeholder)


DragMode (Propiedad) (marcador de posición)
DragMode Property (placeholder)


HelpContextID (Propiedad) (marcador de posición)
HelpContextID Property (placeholder)


TabIndex (Propiedad) (marcador de posición)
TabIndex Property (placeholder)


Constantes de alineación (marcador de posición)
Alignment Constants (placeholder)


Border (Constantes de la propiedad) (marcador de posición)
Border Property Constants (placeholder)


BorderStyle (Constantes) (marcador de posición)
BorderStyle Constants (placeholder)


BorderStyle (Propiedad, controles ActiveX) (marcador de posición)
BorderStyle Property (ActiveX Controls) (placeholder)


Clear (Método, controles ActiveX) (marcador de posición)
Clear Method (ActiveX Controls) (placeholder)


Clipboard (Constantes del objeto) (marcador de posición)
Clipboard Object Constants (placeholder)


Constantes de color (marcador de posición)
Color Constants (placeholder)


CommonDialog (Constantes del control) (marcador de posición)
CommonDialog Control Constants (placeholder)


CommonDialog (Constantes de error) (marcador de posición)
CommonDialog Error Constants (placeholder)


Constantes de controles (marcador de posición)
Control Constants (placeholder)


DataBindings (Propiedad) (marcador de posición)
DataBindings Property (placeholder)


DDE (Constantes) (marcador de posición)
DDE Constants (placeholder)


Constantes de Arrastrar y colocar (marcador de posición)
Drag-and-Drop Constants (placeholder)


Constantes de dibujo (marcador de posición)
Drawing Constants (placeholder)


FetchVerbs (Método) (marcador de posición)
FetchVerbs Method (placeholder)


Constantes de formularios (marcador de posición)
Form Constants (placeholder)


Constantes gráficas (marcador de posición)
Graphics Constants (placeholder)


Grid (Constantes del control) (marcador de posición)
Grid Control Constants (placeholder)


Constantes de Ayuda (marcador de posición)
Help Constants (placeholder)


HideSelection (Propiedad, controles ActiveX) (marcador de posición)
HideSelection Property (ActiveX Controls) (placeholder)


HideSelection (Propiedad) (marcador de posición)
HideSelection Property (placeholder)


Image (Propiedad, controles ActiveX) (marcador de posición)
Image Property (ActiveX Controls) (placeholder)


ImageList (Propiedad, controles ActiveX) (marcador de posición)
ImageList Property (ActiveX Controls) (placeholder)


Index (Propiedad, controles ActiveX) (marcador de posición)
Index Property (ActiveX Controls) (placeholder)


Index (Propiedad) (marcador de posición)
Index Property (placeholder)


Constantes de códigos de tecla (marcador de posición)
Key Code Constants (placeholder)


Key (Propiedad, controles ActiveX) (marcador de posición)
Key Property (ActiveX Controls) (placeholder)


Constantes de aceleradoras para menús (marcador de posición)
Menu Accelerator Constants (placeholder)


Menu (Constantes del control) (marcador de posición)
Menu Control Constants (placeholder)


Otras constantes (marcador de posición)
Miscellaneous Constants (placeholder)


MousePointer (Constantes) (marcador de posición)
MousePointer Constants (placeholder)


Contenedor OLE (Constantes del control) (marcador de posición)
OLE Container Control Constants (placeholder)


Picture (Constantes del objeto) (marcador de posición)
Picture Object Constants (placeholder)


Printer (Constantes del objeto) (marcador de posición)
Printer Object Constants (placeholder)


Constantes para operaciones con gráficos (marcador de posición)
RasterOp Constants (placeholder)


Remove (Método, controles ActiveX) (marcador de posición)
Remove Method (ActiveX Controls) (placeholder)


ShowInTaskbar (Propiedad) (marcador de posición)
ShowInTaskbar Property (placeholder)


ShowTips (Propiedad, controles ActiveX) (marcador de posición)
ShowTips Property (ActiveX Controls) (placeholder)


ShowWhatsThis (Método) (marcador de posición)
ShowWhatsThis Method (placeholder)


Text (Propiedad, controles ActiveX) (marcador de posición)
Text Property (ActiveX Controls) (placeholder)


Value (Propiedad, controles ActiveX) (marcador de posición)
Value Property (ActiveX Controls) (placeholder)


Constantes de tipo Variant (marcador de posición)
Variant Type Constants (placeholder)


Constantes de Visual Basic (marcador de posición)
Visual Basic Constants (placeholder)


WhatsThisButton (Propiedad) (marcador de posición)
WhatsThisButton Property (placeholder)


WhatsThisHelp (Propiedad) (marcador de posición)
WhatsThisHelp Property (placeholder)


WhatsThisHelpID (Propiedad) (marcador de posición)
WhatsThisHelpID Property (placeholder)


WhatsThisMode (Método) (marcador de posición)
WhatsThisMode Method (placeholder)


Constantes de los controles ActiveX (marcador de posición)
Windows 95 Control Constants (placeholder)


ColIsVisible (Propiedad) (marcador de posición)
ColIsVisible Property (placeholder)


ColPos (Propiedad) (marcador de posición)
ColPos Property (placeholder)


DataObject (Objeto) (marcador de posición)
DataObject Object (placeholder)


DataObjectFiles (Colección) (marcador de posición)
DataObjectFiles Collection (placeholder)


DataSource (Propiedad) (marcador de posición)
DataSource Property (placeholder)


Drag (Método) (marcador de posición)
Drag Method (placeholder)


DrawMode (Propiedad) (marcador de posición)
DrawMode Property (placeholder)


FixedAlignment (Propiedad) (marcador de posición)
FixedAlignment Property (placeholder)


GotFocus (Evento) (marcador de posición)
GotFocus Event (placeholder)


GridLineWidth (Propiedad) (marcador de posición)
GridLineWidth Property (placeholder)


Index (Propiedad, matriz de controles) (marcador de posición)
Index Property (Control Array) (placeholder)


LostFocus (Evento) (marcador de posición)
LostFocus Event (placeholder)


Move (Método) (marcador de posición)
Move Method (placeholder)


Name (Propiedad) (marcador de posición)
Name Property (placeholder)


Object (Propiedad) (marcador de posición)
Object Property (placeholder)


Parent (Propiedad) (marcador de posición)
Parent Property (placeholder)


RowColChange (Evento) (marcador de posición)
RowColChange Event (placeholder)


RowIsVisible (Propiedad) (marcador de posición)
RowIsVisible Property (placeholder)


RowPos (Propiedad) (marcador de posición)
RowPos Property (placeholder)


SetFocus (Método) (marcador de posición)
SetFocus Method (placeholder)


ZOrder (Método) (marcador de posición)
ZOrder Method (placeholder)


Files (Método) (marcador de posición)
Files Method (placeholder)


Connect (Evento) (marcador de posición)
Connect Event (placeholder)


HScrollSmallChange, VScrollSmallChange (Propiedades) (marcador de posición)
HScrollSmallChange, VScrollSmallChange Properties (placeholder)


MinHeight, MinWidth (Propiedades) (marcador de posición)
MinHeight, MinWidth Properties (placeholder)


Páginas de propiedades (Cuadro de diálogo) (marcador de posición)
Property Pages Dialog Box (placeholder)


RemoteHost (Propiedad) (marcador de posición)
RemoteHost Property (placeholder)


RemotePort (Propiedad) (marcador de posición)
RemotePort Property (placeholder)


ViewportHeight, ViewportLeft, ViewportTop, ViewportWidth (Propiedades) (marcador de posición)
ViewportHeight, ViewportLeft, ViewportTop, ViewportWidth Properties (placeholder)


Resync (Método, datos remotos) (marcador de posición)
Resync Method (Remote Data) (placeholder)


ContainedVBControls (Colección) (marcador de posición)
ContainedVBControls Collection (placeholder)


Member (Objeto) (marcador de posición)
Member Object (placeholder)


Members (Colección) (marcador de posición)
Members Collection (placeholder)


VBComponentsEvents (Objeto) (marcador de posición)
VBComponentsEvents Object (placeholder)


VBProjectsEvents (Objeto) (marcador de posición)
VBProjectsEvents Object (placeholder)


Files (Propiedad) (marcador de posición)
Files Property (placeholder)


Alignment (Propiedad) (marcador de posición)
Alignment Property (placeholder)


AboutBox (Método) (marcador de posición)
AboutBox Method (placeholder)


Col, Row (Propiedades) (marcador de posición)
Col, Row Properties (placeholder)


RowHeight (Propiedad) (marcador de posición)
RowHeight Property (placeholder)


Scroll (Evento) (marcador de posición)
Scroll Event (placeholder)


ScrollBars (Propiedad) (marcador de posición)
ScrollBars Property (placeholder)


SelEndCol, SelStartCol, SelEndRow, SelStartRow (Propiedades) (marcador de posición)
SelEndCol, SelStartCol, SelEndRow, SelStartRow Properties (placeholder)


ScrollBars Property (placeholder)


Appearance (Propiedad, controles ActiveX) (marcador de posición)
Appearance Property (ActiveX Controls) (placeholder)


BackColor, ForeColor (Propiedades, controles ActiveX) (marcador de posición)
BackColor, ForeColor Properties (ActiveX Controls) (placeholder)


BorderStyle (Constantes, controles ActiveX) (marcador de posición)
BorderStyle Constants (ActiveX Controls) (placeholder)


Caption (Propiedad, controles ActiveX) (marcador de posición)
Caption Property (ActiveX Controls) (placeholder)


Change (Evento, controles ActiveX) (marcador de posición)
Change Event (ActiveX Controls) (placeholder)


Clear (Método, controles ActiveX) (marcador de posición)
Clear Method (ActiveX Controls) (placeholder)


Click (Evento, controles ActiveX) (marcador de posición)
Click Event (ActiveX Controls) (placeholder)


Constantes del objeto Clipboard (controles ActiveX) (marcador de posición)
Clipboard Object Constants (ActiveX Controls) (placeholder)


Count (Propiedad, controles ActiveX) (marcador de posición)
Count Property (ActiveX Controls) (placeholder)


DataObject (Objeto, controles ActiveX) (marcador de posición)
DataObject Object (ActiveX Controls) (placeholder)


DataObjectFiles (Colección, controles ActiveX) (marcador de posición)
DataObjectFiles Collection (ActiveX Controls) (placeholder)


DataSource (Propiedad, controles ActiveX) (marcador de posición)
DataSource Property (ActiveX Controls) (placeholder)


DblClick (Evento, controles ActiveX) (marcador de posición)
DblClick Event (ActiveX Controls) (placeholder)


Constantes de Arrastrar y colocar (controles ActiveX) (marcador de posición)
Drag-and-Drop Constants (ActiveX Controls) (placeholder)


Enabled (Propiedad, controles ActiveX) (marcador de posición)
Enabled Property (ActiveX Controls) (placeholder)


FetchVerbs (Método, controles ActiveX) (marcador de posición)
FetchVerbs Method (ActiveX Controls) (placeholder)


Files (Método, controles ActiveX) (marcador de posición)
Files Method (ActiveX Controls) (placeholders)


Font (Propiedad, controles ActiveX) (marcador de posición)
Font Property (ActiveX Controls) (placeholder)


FontName (Propiedad, controles ActiveX) (marcador de posición)
FontName Property (ActiveX Controls) (placeholder)


FontSize (Propiedad, controles ActiveX) (marcador de posición)
FontSize Property (ActiveX placeholder)


GetData (Método, controles ActiveX) (marcador de posición)
GetData Method (ActiveX Controls) (placeholder)


GetFormat (Método, controles ActiveX) (marcador de posición)
GetFormat Method (ActiveX Controls) (placeholder)


HideSelection (Propiedad, controles ActiveX) (marcador de posición)
HideSelection Property (ActiveX Controls) (complaceholder)


hWnd (Propiedad, controles ActiveX) (marcador de posición)
hWnd Property (ActiveX Controls) (placeholder)


Item (Método, controles ActiveX) (marcador de posición)
Item Method (ActiveX Controls) (placeholder)


Constantes de códigos de tecla (controles ActiveX) (marcador de posición)
Key Code Constants (ActiveX Controls) (placeholder)


Key (Propiedad, controles ActiveX) (marcador de posición)
Key Property (ActiveX Controls) (complaceholder)


KeyDown, KeyUp (Eventos, controles ActiveX) (marcador de posición)
KeyDown, KeyUp Events (ActiveX Controls) (placeholder)


KeyPress (Evento, controles ActiveX) (marcador de posición)
KeyPress Event (ActiveX Controls) (placeholder)


Max, Min (Propiedades, controles ActiveX) (marcador de posición)
Max, Min Properties (ActiveX Controls) (placeholder)


MouseDown, MouseUp (Eventos, controles ActiveX) (marcador de posición)
MouseDown, MouseUp Events (ActiveX Controls) (placeholder)


MouseIcon (Propiedad, controles ActiveX) (marcador de posición)
MouseIcon Property (ActiveX Controls) (placeholder)


MouseMove (Evento, controles ActiveX) (marcador de posición)
MouseMove Event (ActiveX Controls) (placeholder)


MousePointer (Constantes, controles ActiveX) (marcador de posición)
MousePointer Constants (ActiveX Controls) (placeholder)


MousePointer (Propiedad, controles ActiveX) (marcador de posición)
MousePointer Property (ActiveX Controls) (placeholder


OLECompleteDrag (Evento, controles ActiveX) (marcador de posición)
OLECompleteDrag Event (ActiveX Controls) (placeholder)


OLEDrag (Método, controles ActiveX) (marcador de posición)
OLEDrag Method (ActiveX Controls) (placeholder)


OLEDragDrop (Evento, controles ActiveX) (marcador de posición)
OLEDragDrop Event (ActiveX Controls) (placeholder)


OLEDragMode (Propiedad, controles ActiveX) (marcador de posición)
OLEDragMode Property (ActiveX Controls) (placeholder)


OLEDragOver (Evento, controles ActiveX) (marcador de posición)
OLEDragOver Event (ActiveX Controls) (placeholder)


OLEDropMode (Propiedad, controles ActiveX) (marcador de posición)
OLEDropMode Property (ActiveX Controls) (placeholder)


OLEGiveFeedback (Evento, controles ActiveX) (marcador de posición)
OLEGiveFeedback Event (ActiveX Controls) (placeholder)


OLESetData (Evento, controles ActiveX) (marcador de posición)
OLESetData Event (ActiveX Controls) (placeholder)


OLEStartDrag (Evento, controles ActiveX) (marcador de posición)
OLEStartDrag Event (ActiveX Controls) (placeholder)


Picture (Propiedad, controles ActiveX) (marcador de posición)
Picture Property (ActiveX Controls) (placeholder)


Páginas de propiedades (Cuadro de diálogo, controles ActiveX) (marcador de posición)
Property Pages Dialog Box (ActiveX Controls) (placeholder)


RemoteHost (Propiedad, controles ActiveX) (marcador de posición)
RemoteHost Property (ActiveX Controls) (placeholder)


RemotePort (Propiedad, controles ActiveX) (marcador de posición)
RemotePort Property (ActiveX Controls) (placeholder)


SelLength, SelStart, SelText (Propiedades, controles ActiveX) (marcador de posición)
SelLength, SelStart, SelText Properties (ActiveX Controls) (placeholder)


SetData (Método, controles ActiveX) (marcador de posición)
SetData Method (ActiveX Controls) (placeholder)


ShowTips (Propiedad, controles ActiveX) (marcador de posición)
ShowTips Property (ActiveX Controls) (complaceholder)


Text (Propiedad, controles ActiveX) (marcador de posición)
Text Property (ActiveX Controls) (complaceholder)


Value (Propiedad, controles ActiveX) (marcador de posición)
Value Property (ActiveX Controls) (complaceholder)


hDC (Propiedad, controles ActiveX) (marcador de posición)
hDC Property (ActiveX Controls) (complaceholder)


Height, Width (Propiedades, controles ActiveX) (marcador de posición)
Height, Width Properties (ActiveX Controls) (complaceholder)


Index (Propiedad, controles ActiveX) (marcador de posición)
Index Property (ActiveX Controls) (complaceholder)


Left, Top (Propiedades, controles ActiveX) (marcador de posición)
Left, Top Properties (ActiveX Controls) (complaceholder)


Tag (Propiedad, controles ActiveX) (marcador de posición)
Tag Property (ActiveX Controls) (complaceholder)


Visible (Propiedad, controles ActiveX) (marcador de posición)
Visible Property (ActiveX Controls) (complaceholder)


Remove (Método, controles ActiveX) (marcador de posición)
Remove Method (ActiveX Controls) (complaceholder)


Object (Propiedad, controles ActiveX) (marcador de posición)
Object Property (ActiveX Controls) (placeholder)


Páginas de propiedades (controles ActiveX) (marcador de posición)
Property Pages (ActiveX controls) (placeholder)


No hay ninguna fuente (Error 24574) (control de diálogo común) (marcador de posición)
No fonts exist (Error 24574) (Common Dialog Control) (complaceholder)


Temas de Ayuda (marcador de posición)
Help Contents placeholder


BorderStyle (Propiedad, controles ActiveX) (marcador de posición)
BorderStyle Property (ActiveX Controls) (placeholder)


RightToLeft (Propiedad, controles ActiveX) (marcador de posición)
RightToLeft Property (ActiveX Controls) (placeholder)


Refresh (Método, controles ActiveX) (marcador de posición)
Refresh Method (ActiveX Controls) (placeholder)