Escribir correo al autor de ésta página|

 

Inicio | Temas | Source Code | Download

TEMAS - Los controles en Visual Basic

Introducción a los controles en Visual Basic

En Visual Basic existen tres categorías generales de controles: Controles intrínsecos, Controles ActiveX, Objetos insertables

1. Controles intrínsecos

Estos controles se encuentran dentro del archivo ejecutable de Visual Basic. Los controles intrínsecos están siempre incluidos en el cuadro de herramientas, no como los controles Activex, que se pueden quitar o agregar al cuadro de herramientas. A continuación una lista de controles intrínsecos.

Nombre de control Nombre de clase Descripción
     
Casilla de verificación CheckBox Presenta una opción de tipoVerdadero o Falso.
Cuadro combinado ComboBox Cambina un cuadro de texto y un cuadro de lista.
Botón de comando CommandButton Ejecuta un comando o una acción cuando el usuario hace clic en él.
Datos Data Permite conectar una base de datos existente y presentar información en ella en los formularios.
Cuadro de lista de directorios DirListBox Presenta directorios y rutas de acceso.
Cuadro de lista de archivos FileListBox Presenta una lista de archivos.
Cuadro de lista de unidades DriveListBox Presenta una lista de unidades de disco validas.
Marco Frame Proporciona un contenedor visual y funcional para los controles.
Barras de desplazamiento horizontal y vertical HScrollBar y VScrollBar Permite que un usuario agregue barras de desplazamiento a controles que no las tienen de forma automática.
Imagen Image Presenta mapas de bits, iconos o metarchivos de Windows, archivos JPEG o GIF, y actúa como un botón de comando cuando se hace clic en él.
Etiqueta Label Presenta texto con el cual el usuario no puede interactuar ni modificar.
Línea Line Agrega un segmento de línea recta a un formulario.
Cuadro de lista ListBox Presenta una lista de elementos entre los que el usuario puede elegir.
Contenedor OLE OLE Incrusta datos en una aplicación de Visual Basic.
Botón de opción OptionButton El control OptionButton, como parte de un grupo de opciones con otros botones de opción. Presenta varias opciones entre las ue el usuario sólo puede elegir una.
Cuadro de imágen Picturebox Presenta mapas de bits, íconos o metarchivos de Windows y otros tipos de archivos graficos compatibles. También presenta texto o actúa como contenedor visual para otros controles..
Forma Shape Agrega un rectángulo, un cuadrado, una elipse o un circulo a un formulario, marco o cuadro de imagen.
Cuadro de texto TextBox Proporciona una área para escribir o presentar texto.
Cronómetro Timer Ejecuta eventos periódicos a intervalos de tiempo específicado.

 

2. Controles ActiveX

Son aquellos controles que existen como archivos independientes con extensión nombre de archivo .ocx. Entre éstos se incluyen los controles disponibles en todas las ediciones de Visual Basic (controles cuadrícula, cuadro combinado y lista enlazados a datos y varios más) y los que sólo están disponibles en la Edición Profesional y la Edición Empresarial (como Listview, Toolbar, Animation y Tabbed Dialog). A estos también se suman los controles Activex de otros fabricantes.

Nombre de control Nombre de clase Descripción
Control de datos ADO ADODC Crea una conexión a una base de datos de datos mediane ADO. Asignable a la propiedad DataSource de otros controles, como el control DataGrid.
Dialogo común CommonDialog Proporciona un conjunto de cuadros de diálogo estándar para operaciones como abrir y guardar archivos, establecer opciones de impresión y seleccionar colores y fuentes.
Cuadro combinado enlazado a datos DataGrid Proporciona las mayorías de las opciones del control ComboBox estándar, así como mayor capacidad de acceso a datos.
Cuadrícula Apex enlazada a datos DataGrid Control con apariencia de una hoja de cálculo vinculado aun origén de datos como un control de datos ADO. Es posible la lectura y la modificación del recordset.
Cuadro de lista enlazado a datos. DataList Proporciona la mayoría de de las características del control ListBox estándar, asi como mayor capacidad de acceso a datos.
FlexGrid de Microsoft MSFlexGrid Control con apariencia de hoja de cálculo de sólo lectura que se puede vincular al diseñador de entorno de datos para mostrar recordset jerárquicos

 

