Unidad III Repite un grupo de instrucciones un n�mero especificado de veces. Sintaxis For contador = principio To fin [Step incremento] [instrucciones] [Exit For] [instrucciones] Next [contador] La sintaxis de la instrucci�n For…Next consta de las siguientes partes: Comentarios El argumento incremento puede ser positivo o negativo. El valor del argumento incremento determina la manera en que se procesa el bucle, como se muestra a continuaci�n: Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior Una vez que se inicia el bucle y se han ejecutado todas las instrucciones en el bucle, incremento se suma a contador. En este punto, las instrucciones del bucle se pueden ejecutar de nuevo (si se cumple la misma prueba que caus� que el bucle se ejecutara inicialmente) o bien se sale del bucle y la ejecuci�n contin�a con la instrucci�n que sigue a la instrucci�n Next. Sugerencia Cambiar el valor de contador mientras est� dentro de un bucle hace dif�cil su lectura y depuraci�n. Se pueden colocar en el bucle cualquier n�mero de instrucciones Exit For como una manera alternativa de salir del mismo. La instrucci�n Exit For, que se utiliza a menudo en la evaluaci�n de alguna condici�n (por ejemplo, If…Then), transfiere el control a la instrucci�n que sigue inmediatamente a la instrucci�n Next. Se pueden anidar bucles For…Next, colocando un bucle For…Next dentro de otro. Para ello, proporcione a cada bucle un nombre de variable �nico como su contador. La siguiente construcci�n es correcta: For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 … Next K Next J Next I Nota Si omite un contador en una instrucci�n Next, la ejecuci�n contin�a como si se hubiera incluido. Se produce un error si se encuentra una instrucci�n Next antes de su instrucci�n For correspondiente. PSet (M�todo) Establece un punto de un objeto a un color especificado. Sintaxis objeto.PSet [Step] (x, y), [color] La sintaxis del m�todo PSet consta de las siguientes partes: Comentarios El tama�o del punto dibujado depende del valor de la propiedad DrawWidth. Cuando DrawWidth es 1, PSet establece un �nico p�xel al color especificado. Cuando DrawWidth es mayor que 1, el punto se centra en las coordenadas especificadas. La forma en que se dibuja el punto depende del valor de las propiedades DrawMode y DrawStyle. Cuando se ejecuta PSet, las propiedades CurrentX y CurrentY se establecen al punto especificado por los argumentos. Para borrar un �nico p�xel con el m�todo PSet, especifique las coordenadas del p�xel y utilice el valor de la propiedad BackColor como argumento color. Este m�todo no se puede usar en un bloque With�End With. Line (M�todo) Dibuja l�neas y rect�ngulos en un objeto. Sintaxis objeto.Line [Step] (x1, y1) [Step] – (x2, y2), [color], [B][F] La sintaxis del m�todo Line consta de las siguientes partes: Comentarios Para dibujar l�neas conectadas, empiece una l�nea en el punto final de la l�nea anterior. El ancho de la l�nea dibujada depende del valor de la propiedad DrawWidth. El modo en que se dibuja una l�nea o un cuadro en el fondo depende del valor de las propiedades DrawMode y DrawStyle. Cuando se ejecuta Line, las propiedades CurrentX y CurrentY se establecen al punto final especificado por los argumentos. Este m�todo no puede usarse en un bloque With�End With. Do…Loop (Instrucci�n) Repite un bloque de i nstrucciones cuando una condici�n es True o hasta que una condici�n se convierta en True. Sintaxis Do [{While | Until} condici�n] [instrucciones] [Exit Do] [instrucciones] Loop O bien, puede utilizar esta sintaxis: Do [instrucciones] [Exit Do] [instrucciones] Loop [{While | Until} condici�n] La sintaxis de la instrucci�n Do Loop consta de las siguientes partes: Comentarios Se puede utilizar cualquier n�mero de instrucciones Exit Do ubicadas en cualquier lugar dentro de una estructura de control Do�Loop, para proporcionar una salida alternativa de un Do�Loop. La instrucci�n Exit Do se utiliza frecuentemente en la evaluaci�n de alguna condici�n, por ejemplo, If�Then; en este caso, la instrucci�n Exit Do transfiere el control a la instrucci�n que sigue inmediatamente a la instrucci�n Loop. Cuando se utiliza con instrucciones anidadas Do�Loop, la instrucci�n Exit Do transfiere control al bucle que est� anidado un nivel por encima del bucle donde ocurre. While…Wend (Instrucci�n) Ejecuta una serie de instrucciones mientras una condici�n dada sea True. Sintaxis While condici�n [intrucciones] Wend La sintaxis de la instrucci�n While…Wend consta de las siguientes partes: Comentarios Si condici�n es True, todas las instrucciones se ejecutan hasta que se encuentra la instrucci�n Wend. Despu�s, el control vuelve a la instrucci�n While y se comprueba de nuevo condici�n. Si condici�n es a�n True, se repite el proceso. Si no es True, la ejecuci�n se reanuda con la instrucci�n que sigue a la instrucci�n Wend. Los bucles While…Wend se pueden anidar a cualquier nivel. Cada Wend coincide con el While m�s reciente. Sugerencia La instrucci�n Do…Loop proporciona una manera m�s flexible y estructurada de realizar los bucles. Controls, Colecci�n Colecci�n cuyos elementos representan a los controles de un componente. La colecci�n Controls tiene una propiedad Count que especifica el n�mero de controles de la colecci�n, y un m�todo Item que devuelve un miembro de la colecci�n. Sintaxis objeto.Controls.Count objeto.Controls(�ndice) La sintaxis de la colecci�n Controls consta de las siguientes partes: Nota Si el componente es un m�dulo de Visual Basic, como Form o UserControl, no tiene que proporcionar la expresi�n del objeto al escribir c�digo en el m�dulo. No obstante, si el contenedor es un control ActiveX compilado, como un control ToolBar, debe proporcionar siempre la expresi�n del objeto. Comentarios La colecci�n Controls enumera los controles cargados en un componente y puede ser �til para repetir a lo largo de �stos. Por ejemplo, puede usarla para cambiar la propiedad BackColor de todos los controles Label de un Form. La colecci�n Controls identifica una variable intr�nseca a nivel de formulario denominada Controls. Si omite el marcador de posici�n opcional objeto, debe incluir la palabra clave Controls. Sin embargo, si incluye objeto, puede omitir la palabra clave Controls. Por ejemplo, las siguientes dos l�neas de c�digo tienen el mismo efecto: MyForm.Controls(6).Top = MyForm.Controls(5).Top + increment MyForm(6).Top = MyForm(5).Top + increment Puede pasar Controls(�ndice) a una funci�n cuyo argumento se especifique como una clase Controls. Tambi�n puede tener acceso a miembros usando sus nombres. Por ejemplo: Controls("Command1").Top Puede usar la palabra clave TypeOf con la instrucci�n If, o la funci�n TypeName, para determinar el tipo de un control de la colecci�n Controls. Nota La colecci�n Controls no es un miembro de la clase Collection de Visual Basic. Tiene un conjunto de propiedades y m�todos m�s peque�o que un objeto Collection, y no puede crear instancias de ella. For Each…Next (Instrucci�n) Repite un grupo de instrucciones para cada elemento de una matriz o colecci�n. Sintaxis For Each elemento In grupo [instrucciones] [Exit For] [instrucciones] Next [elemento] La sintaxis de la instrucci�n For Each…Next consta de las siguientes partes: Comentarios La entrada al bloque For Each se produce si hay al menos un elemento en grupo. Una vez que se ha entrado en el bucle, todas las instrucciones en el bucle se ejecutan para el primer elemento en grupo. Despu�s, mientras haya m�s elementos en grupo, las instrucciones en el bucle contin�an ejecut�ndose para cada elemento. Cuando no hay m�s elementos en el grupo, se sale del bucle y la ejecuci�n contin�a con la instrucci�n que sigue a la instrucci�n Next. Se pueden colocar en el bucle cualquier n�mero de instrucciones Exit For. La instrucci�n Exit For se utiliza a menudo en la evaluaci�n de alguna condici�n (por ejemplo, If…Then) y transfiere el control a la instrucci�n que sigue inmediatamente a la instrucci�n Next. Puede anidar bucles For Each…Next, colocando un bucle For Each…Next dentro de otro. Sin embargo, cada elemento del bucle debe ser �nico. Nota Si omite elemento en una instrucci�n Next, la ejecuci�n contin�a como si se hubiera incluido. Si se encuentra una instrucci�n Next antes de su instrucci�n For correspondiente, se producir� un error. No se puede utilizar la instrucci�n For Each…Next con una matriz de tipos definidos por el usuario porque un tipo Variant no puede contener un tipo definido por el usuario. Open (Instrucci�n) Activa operaciones de entrada/salida (E/S) con un archivo. Sintaxis Open rutaacceso [For modo] [Access acceso] [bloquear] As [#]n�meroarchivo [Len=longitudregistro] La sintaxis de la instrucci�n Open consta las siguientes partes: Comentarios Antes de poder ejecutar una operaci�n de E/S en un archivo, �ste debe estar abierto. Open asigna un b�fer para operaciones de E/S con el archivo y determina el modo de acceso que se debe utilizar con el b�fer. Si el archivo especificado con rutaacceso no existe, se crea al abrir un archivo en los modos Append, Binary, Output o Random. Si el archivo ya lo ha abierto otro proceso y no se permite el tipo de acceso especificado, la operaci�n Open fracasa y se produce un error. La cl�usula Len se ignora si modo es Binary. Importante En los modos Binary, Input y Random se puede abrir un archivo utilizando un n�mero de archivo distinto sin necesidad de cerrarlo antes. En los modos Append y Output debe cerrar el archivo para poder abrirlo con un n�mero de archivo distinto. DateDiff (Funci�n) Devuelve un valor de tipo Variant (Long) que especifica el n�mero de intervalos de tiempo entre dos fechas determinadas. Sintaxis DateDiff(intervalo, fecha1, fecha2[, primerd�asemana[, primerasemanaa�o]]) La sintaxis de la funci�n DateDiff consta de los siguientes argumentos con nombre: Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior Valores El argumento intervalo toma los valores siguientes: Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior El argumento primerd�asemana toma los siguientes valores: Comentarios Puede utilizar la funci�n DateDiff para determinar el n�mero de intervalos especificados que existen entre dos fechas. Por ejemplo, con DateDiff podr�a calcular el n�mero de d�as entre dos fechas o el n�mero de semanas entre hoy y el final del a�o. Si desea saber el n�mero de d�as entre fecha1 y fecha2, puede utilizar D�a del a�o ("y") o D�a ("d"). Cuando intervalo es D�a de la semana ("w"), DateDiff devuelve el n�mero de semanas entre las dos fechas. Si fecha1 es lunes, DateDiff contar� el n�mero de lunes hasta fecha2. En la cuenta incluir� fecha2, pero no fecha1. Si intervalo es Semana ("ww"), la funci�n DateDiff devolver� el n�mero de semanas entre las dos fechas. En este caso contar� el n�mero de domingos entre fecha1 y fecha2. DateDiff contar� fecha2 si es domingo, pero no fecha1, aunque sea domingo. Si fecha1 se refiere a un momento posterior en el tiempo a fecha2, la funci�n DateDiff devolver� un n�mero negativo. El argumento primerd�asemana afecta a los c�lculos que utilizan "w" y "ww" como s�mbolos de intervalo. Si fecha1 o fecha2 es un literal de fecha, el a�o, si se especifica, pasar� a ser una parte permanente de la fecha. Sin embargo, si fecha1 o fecha2 est� comprendida entre comillas dobles ("") y se omite el a�o, se insertar� el a�o en curso en el c�digo cada vez que se eval�e la expresi�n fecha1 o fecha2. As� es posible escribir c�digo que se pueda usar en a�os distintos. Cuando compara el 31 de diciembre con el 1 de enero del a�o siguiente, DateDiff para un a�o ("yyyy") devolver� 1 aunque s�lo haya pasado un d�a. Filter (Propiedad, control CommonDialog) Devuelve o establece los filtros presentados en el cuadro de lista Tipo de un cuadro de di�logo. Sintaxis objeto.Filter [= descripci�n1 |filtro1 |descripci�n2 |filtro2…] La sintaxis de la propiedad Filter consta de las siguientes partes: Comentarios El filtro especifica el tipo de archivos que se presentan en el cuadro de lista de archivos del cuadro de di�logo. Por ejemplo, si selecciona el filtro *.txt se presentar�n todos los archivos de texto. Utilice esta propiedad para proporcionar al usuario una lista de filtros que se pueden seleccionar cuando se presente el cuadro de di�logo. Utilice la barra vertical ( | ) (ASCII 124) para separar los valores descripci�n y filtro. No incluya espacios en blanco delante o a continuaci�n de la barra vertical, ya que dichos espacios aparecer�n en los valores descripci�n y filtro. El siguiente c�digo muestra un ejemplo de filtro que permite que el usuario seleccione archivos de texto o archivos gr�ficos que incluyan mapas de bits e iconos: Texto (*.txt)|*.txt|Im�genes (*.bmp;*.ico)|*.bmp;*.ico Cuando especifique varios filtros en un cuadro de di�logo, utilice la propiedad FilterIndex para determinar qu� filtro se presenta como predeterminado. Tipo de datos String Unidad IV. Mejoras a la interfaz Editor de men�s (Cuadro de di�logo) Le permite crear men�s personalizados para la aplicaci�n y definir sus propiedades. Opciones del cuadro de di�logo T�tulo Le permite escribir el nombre del comando o del men� que desea que aparezca en la barra de men�s o en un men�. Si desea crear una barra separadora en el men�, escriba un �nico gui�n (-) en el cuadro T�tulo. Para dar al usuario acceso a trav�s del teclado a un elemento del men�, escriba el signo & delante de una letra. En tiempo de ejecuci�n, esta letra aparecer� subrayada (el signo & no ser� visible) y el usuario tendr� acceso al men� o al comando si presiona las teclas Alt y la correspondiente a la letra subrayada. Si necesita que aparezca en el men� el signo &, deber� escribir dos signos & consecutivos. Nombre Le permite escribir un nombre de control para el elemento del men�. El nombre de control es un identificador que s�lo se utiliza para tener acceso al elemento del men� en el c�digo, no aparece en ning�n men�. �ndice Le permite asignar un valor num�rico que determina la posici�n del control en una matriz de controles. Esta posici�n no tiene ninguna relaci�n con la ubicaci�n del control en la pantalla. M�todo abreviado Le permite seleccionar una tecla de m�todo abreviado para cada comando. Id. de contexto de Ayuda Le permite asignar un valor num�rico �nico para el Id. de contexto. Este valor se utiliza para encontrar el tema de Ayuda apropiado en el archivo de Ayuda identificado mediante la propiedad HelpFile. NegotiatePosition Le permite seleccionar la propiedad NegotiatePosition del men�. Esta propiedad determina si el men� aparece o no en un formulario contenedor y c�mo aparece. Checked Le permite hacer que aparezca inicialmente una marca de verificaci�n a la izquierda de un elemento del men�. Se utiliza normalmente para indicar si una opci�n de alternar est� activada o no. Enabled Le permite seleccionar si el elemento del men� debe responder a eventos. Desactive esta opci�n si desea que el elemento del men� no est� disponible y aparezca atenuado. Visible Le permite hacer que un elemento aparezca en el men�. WindowList Determina si el control del men� contiene una lista de formularios secundarios MDI abiertos en una aplicaci�n MDI. Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior Flecha a la derecha Pasa el men� seleccionado a un nivel inferior cada vez que hace clic en el bot�n. Puede crear hasta cuatro niveles de submen�s. Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior Flecha a la izquierda Pasa el men� seleccionado a un nivel superior cada vez que hace clic en el bot�n. Puede crear hasta cuatro niveles de submen�s. Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior Flecha arriba Cada vez que se hace clic en este bot�n, el elemento seleccionado del men� se mueve hacia arriba una posici�n dentro del mismo nivel de men�. Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior Flecha abajo Cada vez que se hace clic en este bot�n, el elemento seleccionado del men� se mueve hacia abajo una posici�n dentro del mismo nivel de men�. Lista Men�s Es un cuadro de lista que muestra en orden jer�rquico todos los elementos del men�. Los elementos de los submen�s aparecen indentados para indicar su ubicaci�n o su nivel en la jerarqu�a. Siguiente Selecciona la l�nea siguiente. Insertar Inserta una l�nea en el cuadro de lista, inmediatamente encima de la l�nea actualmente seleccionada. Eliminar Elimina Borra la l�nea actualmente seleccionada. Aceptar Cierra el Editor de men�s y aplica todos los cambios efectuados en el �ltimo formulario seleccionado. El men� est� disponible en tiempo de dise�o, pero si selecciona un men� en la fase de dise�o, se abre la ventana C�digo para el evento Clic de ese men� en lugar de ejecutarse el c�digo del evento. Cancelar Cierra el Editor de men�s y cancela todos los cambios. 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 usarlo en solitario, sino como punto de almacenamiento central para proporcionar c�modamente im�genes a otros controles. Sintaxis ImageList Comentarios El control ImageList funciona como un almac�n de im�genes, y como tal, necesita un control secundario para mostrar las im�genes almacenadas. El segundo control puede ser cualquier control que pueda mostrar un objeto Picture, o puede ser uno de los controles comunes de Windows dise�ados especialmente para ser enlazados con el control ImageList. �stos controles son los controles ListView, ToolBar, TabStrip, Header, ImageCombo y TreeView. Para usar un control ImageList con uno de estos controles, debe enlazar un control ImageList particular con el segundo control mediante una propiedad adecuada. Para el control ListView debe establecer las propiedades Icons y SmallIcons de los controles ImageList. Para los controles TreeView, TabStrip, ImageCombo y Toolbar la propiedad ImageList debe ser un control ImageList. Durante el dise�o del programa puede agregar im�genes mediante la ficha Im�genes 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. Para los controles comunes de Windows, 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 control ImageList utilizando la propiedad ImageList, como en el ejemplo siguiente: TreeView1.ImageList = ImageList1 ' Especifica ImageList Importante Al usar el control ImageList con controles comunes de Windows, es necesario insertar todas las im�genes que necesitar� en el orden adecuado, en el control ImageList antes de enlazarlo al control secundario. Una vez que ImageList est� enlazado a un control secundario, no puede eliminar im�genes, y no puede insertar im�genes en la mitad de la colecci�n ListImages. A pesar de todo, puede agregar im�genes al final de la colecci�n. Una vez asociado un ImageList con un control com�n de Windows, 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". Para usar el control ImageList con otros controles (que no se pueden enlazar al control ImageList), asigne la propiedad Picture del segundo control al objeto Picture de cualquier imagen en el control ImageList. Por ejemplo, el c�digo siguiente asigna el objeto Picture del primer objeto ListImage de una colecci�n ListImages a la propiedad Picture de un panel StatusBar creado recientemente: 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 al objeto Picture. Puede insertar una imagen de cualquier tama�o en el control ImageList. A pesar de todo, el tama�o de la imagen mostrada por el segundo control depende de un factor: si el control secundario es o no un control com�n de Windows enlazado al control ImageList. Cuando el control ImageList est� enlazado a otro control com�n de Windows, es posible agregar im�genes de diferentes tama�os al control, a pesar de todo el tama�o de la imagen mostrada en el control com�n de Windows asociado se ajustar� al tama�o de la primera imagen agregada a ImageList. Por ejemplo, si agrega una imagen de 16 por 16 p�xeles a un control ImageList, se enlaza ImageList a un control TreeView (para mostrarse en objetos Node), todas las im�genes almacenadas en un control ImageList se mostrar�n con 16 por 16 p�xeles, incluso si son mucho mayores o mucho menores. Por otra parte, si muestra im�genes usando el objeto Picture, cualquier imagen almacenada en el control ImageList se mostrar� con su tama�o original, sin importar su tama�o. Nota para la distribuci�n El control ImageList forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control ImageList en su aplicaci�n debe agregar el archivo MSCOMCTL.OCX al proyecto. Cuando distribuya su aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador. 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 as�gnele 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 para la distribuci�n El control Toolbar forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control Toolbar en su aplicaci�n debe agregar el archivo MSCOMCTL.OCX al proyecto. Cuando distribuya su aplicaci�n, instale el archivo MSCOMCTL.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, vea "Cargar controles ActiveX" en la Gu�a de herramientas componentes. 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 usar 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 para la distribuci�n El control StatusBar forma parte de los controles personalizados que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control StatusBar en su aplicaci�n, debe agregar el archivo MSCOMCTL.OCX a su proyecto. Al distribuir su aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador. 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 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 usar 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 para la distribuci�n El control ProgressBar forma parte de un grupo de controles ActiveX que podr� encontrar en el archivo MSCOMCTL.OCX. Para usar el control ProgressBar en una aplicaci�n, debe agregar el archivo MSCOMCTL.OCX al proyecto. Al distribuir la aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador. ImageCombo (Control) El control ImageCombo es una versi�n del cuadro combinado est�ndar de Windows habilitada para aceptar im�genes. Es posible asociar una imagen a cada elemento de la parte de lista del control. Adem�s de admitir im�genes, el control ImageCombo act�a como una colecci�n y una lista de objetos. Cada elemento de la parte de lista del control es un objeto ComboItem distinto de los dem�s y, juntos, todos los elementos de la lista constituyen la colecci�n ComboItems. Esto simplifica la tarea de especificar propiedades elemento por elemento, por ejemplo, el texto de una etiqueta, un texto de informaci�n, el valor de una clave y el nivel de sangr�a. Sintaxis ImageCombo Comentarios Con un control ImageCombo puede mostrar una lista de elementos que incluyen im�genes. Es posible hacer que cada elemento tenga su propia imagen o bien emplear la misma imagen para m�ltiples elementos de una lista. El control ImageCombo contiene una colecci�n de objetos ComboItem. Un objeto ComboItem define las distintas caracter�sticas de los elementos mostrados en la parte de lista del control. Adem�s de mostrar im�genes en los elementos de la lista, el control ImageCombo utiliza colecciones y objetos para administrar la parte de lista del control. Gracias a esto se simplifica el manejo de las entradas de la lista, utilizando los conocidos conceptos de colecci�n y objeto, como los m�todos Add, Remove y Clear, y tambi�n las construcciones For Each, With… y End With. Nota El control ImageCombo forma parte de un grupo de controles ActiveX incluidos dentro del archivo COMCT232.ocx. Antes de poder usar el control ImageCombo en su aplicaci�n debe agregar el archivo COMCT232.ocx al proyecto. Al distribuir su aplicaci�n, instale el archivo COMCT232.ocx en el directorio System o System32 de Microsoft Windows. Para obtener m�s informaci�n acerca de c�mo agregar un control ActiveX a un proyecto, vea "Agregar controles a un proyecto" en el Manual del programador. 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 DERECHA y FLECHA IZQUIERDA tambi�n permiten desplazarse por los objetos Node expandidos, pero si presiona la tecla FLECHA 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 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 usar 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 para la distribuci�n El control TreeView forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control TreeView en su aplicaci�n, debe agregar el archivo MSCOMCTL.OCX al proyecto. Cuando distribuya su aplicaci�n, instale el archivo MSCOMCTL.OCX en el directorio System o System32 de Microsoft Windows del usuario. Usar el control TreeView El control TreeView est� dise�ado para mostrar datos de naturaleza jer�rquica, como �rboles organizativos, las entradas de un �ndice, o los archivos y directorios de un disco. Figura 2.40 Un control TreeView t�pico Aplicaciones posibles Establecer las propiedades del objeto Node Un "�rbol" se compone de ramas sucesivas de "nodos" y cada nodo consta normalmente de una imagen (establecida con la propiedad Image) y una etiqueta (establecida con la propiedad Text). Un control ImageList asociado al control TreeView proporciona las im�genes para los nodos. Si desea obtener m�s informaci�n acerca del uso del control ImageList con otros controles, vea "Usar el control ImageList". Un nodo puede expandirse o contraerse dependiendo de si tiene o no nodos secundarios (nodos que parten de �l). En el nivel superior est�n los nodos "ra�z", y cada nodo ra�z puede tener cualquier n�mero de nodos secundarios. El n�mero total de nodos no est� limitado (salvo por las restricciones del sistema). En la figura 2.41 se muestra un �rbol con dos nodos ra�z. "Ra�z 1" tiene tres nodos secundarios y "Secundario 3" tiene a su vez un nodo secundario. "Ra�z 2" tiene nodos secundarios, como indica el signo "+", pero est� sin expandir. Figura 2.41 Nodos ra�z y nodos secundarios Cada nodo de un �rbol es en realidad un objeto Node programable que pertenece a la colecci�n Nodes. Como en otras colecciones, cada miembro de la colecci�n tiene un valor �nico en las propiedades Index y Key, lo que permite el acceso a las propiedades del nodo. Por ejemplo, el c�digo siguiente utiliza el �ndice de un nodo determinado ("7") para establecer sus propiedades Image y Text: tvwMi�rbol.Nodes(7).Image = "cerrado" tvwMi�rbol.Nodes(7).Text = "IEEE" Sin embargo, si se ha asignado al nodo una clave �nica, por ejemplo "7 ID", el mismo c�digo se podr�a escribir de esta forma: tvwMi�rbol.Nodes("7 ID").Image = "cerrado" tvwMi�rbol.Nodes("7 ID").Text = "IEEE" Relaciones entre nodos y referencias a nodos relativos Cada nodo puede ser secundario o primario, seg�n su relaci�n con otros nodos. El objeto Node cuenta con varias propiedades que devuelven distintos datos sobre los nodos secundarios o primarios. Por ejemplo, el c�digo siguiente utiliza la propiedad Children para devolver el n�mero de nodos secundarios que tiene un nodo (si tiene alguno): MsgBox tvwMi�rbol.Nodes(10).Children Sin embargo, algunas de las propiedades no devuelven informaci�n como lo hace Children, sino que devuelven una referencia a otro objeto Node. Por ejemplo, la propiedad Parent devuelve una referencia al nodo primario de un nodo espec�fico (siempre y cuando no sea el nodo ra�z). Con esta referencia puede manipular el nodo primario si invoca los m�todos o establece las propiedades aplicables a los objetos Node. Por ejemplo, el c�digo siguiente obtiene los valores de las propiedades Text e Index de un nodo primario: MsgBox tvwMi�rbol.Nodes(10).Parent.Text MsgBox tvwMi�rbol.Nodes(10).Parent.Index Sugerencia Puede usar la instrucci�n Set con una variable de objeto de tipo Node para manipular referencias a otros objetos Node. Por ejemplo, el c�digo siguiente establece una variable de objeto Node con la referencia que devuelve la propiedad Parent. Despu�s se utiliza la variable de objeto para devolver las propiedades del nodo relativo: Dim tempNode As Node ' Declara una variable de objeto. ' Establece la variable con la referencia devuelta. Set tempNode = tvwMi�rbol.Nodes(10).Parent MsgBox tempNode.Text ' Devuelve la propiedad Text del nodo primario. MsgBox tempNode.Index ' Devuelve la propiedad Index del nodo primario. Agregar objetos Node a la colecci�n Nodes Para agregar un objeto Node al �rbol, utilice el m�todo Add (colecci�n Nodes). Este m�todo tiene dos argumentos, relative y relationship, que determinan d�nde se agregar� el nodo. El primer argumento, relative, indica el nombre de un nodo, mientras que el segundo, relationship, especifica la relaci�n entre el nuevo nodo y el indicado en relative. Por ejemplo, el c�digo siguiente agrega un nodo denominado "nodo 11" como un nodo secundario de otro llamado "nodo 7". La constante intr�nseca tvwChild especifica que el nuevo nodo es un nodo secundario del indicado en el primer argumento. El tercer argumento asigna la propiedad Key al nuevo nodo. tvwMi�rbol.Nodes.Add "nodo 7", tvwChild, "nodo 11" Otras relaciones posibles son las siguientes: Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior Por ejemplo, suponga que hay tres nodos y que desea colocar un cuarto nodo entre el segundo y el tercero. El c�digo ser�a el siguiente: ' Suponiendo que el valor de Key para el segundo ' nodo es "nodo 2". tvwMi�rbol.Nodes.Add "nodo 2", tvwNext Otros argumentos del m�todo Add son key, text e image. Con estos argumentos puede asignar las propiedades Key, Text e Image al crear el nuevo objeto Node. Para obtener m�s informaci�n Si desea obtener m�s informaci�n acerca del m�todo Add de la colecci�n Nodes, vea "M�todo Add", escribiendo "M�todo Add" en la b�squeda de �ndice y haciendo clic en "M�todo Add (colecci�n Nodes)". Una segunda forma de agregar nodos es declarar una variable de objeto de tipo Node y usar luego la instrucci�n Set con el m�todo Add. La instrucci�n Set establece la variable de objeto con el nuevo nodo. Despu�s, puede usar la variable de objeto para establecer las propiedades del nodo, como se muestra a continuaci�n: Dim nodX As Node Set nodX = tvwMi�rbol.Nodes.Add("nodo 10", tvwChild) nodX.Key = "nodo 11" nodX.Text = "IEEE" nodX.Image = "cerrado" Sugerencia Usar la instrucci�n Set con el m�todo Add facilita la lectura y depuraci�n del c�digo. Sin embargo, usar el m�todo Add y sus argumentos para agregar nodos crea un c�digo m�s r�pido. 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: 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: Puede mostrar los encabezados de columna en el control ListView mediante la propiedad HideColumnHeaders. Puede agregar los encabezados tanto en tiempo de dise�o como en tiempo de ejecuci�n. En tiempo de dise�o, puede usar la ficha Encabezados de columna del cuadro de di�logo P�gina de 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 para la distribuci�n El control ListView forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control ListView en la aplicaci�n, deber� agregar el archivo MSCOMCTL.OCX al proyecto. Cuando distribuya la aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador de Visual Basic. Usar el control ListView El control ListView muestra datos en forma de objetos ListItem. Cada objeto ListItem puede tener un icono opcional asociado con la etiqueta del objeto. Este control es id�neo para representar subconjuntos de datos (como los miembros de una base de datos) u objetos discretos (como plantillas de documentos). Aplicaciones posibles Cuatro vistas disponibles El control ListView puede mostrar los datos en cuatro vistas diferentes (representadas en las siguientes figuras). La forma de programar el control depender� de las vistas que se permita ver (o seleccionar) al usuario. Cada una de estas vistas tiene una ventaja en particular con respecto a las dem�s. Algunas de ellas se indican en la tabla siguiente: El control ListView en vista de Iconos El control ListView en vista de Iconos peque�os El control ListView en vista de Lista El control ListView en vista de Informe Cambio de la vista con la propiedad View Para cambiar la vista, puede usar la propiedad View. En el c�digo siguiente se establece la propiedad View a vista de Informe (3), mediante la constante intr�nseca lvwReport: ' El nombre del control es "ListView1" ListView1.View = lvwReport Con la propiedad View puede permitir al usuario cambiar din�micamente la vista. En el evento Load del formulario, el control ComboBox se llena con las opciones de View: Private Sub Form_Load() ' Llena el control ComboBox. Su nombre ' es "cmbChooseView". With cmbChooseView . AddItem "Iconos" '0 . AddItem " Iconos peque�os " ' 1 . AddItem "Lista" ' 2 . AddItem "Informe" ' 3 End With End Sub En el evento Click del control ComboBox puede restablecerse la propiedad View del control, de esta forma: Private Sub cmbChooseView_Click() ' El control ListView se llama "lvwDB". lvwDB.View = cmbChooseView.ListIndex End Sub Dos controles ImageList para Iconos e Iconos peque�os Un objeto ListItem consta de una etiqueta (la propiedad Text) y una imagen opcional suministrada por un control ImageList. Sin embargo, el control ListView, a diferencia de otros controles, puede usar dos controles ImageList, que se establecen a trav�s de las propiedades Icons y SmallIcons. Usar un control ImageList o ambos depender� de la vista que vaya a usar, determinada por la propiedad View. En las vistas de Lista, Iconos peque�os e Informe, puede usar un icono peque�o para representar cada objeto ListItem. Un control ImageList (especificado por la propiedad SmallIcons) suministra las im�genes que se usar�n en cualquiera de estas tres vistas. Ya sea en tiempo de dise�o o en tiempo de ejecuci�n, establezca la propiedad SmallIcons al control ImageList que va a suministrar las im�genes. En tiempo de dise�o, utilice el cuadro de di�logo P�ginas de propiedades del control ListView para establecer el control ImageList para la propiedad SmallIcons. En tiempo de ejecuci�n, utilice el c�digo siguiente: ListView1.SmallIcons = imlSmallIcons Por el contrario, cuando est� en vista de Iconos, el control utiliza un conjunto de im�genes distinto, suministrado por un segundo control ImageList. Para establecer la propiedad Icons a este segundo control ImageList en tiempo de dise�o, utilice el cuadro de di�logo P�ginas de propiedades. En tiempo de ejecuci�n, emplee el c�digo siguiente: ListView1.Icons = imlIcons Nota El control ImageList determina el tama�o de los iconos empleados. Los tama�os disponibles son 16 x 16, 32 x 32, 48 x 48 y Personalizado. Para obtener m�s informaci�n acerca del control ImageList, vea "Control ImageList" Si piensa usar m�s de una vista y desea mostrar im�genes, debe establecer las propiedades SmallIcon e Icon de cada objeto ListItem. En el c�digo siguiente se declara primero una variable de objeto de tipo ListItem y despu�s se establece esa variable a un �nico objeto ListItem agregado a la colecci�n con el m�todo Add. A continuaci�n se establecen las propiedades SmallIcon e Icon con la referencia de la variable de objeto: Dim itmX as ListItem Set itmX = ListView1.ListItems.Add() ' Se supone que existe en el control ImageList una ' imagen llamada "LibroPeque�o" establecida en la ' propiedad SmallIcon. itmX.SmallIcon = "LibroPeque�o" ' Se supone que existe en el control ImageList una ' imagen llamada "LibroGrande" establecida en la ' propiedad Icon. Una vez establecida una imagen con las propiedades SmallIcon e Icon, la imagen correcta aparecer� autom�ticamente al cambiar de vista con la propiedad View. Los objetos ColumnHeader se muestran en la vista de Informe Una caracter�stica exclusiva de la vista de Informe consiste en los objetos ColumnHeader. El control ListView contiene una colecci�n de objetos ColumnHeader llamada ColumnHeaders. El objeto ColumnHeader El objeto ColumnHeader tiene una propiedad Text que muestra texto cuando el control se encuentra en vista de Informe. Tambi�n puede establecer el ancho de cada objeto ColumnHeader con la propiedad Width y con la propiedad Alignment, que establece el alineamiento del texto mostrado en el objeto ColumnHeader. En el ejemplo de c�digo siguiente se crean cuatro objetos ColumnHeader y se establecen sus propiedades Text y Width: Dim colX As ColumnHeader ' Declara la variable. Dim intX as Integer ' Variable contador. For intX = 1 to 4 Set colX = ListView1.ColumnHeaders.Add() colX.Text = "Campo " & intX colX.Width = ListView1.Width / 4 Next intX Establecimiento del texto de la columna con la colecci�n ListSubItems Observe que en todas las vistas, excepto en Informe, el objeto ListItem s�lo muestra una etiqueta: la propiedad Text. Sin embargo, en la vista de Informe, todos los objetos ListSubItem pueden tener varios elementos de texto. Por ejemplo, la "Hitchhiker's Guide to Visual Basic�" tiene asociados un autor ("Vaughn, William R."), un a�o (1996) y un n�mero de ISBN. Cada uno de estos elementos de texto es miembro de la colecci�n ListSubItems. Para crear un objeto ListSubItem, utilice el m�todo Add para la colecci�n ListSubItems. Por tanto, para establecer el autor, el a�o y el n�mero de ISBN de un objeto ListItem, el c�digo podr�a tener la apariencia siguiente: ' El control se llama lvwAuthor. lvwAuthor.ListItems(23).ListSubItems.Add , , _ "Hitchhiker's Guide to Visual Basic and SQL Server" lvwAuthor.ListItems(23).ListSubItems.Add , , _ "Vaughn, William R." lvwAuthor.ListItems(23).ListSubItems.Add , , "1996" lvwAuthor.ListItems(23).ListSubItems.Add , , " 1-55615-906-4" Nota La matriz ListItems utilizada en las versiones 4.0 y 5.0 de Visual Basic ha sido sustituida por la colecci�n ListSubItems. Los subelementos dependen de la presencia de los objetos ColumnHeader Tanto la presencia como el n�mero de objetos ListSubItem dependen de la presencia y el n�mero de objetos ColumnHeader. Es decir, no puede crear ning�n objeto ListSubItem si no hay presentes objetos ColumnHeader. Adem�s, el n�mero de objetos ColumnHeader determina el n�mero de objetos ListSubItem que puede establecer para el objeto ListItem, que ser�n siempre uno menos que el n�mero de objetos ColumnHeader. Esto se debe a que el primer objeto ColumnHeader siempre est� asociado a la propiedad Text del objeto ListItem, como se muestra a continuaci�n: El primer objeto ColumnHeader y los objetos SubItem Por tanto, si el n�mero de objetos ColumnHeader del ejemplo anterior es 4, el n�mero m�ximo de miembros de la colecci�n ListSubItems que puede establecer es 3. 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 encabezadoColumna As ColumnHeader) La sintaxis del evento ColumnClick consta de las siguientes partes: Comentarios Las propiedades Sorted, SortKey y SortOrder se utilizan normalmente en el c�digo para ordenar los objetos ListItem en la columna donde se ha hecho clic. 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 usar 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�S. El control Slider puede orientarse horizontal o verticalmente. Nota para la distribuci�n Para usar el control Slider en una aplicaci�n, debe agregar el archivo MSCOMCTL.OCX al proyecto. Al distribuir la aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador. Usar el control Slider El control Slider est� formado por una escala, definida por las propiedades Min y Max, y un "cursor" que el usuario final puede mover con el mouse (rat�n) o con las teclas de direcci�n. En tiempo de ejecuci�n se pueden restablecer din�micamente las propiedades Min y Max para reflejar un nuevo intervalo de valores. La propiedad Value devuelve la posici�n actual del cursor. Mediante eventos como MouseDown y MouseUp, es posible usar el control Slider para seleccionar gr�ficamente un intervalo de valores. Aplicaciones posibles Propiedades TickStyle y TickFrequency El control Slider consta de dos componentes: el cursor y las marcas, como se muestra a continuaci�n: La apariencia del control depende de la propiedad TickStyle. En resumen, las marcas pueden aparecer a lo largo del borde inferior del control, como en la ilustraci�n anterior (que es el estilo predeterminado), a lo largo del borde superior, en ambos lados o en ninguno de ellos. Adem�s de colocar las marcas, tambi�n puede programar cu�ntas marcas aparecer�n en el control si establece la propiedad TickFrequency. Esta propiedad, junto con Min y Max, determina el n�mero de marcas que aparecer�n en el control. Por ejemplo, si el valor de Min es 0, el de Max 100 y el de TickFrequency es 5, habr� una marca por cada cinco incrementos, para dar un total de 21 marcas. Si restablece las propiedades Min y Max en tiempo de ejecuci�n, el n�mero de marcas puede determinarse con el m�todo GetNumTicks, que devuelve el n�mero de marcas del control. Establecer las propiedades Min y Max en tiempo de dise�o o en tiempo de ejecuci�n Las propiedades Min y Max determinan los l�mites superior e inferior del control Slider y puede establecerlas tanto en tiempo de dise�o como en tiempo de ejecuci�n. En tiempo de dise�o, haga clic con el bot�n secundario del mouse en el control y, despu�s, haga clic en Propiedades para mostrar el cuadro de di�logo P�ginas de propiedades, que se muestra a continuaci�n: En tiempo de ejecuci�n puede restablecer los valores de Min y Max para adaptarlos a intervalos diferentes. Por ejemplo, si va a usar un control Slider para cambiar valores de una base de datos, puede usar el mismo control y enlazarlo a campos distintos seg�n la tabla que el usuario est� modificando. Propiedades SmallChange y LargeChange Las propiedades SmallChange y LargeChange determinan la forma en que el control Slider aumentar� o disminuir� cuando el usuario haga clic en �l. La propiedad SmallChange determina el n�mero de marcas que se desplazar� el cursor cuando el usuario presione las teclas de flecha a la izquierda o a la derecha. La propiedad LargeChange especifica el n�mero de marcas que se desplazar� el cursor cuando el usuario haga clic en el control o cuando presione las teclas RE P�G o AV P�G. Seleccionar intervalos Si el valor de la propiedad SelectRange es True, el control Slider cambiar� de apariencia, quedando de esta forma: Para seleccionar un intervalo de valores, debe usar las propiedades SelStart y SelLength. Encontrar� un ejemplo detallado de este m�todo en "Situaci�n 2 de Slider: seleccionar un intervalo de valores con el control Slider", en este mismo cap�tulo. Situaci�n 2 de Slider: seleccionar un intervalo de valores con el control Slider Otra caracter�stica del control Slider es su capacidad para seleccionar un intervalo de valores. En esta implementaci�n, cuando el usuario presiona la tecla may�s mientras hace clic en el control Slider, se produce el evento MouseDown. En el c�digo de este evento se establecen las propiedades SelectRange y SelStart. Cuando el usuario suelta el bot�n del mouse, se produce el evento MouseUp y en el c�digo correspondiente se establece la propiedad SelLength, a partir de la cual puede extraer un intervalo de valores. En el c�digo siguiente se utilizan estos objetos: Para seleccionar un intervalo de valores con el control Slider Establecer en True la propiedad SelectRange del control Slider Para permitir la selecci�n de un intervalo de valores es necesario establecer en True la propiedad SelectRange. Un lugar para hacerlo es el evento Load del objeto Form, como se muestra a continuaci�n: Private Sub Form_Load() sldSelect.SelectRange = True End Sub Como alternativa, puede establecer la propiedad en True en tiempo de dise�o; para ello, haga clic con el bot�n secundario del mouse en el control y haga luego clic en Propiedades para abrir el cuadro de di�logo P�ginas de propiedades. Evento MouseDown: comprobar si la tecla MAY�S est� presionada Para seleccionar un intervalo, el usuario debe mantener presionada la tecla may�s al mismo tiempo que mueve el cursor del control Slider. El evento MouseDown tiene un argumento shift que permite determinar si se est� presionando la tecla may�s. Puede usar la instrucci�n If para comprobarlo, como se indica a continuaci�n: Private Sub sldSelect_MouseDown _ (Button As Integer, Shift As Integer, _ x As Single, y As Single) If Shift = 1 Then ' Si el usuario est� presionando MAY�S, ' controle aqu� el evento. End If End Sub Evento MouseDown: establecer las propiedades SelStart y SelLength Si el usuario est� presionando la tecla may�s, el c�digo establecer� las propiedades SelStart y SelLength en los valores que corresponda. La propiedad SelStart especifica el punto donde comienza la selecci�n de valores. En el contexto actual, la propiedad SelStart se establecer� en el punto donde se encuentre el cursor (es decir, el valor de la propiedad Value del control Slider). La propiedad SelLength especifica el intervalo de valores para seleccionar, comenzando por el valor de SelStart. En el evento MouseDown se selecciona un nuevo intervalo, por lo que habr� que anular la selecci�n de cualquier intervalo anterior estableciendo la propiedad SelLength en 0. Esto se ilustra en el c�digo siguiente: sldSelect.SelStart = SldResize.Value ' Establece 0 en lugar del valor anterior ' de SelLength (si ten�a alguno). sldSelect.SelLength = 0 Evento MouseUp: establecer SelLength en la propiedad Value – SelStart Para seleccionar un intervalo, el usuario debe mantener presionada la tecla may�s mientras arrastra el mouse. El c�digo para establecer el nuevo valor se encuentra por tanto en el evento MouseUp, que se produce cuando el usuario suelta el cursor del control Slider. El c�digo siguiente establece la propiedad SelLength con una f�rmula sencilla: el valor del cursor menos el valor de la propiedad SelStart. sldSelect.Value – sldSelect.SelStart Sin embargo, es posible que el usuario suelte la tecla may�s mientras est� seleccionando un intervalo. En este caso no se producir�a ninguna selecci�n. Por tanto, el c�digo anterior s�lo se ejecutar� si la tecla may�s contin�a presionada. Al igual que ocurre con el evento MouseDown, una instrucci�n If puede encargarse de comprobar esta posibilidad: Private Sub sldSelect_MouseUp _ (Button As Integer, Shift As Integer, _ x As Single, y As Single) If Shift = 1 Then ' Si el usuario selecciona hacia atr�s desde ' un punto, se producir� un error. On Error Resume Next ' De lo contrario se establece SelLength ' mediante SelStart y el valor actual. sldSelect.SelLength = _ sldSelect.Value – sldSelect.SelStart Else ' Si el usuario suelta la tecla MAY�S, ' establece SelLength en 0 (para desactivar el ' intervalo) y termina. sldSelect.SelLength = 0 End If End Sub El c�digo completo A continuaci�n se incluye el c�digo completo: Private Sub Form_Load() sldSelect.SelectRange = True End Sub Private Sub sldSelect_MouseDown _ (Button As Integer, Shift As Integer, _ x As Single, y As Single) If Shift = 1 Then sldSelect.SelStart = sldSelect.Value ' Establece 0 en vez del valor anterior ' de SelLength (si ten�a alguno). sldSelect.SelLength = 0 End If End Sub Private Sub sldSelect_MouseUp _ (Button As Integer, Shift As Integer, _ x As Single, y As Single) If Shift = 1 Then ' Si el usuario selecciona hacia atr�s desde ' un punto, se producir� un error. On Error Resume Next ' De lo contrario, se establece SelLength ' mediante SelStart y el valor actual. sldSelect.SelLength = _ sldSelect.Value – sldSelect.SelStart Else ' Si el usuario suelta la tecla MAY�S, ' establece SelLength en 0 (para desactivar ' el intervalo) y termina. sldSelect.SelLength = 0 End If 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 usar mostrar u ocultar en vez de usar 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 para la distribuci�n El control TabStrip forma parte de un grupo de controles personalizados que se encuentran en el archivo MSCOMCTL.OCX. Para usar el control TabStrip en su aplicaci�n, debe agregar el archivo MSCOMCTL.OCX al proyecto. Cuando distribuya su aplicaci�n, instale el archivo MSCOMCTL.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, vea el Manual del programador. Usar el control TabStrip Un control TabStrip act�a como los separadores de un cuaderno o las etiquetas de un grupo de carpetas de archivador. Con el control TabStrip puede definir m�ltiples p�ginas en la misma �rea de una ventana o un cuadro de di�logo de una aplicaci�n. Aplicaciones posibles La colecci�n Tabs El control consta de uno o m�s objetos Tab de una colecci�n Tabs. En tiempo de dise�o y en tiempo de ejecuci�n puede modificar la apariencia de los objetos Tab si establece sus propiedades y adem�s, en tiempo de ejecuci�n, si invoca m�todos para agregar y quitar objetos Tab. Asociar el control ImageList al control TabStrip Para identificar la funci�n de una ficha, puede asignar una imagen del control ImageList al objeto Tab. Para ello, primero debe asociar un control ImageList al control TabStrip, lo que puede hacer en tiempo de dise�o o en tiempo de ejecuci�n. Para asociar un control ImageList a un control TabStrip en tiempo de dise�o Private Sub Form_Load() ' El control TabStrip se llama "tabRTF" y el ' control ImageList se llama "imlRTF". tabRTF.ImageList = imlRTF End Sub Crear fichas en tiempo de dise�o o en tiempo de ejecuci�n Puede crear objetos Tab tanto en tiempo de dise�o como en tiempo de ejecuci�n. Para crear objetos Tab en tiempo de dise�o, utilice el cuadro de di�logo P�ginas de propiedades. Para crear objetos Tab en tiempo de dise�o Figura 2.36 P�ginas de propiedades de TabStrip Crear objetos Tab en tiempo de ejecuci�n con el m�todo Add Para crear objetos Tab en tiempo de ejecuci�n, utilice el m�todo Add de los objetos Tab. Nota De forma predeterminada se crea un objeto Tab. Para crear una colecci�n de objetos Tab en tiempo de ejecuci�n El c�digo siguiente utiliza el evento Load del objeto Form para crear dos objetos Tab y luego establece sus propiedades Caption, Image y Key. Private Sub Form_Load() ' El control TabStrip se llama "tabData" ' Declara una variable y despu�s utiliza la ' instrucci�n Set con el m�todo Add para crear un ' nuevo objeto Tab, al tiempo que establece la ' variable de objeto en la nueva ficha. Utiliza la ' referencia para establecer las propiedades. Dim tabX As Tab ' Tab 1: Buscar texto. Set tabX = tabData.Tabs.Add() tabX.Key = "buscar" tabX.Caption = "Buscar" tabX.Image = "buscar" ' Se supone que existe la imagen. ' Tab 2: Dibujar objetos. Set tabX= tabData.Panels.Add() tabX.Key = "dibujar" tabX.Caption = "Dibujar" tabX.Image = "dibujar" ' Se supone que existe esta imagen. End Sub Sugerencia Usar el m�todo Add sin establecer la variable de objeto es m�s eficiente que establecer las propiedades con la variable de objeto. En este caso, el c�digo anterior se volver�a a escribir de este modo: tabData.Tabs.Add , "buscar", "Buscar", "buscar" tabData.Tabs.Add , "dibujar", "Dibujar", "dibujar" Usar el �rea de cliente para colocar controles contenedores El control TabStrip se suele usar para crear cuadros de di�logo con fichas. Cada p�gina del cuadro de di�logo consta de una ficha y un �rea de cliente, como se muestra en la figura siguiente: En tiempo de ejecuci�n, cuando el usuario hace clic en una ficha, debe programar la reconfiguraci�n del �rea de cliente con un conjunto distinto de controles contenedores (como se explica posteriormente en "Administrar fichas y controles contenedores"). En tiempo de dise�o, dibuje en el formulario un control contenedor, por ejemplo un control PictureBox o Frame. Si utiliza un control Frame, puede establecer su propiedad BorderStyle para que sea invisible en tiempo de ejecuci�n. Copie y pegue el mismo control para crear una matriz de controles; cree un control por cada objeto Tab que haya creado. En cada control contenedor, dibuje los controles que deban aparecer en una ficha. El formulario puede tener una apariencia similar al de la figura 2.37: Figura 2.37 TabStrip en tiempo de dise�o con dos controles PictureBox Despu�s de haber creados los controles contenedores, se requiere una t�cnica adicional para colocarlos en el �rea de cliente del control TabStrip: usar el m�todo Move con las propiedades ClientLeft, ClientTop, ClientWidth y ClientHeight del control TabStrip, como ilustra el c�digo siguiente: Private Sub Form_Load() ' El control TabStrip se llama "tabRTF". ' El control Frame se llama "fraTab". For i = 0 To fraTab.Count – 1 With fraTab(i) .Move tabRTF.ClientLeft, _ tabRTF.ClientTop, _ tabRTF.ClientWidth, _ tabRTF.ClientHeight End With Next i End Sub Administrar fichas y controles contenedores Un cuadro de di�logo con fichas contiene m�s de un objeto Tab. Como hemos visto, debe haber asociado un control Frame (o cualquier otro control contenedor) a cada objeto Tab. Para administrar eficazmente los diversos objetos Tab y los controles contenedores asociados, puede usar la estrategia siguiente: El c�digo para traer al frente el control contenedor correcto ser� entonces similar al siguiente: Private Sub tabRTF_Click() picRTF(tabRTF.SelectedItem.Index – 1).ZOrder 0 End Sub Sugerencia En tiempo de dise�o, puede establecer la propiedad Index de la matriz de controles de modo que sea una matriz basada en 1. Debido a que la colecci�n Tabs tambi�n empieza a contar por 1, el c�digo anterior quedar�a de la forma siguiente: picRTF(TabRTF.SelectedItem.Index).ZOrder 0 Para obtener m�s informaci�n Encontrar� un ejemplo de c�digo que implementa la estrategia expuesta aqu� en "Situaci�n de TabStrip: crear un cuadro de di�logo con fichas". Propiedad Style: botones o fichas La propiedad Style determina si el control TabStrip tiene apariencia de separadores de un cuaderno (Tabs), o de botones de comando (Buttons). A continuaci�n se indican las ventajas de cada opci�n: Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior Fichas en varias filas Otra caracter�stica del control TabStrip es la propiedad MultiRow. Cuando su valor es True, los objetos Tab aparecen en filas, como en la figura siguiente: Si el valor de la propiedad MultiRow es False, el mismo conjunto de fichas aparece en una �nica fila, con dos botones de desplazamiento en el extremo derecho: La propiedad TabWidthStyle determina la apariencia de cada fila y, si su valor es Fixed, puede usar las propiedades TabFixedHeight y TabFixedWidth para establecer el mismo alto y ancho para todas las fichas del control TabStrip. SSTab (Control) El control SSTab proporciona un grupo de fichas, cada una de las cuales act�a como contenedor de otros controles. En el control s�lo hay al mismo tiempo una ficha activa; esta ficha muestra los controles que contiene al tiempo que oculta los de las dem�s fichas. Sintaxis SSTab Comentarios El control SSTab se asemeja a los separadores de un cuaderno o a las etiquetas de un grupo de carpetas de un archivador. Con el control SSTab puede definir varias p�ginas para la misma �rea de una ventana o un cuadro de di�logo de una aplicaci�n. Con las propiedades de este control puede hacer lo siguiente: Para usar este control, primero debe decidir c�mo desea disponer los controles en las distintas fichas. Establezca las propiedades Tabs y TabsPerRow para crear las fichas y organizarlas por filas. A continuaci�n, seleccione cada ficha en tiempo de dise�o haciendo clic en ella. En cada ficha, dibuje los controles que desee que aparezcan cuando el usuario la seleccione. Establezca las propiedades Caption, Picture, TabHeight y TabMaxWidth a los valores necesarios para personalizar la parte superior de la ficha. En tiempo de ejecuci�n los usuarios podr�n desplazarse por las fichas si presionan Ctrl-Tab o utilizando las teclas aceleradoras definidas en el t�tulo de cada ficha. Tambi�n puede personalizar todo el control SSTab con las propiedades Style, ShowFocusRect, TabOrientation y WordWrap. Nota para la distribuci�n El control SSTab se encuentra en el archivo TABCTL32.OCX. Para usar el control SSTab en una aplicaci�n, debe agregar el archivo .OCX del control al proyecto. Al distribuir la aplicaci�n, instale el archivo .OCX correspondiente en el directorio System o System32 de Microsoft Windows del usuario. Para obtener m�s informaci�n acerca de la forma de agregar un control adicional a un proyecto, vea el Manual del programador de Visual Basic. Usar el control Tabbed Dialog El control Microsoft Tabbed Dialog proporciona un m�todo sencillo para presentar varios cuadros de di�logo o pantallas de informaci�n en un �nico formulario utilizando la misma interfaz que aparece en numerosas aplicaciones comerciales para Microsoft Windows. El control Tabbed Dialog ofrece un grupo de fichas, cada una de las cuales act�a como un contenedor para otros controles. S�lo hay una ficha activa al mismo tiempo, que muestra los controles que contiene y oculta los de las fichas restantes. Figura 2.30 El control Tabbed Dialog Aplicaciones posibles Establecer las fichas y las filas de fichas Antes de establecer el n�mero de fichas que desea agregar al control Tabbed Dialog, debe decidir qu� contendr� el cuadro de di�logo y c�mo se organizar� ese contenido. Aunque el n�mero de fichas se puede establecer tanto en tiempo de dise�o como en tiempo de ejecuci�n, muy probablemente encontrar� m�s r�pido y sencillo hacerlo en tiempo de dise�o. Puede establecer las propiedades en tiempo de dise�o en el cuadro de di�logo P�ginas de propiedades que aparece al hacer clic en el control con el bot�n secundario del mouse (rat�n) y seleccionar Propiedades. Figura 2.31 Establecer las propiedades en tiempo de dise�o Para definir el n�mero de fichas y filas del cuadro de di�logo, establezca las propiedades Tab y TabsPerRow. Por ejemplo, si desea crear un cuadro de di�logo que contenga doce fichas, establezca en �12� la opci�n N�mero de fichas y en �4� la opci�n TabsPerRow. De este modo crear� un cuadro de di�logo con tres filas de cuatro fichas cada una. De forma predeterminada, el n�mero de fichas es 3. Cuando se ha establecido el n�mero de fichas y de filas, cada ficha se indexa para poder seleccionarlas individualmente. Por ejemplo, puede seleccionar fichas individuales en la opci�n Ficha actual para cambiar la propiedad TabCaption. La indexaci�n de las fichas comienza por cero (0). En tiempo de ejecuci�n, el usuario puede desplazarse por las fichas al hacer clic en ellas, presionar Ctrl-Tab o emplear m�todos mnemot�cnicos definidos en el t�tulo de cada ficha. Por ejemplo, si desea crear una ficha llamada Imprimir y permitir al usuario el acceso a ella con la combinaci�n de teclas Alt-I, establezca la propiedad TabCaption como �&Imprimir�. Agregar controles a las fichas Cada ficha del control Tabbed Dialog es en esencia un contenedor de otros controles. Al crear un cuadro de di�logo con fichas, se suelen agrupar en cada una los controles que realizan funciones similares, como imprimir un documento o establecer opciones de presentaci�n de la aplicaci�n. Cuando haya determinado el n�mero de fichas necesario en el cuadro de di�logo, agregue los controles que precise para realizar tales funciones. Para agregar controles a p�ginas de fichas individuales en tiempo de dise�o, seleccione primero la ficha haciendo clic en ella y, luego, dibuje los controles en la p�gina de la ficha. Nota No debe agregar controles a p�ginas de fichas individuales con el m�todo del doble clic. Si hace doble clic en un control en el cuadro de herramientas, el control se agregar� a todas las fichas del control Tabbed Dialog. Para obtener m�s informaci�n Vea "Contenedores de controles" en el tema "Usar el control contenedor OLE" del Manual del programador. Activar y desactivar fichas en tiempo de ejecuci�n Seg�n la funcionalidad de la aplicaci�n o de un cuadro de di�logo espec�fico que ha creado, puede que desee desactivar algunas fichas en situaciones determinadas. Para ello puede usar la propiedad TabEnabled, que permite activar y desactivar fichas individuales. Cuando una ficha est� desactivada, el texto que contiene aparece atenuado y el usuario no puede seleccionarla. Por ejemplo: SSTab1.TabEnabled(2) = False La propiedad TabEnabled especifica el n�mero de ficha y, despu�s, la desactiva estableciendo su valor en False. Nota Puede usar la propiedad Enabled para activar o desactivar todo el control Tabbed Dialog. Propiedades de personalizaci�n de las fichas Las propiedades del control Tabbed Dialog permiten personalizar la apariencia y funcionalidad de los cuadros de di�logo con fichas. Puede establecer estas propiedades en tiempo de dise�o en las P�ginas de propiedades del control o en tiempo de ejecuci�n en el c�digo. La propiedad Style La propiedad Style ofrece dos opciones para establecer el estilo del cuadro de di�logo con fichas. De forma predeterminada, la propiedad Style est� establecida en la apariencia de un cuadro de di�logo con fichas de Microsoft Office. Las fichas que aparecen cuando est� seleccionada esta opci�n tienen una apariencia similar a las de Microsoft Office para las aplicaciones para Microsoft Windows 3.1. De forma predeterminada, el texto del t�tulo de la ficha seleccionada aparece en negrita. Figura 2.32 Estilo de los cuadros de di�logo con fichas de Microsoft Office La segunda opci�n disponible es el estilo de las P�ginas de propiedades de Windows 95. Este estilo sigue los est�ndares de la interfaz de usuario desarrollados para Windows 95. El texto del t�tulo de la ficha seleccionada, a diferencia del estilo Microsoft Office, no aparece en negrita. Figura 2.33 Estilo de los cuadros de di�logo con fichas para las P�ginas de propiedades de Windows 95 Para establecer esta propiedad en tiempo de ejecuci�n, utilice las constantes de Visual Basic ssStyleTabbedDialog o ssStylePropertyPage con el fin de especificar uno u otro estilo. La propiedad TabOrientation La propiedad TabOrientation permite ubicar las fichas del cuadro de di�logo en cualquiera de los cuatro lados (arriba, abajo, izquierda o derecha). Por ejemplo: Figura 2.34 Orientaci�n de las fichas hacia la izquierda Cuando establezca para las fichas una orientaci�n distinta de arriba o abajo, tambi�n debe cambiar el estilo de fuente de las mismas. Si establece la orientaci�n a la izquierda o a la derecha, el texto queda vertical y s�lo pueden aparecer las fuentes TrueType® en sentido vertical en el control Tabbed Dialog. Cambie el estilo de las fuentes con la propiedad Font o seleccionando la ficha Fuente en las p�ginas de propiedades del control. La fuente Arial es un sustituto habitual de la fuente Sans Serif predeterminada de Windows. Puede establecer esta propiedad en tiempo de ejecuci�n mediante las siguientes constantes de Visual Basic: ssTabOrientationTop, ssTabOrientationBottom, ssTabOrientationLeft y ssTabOrientationRight. La propiedad Picture Puede agregar im�genes (mapas de bits, iconos o metarchivos) a cualquiera o a todas las fichas del control Tabbed Dialog. Por ejemplo: Figura 2.35 Agregar una imagen a una ficha En tiempo de dise�o, para establecer la propiedad Picture de una ficha, haga clic en ella y establ�zcala en la ventana Propiedades. En tiempo de ejecuci�n, puede establecer la propiedad Picture con la funci�n LoadPicture o con la propiedad Picture de otro control o de un objeto Form. Nota Al establecer la propiedad Picture en tiempo de dise�o, el gr�fico se guarda y se carga con el objeto Form que contiene el control Tabbed Dialog. Si crea un archivo ejecutable, el archivo contendr� la imagen. Los gr�ficos que carga en tiempo de ejecuci�n no se guardan con la aplicaci�n. Al establecer la propiedad Picture, afecta al valor de la propiedad TabPicture de la ficha actual y se muestra la imagen en la ficha activa. Ajustar el alto y el ancho de las fichas Seg�n el tama�o de la imagen, puede que sea necesario modificar el alto de la ficha para adaptarlo. Puede usar la propiedad TabMaxHeight para ajustar el alto de las fichas. Esta propiedad establece el alto de todas las fichas del control. No es posible ajustarlas individualmente. Si est� utilizando un cuadro de di�logo con fichas al estilo de Microsoft Office, es posible que tambi�n necesite establecer la propiedad TabMaxWidth para que tanto la imagen como el texto quepan en la ficha. Si utiliza el estilo de Windows 95, la propiedad TabMaxWidth se pasa por alto y el ancho de cada ficha se adapta al de la imagen y el texto de su t�tulo. Establecer la propiedad WordWrap Cuando utilice el estilo de Microsoft Office en un cuadro de di�logo con fichas, puede especificar el ancho exacto de las mismas con la propiedad TabMaxWidth. Una vez hecho esto, puede dejar que los t�tulos de las fichas contin�en en la l�nea siguiente, si es necesario, estableciendo la propiedad WordWrap en True. Aunque el texto del t�tulo pase a la l�nea siguiente, seguir� teniendo la limitaci�n del alto y el ancho de las fichas. Es decir, sigue siendo posible que el texto se recorte o quede oculto si el alto y el ancho son insuficientes. En el estilo de los cuadros de di�logo con fichas de Windows 95, el ancho se basa en la longitud del texto del t�tulo y se pasa por alto el valor de las propiedades TabMaxWidth y WordWrap. Completar el cuadro de di�logo con fichas personalizado Una vez agregados todos los controles deseados a cada una de las fichas, puede terminar de dise�ar el cuadro de di�logo con fichas personalizado de forma que parezca un modelo est�ndar. Por ejemplo, si desea que aparezca como un cuadro de di�logo est�ndar P�ginas de propiedades de Windows 95, siga estos pasos: DateTimePicker (Control) Utilice el control DateTimePicker para proporcionar un campo de fecha con formato que facilite la selecci�n de la fecha. Adem�s, los usuarios pueden seleccionar una fecha a partir de una interfaz de calendario desplegable similar a la de un control MonthView. Sintaxis DTPicker Comentarios El control DateTimePicker tiene dos modos de funcionamiento: Es posible personalizar la apariencia del calendario desplegable del control. Existen varios atributos de color como CalendarBackColor, CalendarForeColor, CalendarTitleBackColor, CalendarTitleForeColor y CalendarTrailingForeColor que le permiten crear combinaciones de colores exclusivos. Se puede usar el control con el teclado o con el mouse (rat�n) indistintamente. El calendario desplegable posee dos botones que permiten mostrar los meses siguientes y anteriores. Nota El control DateTimePicker forma parte de un grupo de controles ActiveX incluidos dentro del archivo MSCOMCT2.OCX. Debe agregar el archivo MSCOMCT2.OCX al proyecto para poder usar el control DateTimePicker en su aplicaci�n. Cuando distribuya su aplicaci�n, instale el archivo MSCOMCT2.OCX en el directorio System o System32 de Microsoft Windows. Para obtener m�s informaci�n acerca de c�mo agregar un control ActiveX a un proyecto, vea "Agregar controles a un proyecto" en el Manual del programador. Usar el control DateTimePicker El control DateTimePicker muestra informaci�n de fecha, de hora o ambas a la vez y act�a como una interfaz en la que los usuarios pueden modificar la informaci�n de fecha y de hora. La vista del control consiste en campos definidos mediante la cadena de formato del control. Cuando el control DateTimePicker est� desplegado, aparece un calendario MonthView. El control tiene dos modos de funcionamiento diferentes: Puede usar el control para mostrar la fecha en los varios formatos preestablecidos, entre los cuales est�n: fecha corta (14/11/97), fecha larga (Viernes, 14 de noviembre de 1997) y hora (7:00:00 PM). Tambi�n puede posible especificar formatos personalizados mediante el uso de cadenas de formato o bien puede crear sus propios formatos mediante campos de devoluci�n de llamadas. Control DateTimePicker en modo Calendario desplegable Control DateTimePicker en modo formato de hora Posibles aplicaciones Usar los dos modos del control El control DateTimePicker funciona como un control de edici�n con m�scara para permitir escribir valores de fecha y hora. Cada parte de la fecha o de la hora se considera un campo separado dentro de la parte de edici�n del control. A medida que el usuario hace clic en cada campo, �ste queda resaltado y es posible usar las teclas de direcci�n arriba y abajo para aumentar o disminuir el valor del campo. El usuario puede tambi�n escribir valores directamente dentro del control, cuando es posible hacerlo. La propiedad UpDown determina en qu� modo se encuentra el control. Cuando UpDown tiene el valor False, el control est� en modo Calendario desplegable (el valor predeterminado). Cuando la propiedad UpDown tiene el valor True, el control DateTimePicker est� en modo formato de hora. En el modo formato de hora, dos flechas de desplazamiento aparecen a la derecha del control. El usuario puede hacer clic en estas flechas con el mouse par aumentar o reducir el valor del campo seleccionado actual. En el modo Calendario desplegable, el control despliega un calendario en el que el usuario puede seleccionar fechas. El calendario desplegable posee la mayor�a de las caracter�sticas del control MonthView. Vea "Usar el control MonthView" para obtener m�s informaci�n acerca de c�mo establecer y aplicar formato a la parte de calendario desplegable del control DateTimePicker. Establecer y devolver fechas La propiedad Value determina la fecha seleccionada actual. Es posible establecer el valor del control antes de que aparezca esta propiedad (por ejemplo, en tiempo de dise�o o en el evento Form_Load) con el fin de determinar qu� fecha estar� inicialmente seleccionada en el control: DTPicker1.Value = "31/10/97" De forma predeterminada, el valor de la propiedad Value del control es el de la fecha actual. Si cambia su propiedad Value desde el c�digo, el control DateTimePicker se actualiza autom�ticamente para reflejar el nuevo valor. La propiedad Value devuelve un valor de fecha sin formato o bien un valor Null. El control DateTimePicker posee numerosas propiedades que devuelven informaci�n espec�fica acerca de la fecha mostrada: Utilice el evento Change para determinar cu�ndo el usuario cambi� el valor de la fecha en el control. Usar el control Checkbox para no seleccionar ninguna fecha La propiedad CheckBox permite especificar si el control debe devolver una fecha. De forma predeterminada, CheckBox tiene el valor False y el control siempre devuelve una fecha. Para permitir al usuario no especificar fecha, establezca la propiedad CheckBox a True (por ejemplo, cuando utiliza el control DateTimePicker para escribir la fecha de finalizaci�n de un proyecto, el cual no ha sido todav�a completado). Cuando CheckBox tiene el valor True, una peque�a casilla de verificaci�n aparece en la parte de edici�n del control a la izquierda de la fecha y hora. Si la casilla no ha sido activada, la propiedad Value devuelve un valor Null. Si el usuario activa esta casilla, el control devuelve la fecha mostrada a trav�s de la propiedad Value. Trabajar con formatos de fecha y hora El control DateTimePicker aporta una flexibilidad impresionante a la hora de aplicar formatos a la presentaci�n de fechas y de horas en el control. Es posible usar todas las cadenas de formato est�ndar de Visual Basic o bien crear formatos personalizados mediante campos de devoluci�n de llamadas. La propiedad Format determina c�mo el control aplicar� un formato al valor de fecha sin formato. Puede elegir una de las opciones de formato predefinidas o bien usar las caracter�sticas de formato personalizadas del control. La propiedad CustomFormat define la expresi�n de formato utilizada para mostrar el contenido del control. Especifique una cadena de formato que indique c�mo el control aplicar� formato a la fecha en la salida. El control DateTimePickers admite las cadenas de formatos siguientes: Es posible agregar texto literal a la cadena de formato. Si desea usar el control para mostrar la fecha actual con el formato "Hoy estamos a: 05:30:31 viernes 14 nov., 1997". Podr�a usar un formato de cadena como el siguiente "'Hoy estamos a: 'hh':'m':'s ddddMMMdd', 'yyy". El texto literal debe encerrarse entre comillas sencillas ('). Crear formatos personalizados con campos de devoluci�n de llamadas Uno de los campos con formato personalizado antes descrito es un campo de devoluci�n de llamada. Un campo de devoluci�n de llamada permite personalizar la salida de ciertas partes de una cadena de formato. Para declarar un campo de devoluci�n de llamada, incluya uno o m�s caracteres 'X' (c�digo ASCII 88) en cualquier lugar dentro de la cadena de formato. Los campos de devoluci�n de llamada se muestran en orden, de izquierda a derecha. Cuando se usa un formato con uno o m�s campos de devoluci�n de llamada para mostrar una nueva fecha, se generan eventos Format y FormatSize para cada uno de estos campos de devoluci�n de llamada. Utilice el evento Format para especificar una cadena de respuesta personalizada, y el evento FormatSize para determinar el espacio requerido para mostrar la cadena. Este comportamiento proporciona un control completo sobre la presentaci�n de un campo de devoluci�n de llamada. Cada secuencia de caracteres X tiene un significado �nico. Por ejemplo, X podr�a significar "�" (correspondiente a "1�", "2�", etc.) y "XX" corresponder�a a "primero", "segundo", etc. Dichos campos no aplican formato al texto del usuario, sino que introducen el formato de fecha dentro de un formato de presentaci�n. Supongamos que, por ejemplo, desea mostrar el mes tanto en espa�ol como en ingl�s, mediante un formato como el siguiente: July (Julio) 29 Podr�a crear un formato de cadena parecido al siguiente: MMMM XXXX d Al procesar los eventos Format y FormatSize puede determinar a qu� tipo de campo de devoluci�n de llamada corresponde el evento, comparando la cadena de formato de entrada con "XXXX". Si la cadena del campo coincide, puede generar una cadena "(Julio)" y calcular su longitud. El n�mero de caracteres X s�lo sirve para determinar cu�l es el texto que se debe suministrar para un campo de devoluci�n de llamada. Durante el tratamiento del evento FormatSize, es posible calcular el tama�o del texto mediante programa. El evento Format se llama cada vez que el control necesita llenar el campo de devoluci�n de llamada, por ejemplo cuando el usuario selecciona una fecha diferente de la del calendario desplegable. Sin embargo, el evento FormatSize s�lo se llama cuando se produce un cambio en la cadena de formato (por ejemplo, si cambia la secuencia "XX" por "XXXX"). Esto significa que cuando calcula el tama�o del campo de devoluci�n de llamada en el evento FormatSize es necesario tener en cuenta cualquier valor posible que el evento Format pueda devolver. Por ejemplo, podr�a usar el procedimiento siguiente para implementar el campo de devoluci�n de llamada de la cadena de formato mencionada antes. Para crear campos de devoluci�n individualizados, repita el car�cter "X". Por tanto, la cadena de formato "XX dddd MMM dd', 'yyy XXX" contiene dos campos de devoluci�n de llamadas. Puede usar instrucciones Select o If para procesar m�ltiples cadenas de devoluci�n en los eventos Format y FormatSize. Los campos de devoluci�n de llamada se consideran como campos v�lidos, por lo que conviene que la aplicaci�n est� preparada para controlar el evento CallbackKeyDown. Puede usar este evento para procesar pulsaciones de teclas individuales en el campo de devoluci�n de llamada y para realizar una validaci�n por teclado o facilitar un escritura automatizada. Por ejemplo, si el usuario se prepara para escribir un mes y escribe la letra "D", podr�a usar el evento CallbackKeyDown para llenar el campo de devoluci�n de llamada con la palabra "Diciembre". Aplicar un formato al control Calendar Existen muchas opciones para aplicar formato a la parte desplegable del control. Todas las propiedades del control DateTimePicker que van precedidas por la palabra "Calendar" conciernen al formato de la lista desplegable del calendario. Estas propiedades corresponden a las propiedades del control MonthView. Por ejemplo, la propiedad CalendarTitleTextColor del control DateTimePicker es similar a la propiedad TitleTextColor del control MonthView. Vea el tema Usar el control MonthView para obtener m�s informaci�n relacionada con la aplicaci�n de formatos al calendario. Interfaz de teclado Es posible controlar el control Calendar con el teclado. La siguiente tabla describe las distintas acciones que puede realizar con el control en tiempo de ejecuci�n. La tabla siguiente describe las distintas acciones que puede realizar cuando se muestra el calendario desplegable. Nota para la distribuci�n El control DateTimePicker forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCT2.OCX. Debe agregar el archivo MSCOMCT2.OCX al proyecto para poder usar el control DateTimePicekr en la aplicaci�n. Al distribuir la aplicaci�n, instale el archivo MSCOMCT2.OCX en el directorio System o System32 de Microsoft Windows. Para obtener m�s informaci�n acerca de c�mo agregar un control ActiveX a un proyecto, vea el Manual del programador.> MonthView (Control) Utilice el control MonthView para crear aplicaciones que permitan a los usuarios mostrar y establecer informaci�n de fecha mediante una interfaz parecida a un calendario. Sintaxis MonthView Comentarios La propiedad Valor del control MonthView devuelve la fecha seleccionada actualmente. Para permitir a los usuarios del programa seleccionar un intervalo continuo de fechas, asigne a la propiedad MultiSelect el valor True y especifique con MaxSelProperty el n�mero de d�as que podr�n seleccionar. Las propiedades SelStart y SelEnd devuelven las flechas del principio y el final de una selecci�n. Existen muchas formas de personalizar la apariencia de un control MonthView. Existen varios atributos de colores, como MonthBackColor, TitleBackColor, TitleForeColor y TrailingForeColor, que le permiten crear combinaciones de colores exclusivas para el control. Establezca las propiedades MonthRows y MonthColumns para mostrar m�s de un mes a la vez (hasta 12 meses) en un control MonthView. El n�mero total de propiedades MonthRows y MonthColumns debe ser inferior o igual a 12. Nota El control MonthView forma parte de un grupo de controles ActiveX incluidos dentro del archivo MSCOMCT2.OCX. Es necesario agregar el archivo MSCOMCT2.OCX al proyecto para poder usar el control MonthView en su aplicaci�n. Al distribuir su aplicaci�n, instale el archivo MSCOMCT2.OCX.ocx en el directorio System o System32 de Microsoft Windows. Para obtener m�s informaci�n acerca de c�mo agregar un control ActiveX a un proyecto, vea "Agregar controles a un proyecto" en el Manual del programador. Uso del control MonthView El control MonthView ofrece a los usuarios la posibilidad de ver y establecer informaci�n de fecha mediante una interfaz parecida a un calendario. Los usuarios pueden seleccionar una fecha �nica o un intervalo de fechas. Es posible explorar el control con el teclado o con el mouse indistintamente. Los botones en la parte superior del control sirven para desplazarse y mostrar los meses siguientes y anteriores. Adem�s, el control tiene capacidad para mostrar hasta 12 meses a la vez. Esto puede ser �til cuando se desea proporcionar a los usuarios la posibilidad de ver informaci�n relativa a una fecha de calendario determinada. Control MonthView Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior Posibles aplicaciones Establecer y devolver fechas La propiedad Value determina la fecha actualmente seleccionada en el control. Puede establecer la propiedad Value del control antes de mostrarlo (por ejemplo, en el evento Load del formulario) con el fin de determinar qu� fecha debe estar inicialmente seleccionada en el control: MonthView1.Value = "10/31/97" De forma predeterminada, el valor de la propiedad Value del control corresponde a la fecha actual, la cual est� seleccionada cuando el control aparece por primera vez. Si cambia su propiedad Value mediante c�digo, el control MonthView se actualiza autom�ticamente para reflejar el nuevo valor. Es posible usar ciertos eventos del control tambi�n para devolver valores de fecha. Por ejemplo, el evento DateClick se genera cada vez que el usuario hace clic en una fecha en el control. El evento DateClick devuelve un valor DateClicked que devuelve la fecha en la que el usuario hizo clic. De forma similar, el evento DateDblClick devuelve un valor DateDblClicked que indica en qu� fecha se hizo doble clic y se provoc� el evento. Al usar estos eventos, conviene hacer referencia al valor devuelto por los eventos en lugar de la propiedad Value del control, ya que �sta no se actualiza hasta despu�s de que el evento ocurra. La propiedad Value devuelve un valor de fecha al que puede aplicar cualquier formato que desee. El control MonthView tambi�n posee numerosas propiedades que devuelven informaci�n de fecha espec�fica. La propiedad Month devuelve el valor entero (1-12) del mes que contiene la fecha seleccionada actual. La propiedad Day devuelve el numero del d�a (1-31) seleccionado actual y la propiedad DayOfWeek devuelve un valor que indica el d�a de la semana en que cae la fecha seleccionada (los valores corresponden a los de las constantes vbDayOfWeek). La propiedad Year devuelve el a�o que contiene la fecha seleccionada actual como un valor entero. Por fin, existe una propiedad Week que devolver� el n�mero de la semana en que cae la fecha seleccionada. Es posible establecer (as� como leer) estas propiedades en tiempo de ejecuci�n con efectos variables sobre la fecha actual seleccionada. Por ejemplo, al cambiar el valor de la propiedad DayOfWeek se seleccionar� la fecha que corresponde al mismo d�a de semana, dentro de la semana especificada. Esto cambiar� el valor de la propiedad Day pero en funci�n de c�mo cae la semana, esto puede modificar a su vez el valor de la propiedad Month. Al cambiar el valor de la propiedad Year, esto seleccionar� la fecha correspondiente al a�o especificado y podr� afectar el valor de DayOfWeek. Conviene tomar precauciones especiales al cambiar el valor de la propiedad Week. Al establecer otra semana como semana actual, no se cambiar� el valor de la propiedad DayOfWeek, pero afectar� al de la propiedad Day y posiblemente los valores de las propiedades Week, Month y hasta Year. Por ejemplo, si el usuario seleccion� "Viernes" y el valor de la propiedad Week est� establecido a 52 en un a�o que termina en "Mi�rcoles", el valor de la propiedad Week se convertir� en 1 y los valores Month y Year tambi�n cambiar�n. Los valores 1 y 52 de la semana se solapan normalmente. Selecci�n de un intervalo de fechas Utilice el control MonthView para mostrar o permitir al usuario seleccionar un intervalo contiguo de fechas. Con el fin de extender la selecci�n sobre m�s de una fecha, la propiedad MultiSelect debe tener el valor True. Puede controlar el n�mero m�ximo de d�as que pueden seleccionarse al cambiar el valor de la propiedad MaxSelCount. De forma predeterminada, la selecci�n m�xima permitida es de siete d�as. Las propiedades SelStart y SelEnd determinan los d�as seleccionados. Puede examinar los valores de estas propiedades para determinar el intervalo que el usuario seleccion�. Si s�lo una fecha est� seleccionada, los dos valores ser�n iguales. Tambi�n puede establecer los valores de estas propiedades desde su c�digo, lo que permite seleccionar un intervalo de fechas dentro del control. Al establecer las propiedades SelStart y SelEnd mediante c�digo, debe respetar las reglas siguientes: Por ejemplo, para seleccionar la semana que precede el A�o nuevo mediante c�digo, podr�a usar el siguiente: MonthView1.Value = "31/31/97" MonthView1.MaxSelCount = 7 MonthView1.SelStart = "25/12/97" MonthView1.SelEnd = "31/12/97" Aplicar formato a la apariencia del Control El control MonthView permite personalizar su apariencia de muchas formas. Existen varios atributos de colores como MonthBackColor, TitleBackColor, TitleForeColor y TrailingForeColor que permiten crear patrones de color exclusivos para el control. Por ejemplo, TrailingForeColor determina el color de las fechas que preceden y siguen a uno o varios meses mostrados. El valor de la fuente correspondiente al control determina el ancho y alto del control. Al usar fuentes grandes, el control puede aumentar de tama�o para alojar el aumento de tama�o de la fuente. Inversamente, puede establecer una fuente de tama�o m�s peque�a para reducir el control. El tama�o de fuente se establece a trav�s de la propiedad Font. Mostrar m�s de un mes El control MonthView puede mostrar de uno a doce meses a la vez. Es posible especificar cu�ntos meses mostrar� el control y c�mo se organizar�n dentro de �l. Esto se consigue mediante las propiedades MonthRows y MonthColumns. Por ejemplo, si establece MonthRows a 2 y MonthColumns a 3, conseguir�a mostrar un control MonthView con seis meses a la vez. Al hacer clic en los botones de fecha en la parte superior del control, �ste se desplazar�a hasta los seis meses siguientes o anteriores. Los meses individuales est�n separados por una barra separadora. El tama�o de la separaci�n depende del tama�o del control y de la configuraci�n de pantalla, pero puede recuperar las dimensiones utilizadas mediante las propiedades SeparatorHeight y SeparatorWidth. Tambi�n puede recuperar el tama�o de un calendario sencillo mediante las propiedades CalendarWidth y CalendarHeight. El uso conjunto de estas propiedades sirve para determinar c�mo el tama�o del control cambiar� al agregar otra fila u otra columna as� como para ajustar de acuerdo con �l el tama�o y la ubicaci�n de otros controles. Otros valores de formato Puede determinar qu� d�a de la semana aparecer� como el primero al cambiar el valor de la propiedad StartOfWeek. Puede elegir mostrar los n�meros de semana al establecer la propiedad ShowWeekNumbers a True. Los n�meros de semana aparecen en una columna separada a la izquierda del primer d�a de la semana. Es posible habilitar o deshabilitar la presentaci�n de la fecha actual al pie del control mediante la propiedad ShowToday. Formato de d�as espec�ficos Cualquier n�mero de d�a en el control MonthView puede tambi�n tener establecida su propia fuente en negrita. Es posible aplicar esta capacidad para forzar gr�ficamente la atenci�n sobre ciertas fechas (por ejemplo, festivos, vacaciones, etc.) o s�lo para distinguir �stas de las fechas ordinarias. Es posible aplicar negrita a m�s de una fecha a la vez. La informaci�n de negrita no se conserva cuando se produce un desplazamiento entre meses, pero este comportamiento puede simularse mediante el evento GetDayBold. El ejemplo siguiente pone todos los s�bados en negrita, aunque se produzca un desplazamiento de la vista hacia otros meses: Private Sub MonthView1_GetDayBold(ByVal StartDate As Date, ByVal Count As Integer, State() As Boolean) Dim i As Integer i = vbSunday While i < Count State(i – MonthView1.StartOfWeek) = True i = i + 7 Wend End Sub Interfaz de teclado Es posible controlar el control MonthView con el teclado. La tabla a continuaci�n describe las distintas acciones que puede realizar con el control en tiempo de ejecuci�n. Para ver el gr�fico seleccione la opci�n ¨Descargar trabajo¨ del men� superior Exploraci�n en el control MonthView Adem�s de los dos botones en la parte superior del control, el control MonthView dispone de otros m�todos para establecer el mes, o los meses actualmente mostrados. Puede mostrar un mes determinado de cualquier a�o determinado. Para seleccionar un mes en particular El control mostrar� el mes seleccionado dentro del a�o actual. Para ir directamente a un a�o en particular El control mostrar� el mes actual correspondiente al a�o especificado. Nota para la distribuci�n El control UpDown forma parte de un grupo de controles ActiveX incluidos dentro del archivo COMCT232.ocx. Debe agregar el archivo COMCT232.ocx al proyecto para poder usar el control en su aplicaci�n. Al distribuir su aplicaci�n, instale el archivo COMCT232.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, vea el Manual del programador. UpDown (Control) El control UpDown tiene dos botones con flechas en los que el usuario puede hacer clic para incrementar o disminuir un valor, por ejemplo una posici�n de desplazamiento o el valor de un control asociado, denominado control auxiliar. Sintaxis UpDown Comentarios Para el usuario, el control UpDown y su control auxiliar parecen a menudo un control �nico. El control auxiliar puede ser cualquiera de los que pueden vincularse al control UpDown a trav�s de la propiedad BuddyControl y normalmente muestra datos, como un control TextBox o CommandButton. Nota Los controles ligeros sin ventana, como el control intr�nseco de etiqueta, no pueden usarse como un control auxiliar. Si establece la propiedad AutoBuddy, el control UpDown tomar� autom�ticamente como control auxiliar el control anterior del orden de tabulaci�n. Si no hay ning�n control previo en el orden de tabulaci�n, tomar� el siguiente. Otra forma de establecer el control auxiliar es con la propiedad BuddyControl. En tiempo de dise�o, cuando se establece la propiedad AutoBuddy o la propiedad BuddyControl, puede asociar autom�ticamente el control auxiliar al control UpDown si ajusta su tama�o y lo coloca junto a �l. Puede colocar el control UpDown a la izquierda o a la derecha del control auxiliar mediante la propiedad Alignment. Las propiedades Increment, Min, Max y Wrap especifican la forma en que cambia la propiedad Value del control UpDown cuando el usuario hace clic en los botones de dicho control. Por ejemplo, si los valores son m�ltiplos de 10 y van de 20 a 80, puede establecer las propiedades Increment, Min y Max a 10, 20 y 80, respectivamente. La propiedad Wrap permite que la propiedad Value siga increment�ndose despu�s de superar el valor de la propiedad Max y que comience de nuevo por el valor de Min o viceversa. Un control UpDown sin control auxiliar se comporta en cierto modo como una barra de desplazamiento simplificada. Nota El control UpDown debe usarse en lugar del control SpinButton de Visual Basic 4.0. Nota para la distribuci�n El control UpDown forma parte de un grupo de controles ActiveX que se encuentran en el archivo MSCOMCT2.OCX. Para usarlo en una aplicaci�n, debe agregar el archivo MSCOMCT2.OCX al proyecto. Al distribuir la aplicaci�n, instale el archivo MSCOMCT2.OCX en el directorio SYSTEM de Microsoft Windows del usuario. Si desea m�s informaci�n acerca de c�mo agregar un control personalizado a un proyecto, vea el Manual del programador. Usar el control UpDown Un control UpDown consta de una pareja de botones con flechas en los que el usuario puede hacer clic para aumentar o disminuir un valor, como una posici�n de desplazamiento o un n�mero que aparezca en un control relacionado. El control relacionado puede ser de cualquier tipo, siempre y cuando tenga alguna propiedad que el control UpDown pueda actualizar. A menudo, al usuario le parecer� que el control UpDown y su control relacionado son un �nico control. Puede especificar que un control UpDown se coloque autom�ticamente junto al control relacionado y que establezca �ste en su valor actual. Por ejemplo, puede usar un control UpDown con un control TextBox para solicitar al usuario una entrada num�rica. En la ilustraci�n siguiente se muestra un control UpDown con un control TextBox como su control relacionado, una combinaci�n que en ocasiones se denomina control Spinner. Aplicaciones posibles Funcionamiento b�sico Para poder usar un control UpDown, primero debe establecer la propiedad BuddyControl en otro control y la propiedad BuddyProperty en una propiedad desplazable de ese otro control. Las propiedades Min y Max determinan los l�mites del control y la propiedad Wrap determina si el valor se ajustar� cuando el usuario final sobrepase los valores indicados en Min o Max. La propiedad Increment especifica la cantidad en que la propiedad Value variar� al hacer clic en la flecha hacia arriba o hacia abajo. Usar la propiedad AutoBuddy para establecer autom�ticamente el control relacionado En tiempo de dise�o, si establece la propiedad AutoBuddy en True, el control UpDown adquiere autom�ticamente los valores num�ricos del control anterior en el orden de tabulaci�n. Para establecer autom�ticamente un control relacionado
Figura 2.43 Ficha Relaciones de las p�ginas de propiedades del control UpDown
Para ver el gr�fico seleccione la opci�n "Descargar" del men� superior
Determinar el comportamiento de desplazamiento El control UpDown incluye varios eventos y propiedades que permiten determinar c�mo se desplaza el control. Las propiedades Increment y Wrap La propiedad Wrap determina el comportamiento del control cuando el usuario final mantiene presionado el bot�n de flecha hacia arriba o el de flecha hacia abajo. Si tiene el valor False, al alcanzarse el valor de Max o Min el control deja de desplazarse y se detiene en el valor de Max o Min. Si tiene el valor True, el control devolver� el valor de Min o de Max, y continuar� aumentando (o disminuyendo) en los valores determinados por estas dos propiedades. La propiedad Increment especifica la cantidad en que variar� la propiedad Value cuando se haga clic en la flecha hacia arriba o en la flecha hacia abajo. Este valor no puede ser negativo. Un uso posible de esta propiedad es alternar un campo o un control OptionButton entre True (-1) y False (0), como en el c�digo siguiente: Private Sub Form_Load() ' El control UpDown se denomina "updToggle". ' El control OptionButton se denomina "optToggle". With updToggle .BuddyControl = optToggle .Min = -1 .Max = 0 .Increment = 1 .Wrap = True End With End Sub ' Cambia la propiedad Value del control OptionButton ' con la propiedad Value del control UpDown. Private Sub updToggle_Change() optToggle.Value = updToggle.Value End Sub Los eventos UpClick y DownClick Con los eventos UpClick y DownClick puede controlar exactamente c�mo se desplaza el control UpDown por un intervalo de valores. Por ejemplo, si desea permitir que el usuario final se desplace r�pidamente hacia arriba por los valores, pero m�s despacio cuando vaya hacia abajo, puede restablecer la propiedad Increment con valores distintos, como en el c�digo siguiente: Private Sub updScroll_UpClick() ' El control UpDown se llama "updScroll". updScroll.Increment = 5 End Sub Private Sub updScroll_DownClick() ' Cuando el usuario hace clic en la flecha hacia ' abajo, el incremento cambia a 1 para una mayor ' resoluci�n. updScroll.Increment = 1 End Sub Enciclopedia de Inform�tica y Computaci�n Biblioteca de Consulta Microsoft Encarta 2004 Enciclopedia de Computaci�n y Tecnolog�a
Francisco Javier Ayala Martinez
Edad: 18 A�os