3. Objetos insertables

Como un objeto Worksheet de Microsoft Excel que contienen la lista de los empleados de su empresa, o un objeto Calendar de Microsoft Project que contiene la información del calendario de un proyecto. Puesto que estos objetos se pueden agregar al cuadro de herramientas, se les considera controles.

Convenciones de nomenclatura de los controles

Cuando crea un objeto (un formulario o un control) por primera vez, Visual Basic establece su propiedad Name a un valor predeterminado. Por ejemplo, todos los botones de comando tienen la propiedad Name establecida inicialmente a Commandn, donde n es 1, 2, 3 y así sucesivamente. Visual Basci llama al primer botón de comando de un formulario Command1, al segundo Command2 y al tercero Command3.

Puede mantener los nombres predeterminados; sin embargo, cuando tiene varios controles del mismo tipo, es más lógico modificar las propiedades Name para que sean algo más descriptivas. Como puede ser dificil distinguir entre el botón Command1 de miForm y el botón Command1 de SubForm, la convención de nomenclatura es recomendable, especialmente cuando una aplicación se compone de varios módulos de formulario, módulos estándar y módulos de clase.

Puede usar un prefijo para describir la clase, seguido de un nombre descriptivo del control. El uso de convención de nombres hace que el código sea más autodescriptivo y agrupa objetos similares alfabéticamente en el cuadro de lista Objeto. Por ejemplo:

chkSoloLectura

Los nombres de los formularios y los controles:

  • Deben empezar por una letra

  • Sólo deben contener letras, números y el carácter de subrayado (_); no se permiten signos de puntuación ni espacios en blanco.

  • No pueden tener una longitud mayor de 40 caracteres.

Para más información vea: Programar con estilo

Valores de los controles

Todos los controles tienen una propiedad que se puede usar para almacenar u obtener valores mediante una referencia al control, sin mencionar el nombre de la propiedad.
Este se denomina valor del control y normalmente es la propiedad más importante o la más frecuentemente utilizada del control.

Cuando quiera hacer una referencia a la propiedad de un control que es el valor de dicho control, puede hacerlo sin especificar el nombre de la propiedad. Por ejemplo, esta línea de código establece la propiedad Text de un cuadro de texto.

Text1 = "Este texto se asigna a la propiedad Text de Text1"

En este ejemplo, la propiedad Caption de Label1 se establece a la propiedad FileName de File1 cuando el usuario hace clic en un archivo del cuadro de lista de archivos:

Private File1_Click()
   Label1 = File1
End Sub

En la tabla siguiente se enumeran las propiedades consideradas como valor de control.

Control Valor
CheckBox Value
ComboBox Text
CommandButton Value
CommonDialog Action
Data Caption
DataCombo Text
DataGrid Text
DataList Text
DirListBox Path
DriveListBox Drive
FileListBox FileName
FlexGrid Text
Frame Caption
HScrollBar Value
Image Picture
Label Caption
Line Visible
ListBox Text
OptionButton Value
PictureBox Picture
Shape Shape
TextBox Text
Timer Enabled
VScrollBar Value

 

Matrices de controles

Una matriz de controles en un grupo de controles que comparten el mismo nombre y el mismo tipo. También comparten los mismos procedimientos de evento. Las matrices de controles tienen al menos un elemento y pueden crecer hasta contener tantos elementos como permitan los recursos y la memoria del sistema; su tamaño dependen también de la memoria y de los recursos de Windows requeridos por cada control. El índice máximo que puede usar en una matriz de controles es 32 767. Los elementos de una misma matriz de controles tienen sus propio valor de propiedades. Entre los mas usados están los controles de menú y las agrupaciones de botones de opción.

¿Por qué usar matrices de controles?

Al agregar controles mediante matrices de controles se utilizan menos recursos que si simplemente se agregan al formulario múltiples controles del mismo tipo en tiempo de diseño. Las matrices de controles también son útiles cuando quiere que varios controles compartan código. Por ejemplo, si crea tres botones de opción como una matriz de controles, se ejecuta el mismo código independiente del botón en el que haga clic.

Si desea crear una instancia nueva de un control en tiempo de ejecución, dicho control tiene que ser miembro de una matriz de controles. En una matriz, los nuevos elementos heredan los procedimientos de evento comunes de toda la matriz.
Mediante el mecanismo de las matrices de controles, cada nuevo control hereda los procedimientos de eventos comunes escritos para la matriz. Por ejemplo, si el formulario tiene varios cuadros de texto que reciben valores de fechas, puede definir una matriz de controles para que todos los cuadros de texto compartan el mismo código de validación.

Cuando crea una matriz de controles los valores de la propiedad Index de dicho control se agrega al momento de agregar los elementos de la matriz. Es la propiedad Index la que distingue cada elemento de otro dentro de la matriz de controles.

Cuando un elementos de la matriz reconoce un evento, Visual Basic llama a un procedimiento de evento común y pasa el argumento (el valor de la propiedad Index) para identificar qué control reconoce realmente el evento. Por ejemplo:

Private Opciones_Click (Index as Integer)
     Select Case
     Case 0
          ... instrucciones para el primer elemento
     Case 1
          ... instrucciones para el segundo elemento
     End Select
End Sub

Agregar, eliminar un elemento de una matriz de controles en tiempo de ejecución

Puede agregar o quitar controles de una matriz de controles en tiempo de ejecución mediante las instrucciones Load y Unload. sin embargo, el control que va a agregar tiene que ser un elemento de una matriz de controles existente. Debe crear un control en tiempo de diseño con la propiedad Index establecida en la mayor parte de los casos a 0.
Después, en tiempo de ejecución, utilice la siguiente sintaxis:

Load objeto(indice%)
Unload objeto(indice%)

Donde:

objeto: Nombre del control que va a agregar o eliminar de la matriz de controles.
indice%: El valor de índice del control dentro de la matriz.

Puede utilizar Unload para quitar cualquier control creado con Load. Sin embargo, no puede usar Unload para quitar controles creados en tiempo de diseño, independientemente de si forman parte o no de una matriz de controles.

Ejemplo:

En este ejemplo se permite al usuario agregar controles que cambian el color de fondo de la ventana. Agrege un formulario y despúes dibuje dos botones de opciones y dos botones de comando, como se ilustra en la tabla siguiente:

Objeto Propiedad Valor
Form1 Caption Ejemplo de matriz de controles
Option1 Name optButton
  Index 0
Option2 Name optButton
  Index 1
Primer botón de comando Name cmdAgregar
  Caption &Agregar
Segundo botón de comando Name cmdEliminar
  Caption &Eliminar
     

 

Ahora copie el siguiente código y ejecute el proyecto para ver como funciona:

Option Explicit
Dim MaxID As Integer

Private Sub cmdAgregar_Click()
     MaxID = optButton.Count - 1   'Establece el total de botones existentes
     If MaxID > 3 Then Exit Sub       'Sólo se permiten 5 botones
     MaxID = MaxID + 1
   
     Load optButton(MaxID)            'Crea un nuevo control   
     optButton(0).SetFocus               'Enfoque al primer botón
   
     'Colocar el nuevo control debajo del último control
     optButton(MaxID).Left = optButton(MaxID - 1).Left
     optButton(MaxID).Top = optButton(MaxID - 1).Top + _
     optButton(MaxID - 1).Height + 100
     optButton(MaxID).Visible = True  'Mostrar el nuevo control
   
     'Texto en el nuevo botón
     optButton(MaxID).Caption = "Opción " & MaxID + 1
End Sub

Private Sub cmdEliminar_Click()
     If MaxID <= 1 Then Exit Sub    'No podrá eliminar los dos primeros botones
   
     Unload optButton(MaxID)        'Elimina el último botón
   
     MaxID = MaxID - 1                   'Establece el recuento de botones
   
     optButton(0).SetFocus               'Reestablece la selección del botón
End Sub
Private Sub optButton_Click(Index As Integer)
    Form1.BackColor = QBColor(Index + 1)
End Sub


© Más allá de Visual Basic. Reservados todos los derechos.
Diseñado y escrito por Carlos A. Coronado. Optimizado para 800 x 600.