Controles estándar de Visual Basic.


El Formulario (Form).

El formulario es el elemento indispensable a la hora de construir la parte gráfica de un programa. Sobre éste se colocarán los controles y será la ventana de la aplicación. El formulario tiene sus eventos, propiedades y métodos propios.
Para hacer referencia al formulario dentro de su ventana de código se puede utilizar la instrucción Me.

Eventos

Los eventos más notables del formulario son nueve: Initialize, Load, Activate, Paint, Resize, Deactivate, Unload, QueryUnload y Terminate.
Los primeros cuatro eventos se suceden cuando se visualiza un formulario por primera vez; el evento Initialize sucede al iniciarse un formulario e inicializa las variables a nivel de módulo, el evento Load ocurre al cargarse el formulario y se puede aquí cargar las propiedades de los controles y variables del formulario; el evento Activate ocurre al convertirse el formulario en la ventana activa, este evento hace visible en la pantalla el formulario y puede utilizarse por ejemplo para dar el foco a un control; el evento Paint ocurre al dibujarse los métodos gráficos del formulario y puede utilizarse para los métodos gráficos que se verán más adelante.
El evento Resize ocurre al cambiar el tamaño de un formulario, ya sea con los botones maximizar/restaurar o manualmente.
Cuando se termina la ejecución de un programa ocurren ciertos eventos, los cuales son la contrapartida de los eventos que lo inicializaron. El evento Deactivate es el evento opuesto al evento Activate y ocurre cuando un formulario deja de ser la ventana activa; el evento Unload es la contrapartida del evento Load y ocurre cuando se descarga el formulario; el evento QueryUnload ocurre antes que el evento Unload y permite confirmar si definitivamente se ocultará el formulario o se cancelará esa orden, tiene los parámetros (Cancel as Integer, Unloadme as Integer); el evento Terminate es la contrapartida del evento Initialize y elimina completamente el formulario de la memoria.

Propiedades

También tiene propiedades únicas. La propiedad WindowState permite definir si un formulario se iniciará maximizado, minimizado o normal. Las propiedades MinButton y MaxButton especifican si tendrán habilitados los botones de minimizar y maximizar/restaurar habilitados. La propiedad Appearance especifica cómo se comportará el formulario: si podrá cambiarse manualmente su tamaño, por ejemplo.

Métodos

El formulario tiene métodos propios y métodos gráficos que comparte con otro control: las Cajas de Dibujo (Picturebox); estos métodos se verán en otro capítulo.
Método PrintForm: imprime el formulario, todo excepto la barra de título y los métodos gráficos llamados desde el evento Paint. Es sencillo de utilizar pero no utiliza toda la resolución de la impresora.
Método Hide: oculta el formulario y equivale a hacer su propiedad visible=False, sin embargo, el formulario sólo desaparece de la pantalla, no de la memoria.
Método Show: muestra un formulario. Si se ocultó con el método Hide, solamente lo activa (ocurren los eventos Activate y Paint); si no estaba cargado ocurren los eventos Initialize, Load, Activate y Paint. Tiene un argumento (vbModal o simplemente 1) el cual no permite acceder al formulario desde el que se lo llamó (si es que así fuese) hasta que se cierre dicho formulario.
Método Unload: genera el evento Unload del formulario. Lleva como argumento el nombre del formulario que se desea descargar.

Formularios MDI

Aplicaciones como Microsoft Word, Microsoft Excel, CorelDraw, etc., pueden tener varios documentos abiertos a la vez en la misma aplicación. A esto se le llama Formularios MDI (Multiple Document Interface).
Para comenzar un formulario modal, ir al menú Proyecto y agregar un formulario MDI (MDI Form); éste debe ser el formulario inicial. Para volverlo el formulario inicial ir al menú Proyecto-Propiedades del proyecto y elegir el en formulario inicial dicho formulario. Este será el "Padre". Luego se podrán agregar otros formularios simples y cambiar su propiedad MDIChild a True; de esta forma éstos se convertirán en formularios "Hijos" del primero.
Comparándolo con el ejemplo de Microsoft Word, la ventana Microsoft Word es el formulario Padre y cada documento serán los formularios Hijos.
Una de las ventajas de trabajar con este tipo de formularios es que todos los formularios hijos pueden compartir la misma barra de herramientas, de estado, etc. que estarán en el formulario Padre.

Etiquetas (Label).

Las etiquetas son controles en los cuales sólo se puede editar texto a través de código, o sea, a través de instrucciones y sentencias. Su propiedad más importante es la propiedad Caption que es el texto que habrá en la etiqueta. También al respecto serán útiles sus propiedades Font y Forecolor. La propiedad Border permite dar o no un efecto de bajorrelieve a la etiqueta. La propiedad Autosize permite ajustar el tamaño de la etiqueta al texto contenido en ella, y la propiedad WordWrap permite el texto en múltiples líneas.
Admiten eventos pero no es común que se utilicen.

Cajas de Texto (Textbox).

Son los controles más habituales para ingresar datos. Su propiedad más importante es la propiedad Text, la cual es el texto que aparece en la caja y, por ende, las propiedades Font y Forecolor. La propiedad Multiline permite ingresar texto en más de una línea. La propiedad Alignment tiene tres valores para texto alineado a la izquierda (0), a la derecha (1) y centrado (2). La propiedad Locked determina si se bloquea la modificación del texto de la caja de texto. Otras propiedades son Password para que no se vean los caracteres que se digitan, sino solamente uno que se especifica en la propiedad; SelStart sirve para posicionar el cursor en algún lugar del texto, SelText SelLength indica el número de caracteres seleccionados y MaxLength se utiliza para determinar el número máximo de caracteres que puede contener.
El método más importante es el método SetFocus.

Botones de Comando (CommandButton).

La utilidad de estos controles es la de ejecutar acciones y su evento por excelencia es el evento Click, aunque también soporta otros eventos KeyPress, LostFocus, etc.
Su propiedad más importante es la propiedad Caption la cual establecerá el título que mostrará el botón. Si esta propiedad se añade el carácter & delante de otro, éste otro aparecerá subrayado y mediante la combinación de la tecla Alt + caracter se accederá al evento click del botón. Esto es válido para la propiedad Caption de varios controles.
Si se establece su propiedad Style a Graphical y su propiedad Picture se le adjudica un ícono, el botón aparecerá con ese ícono. Otras propiedades importantes de este control son sus propiedades Enabled y Visible.

Marcos (Frame).

El marco es un recuadro con un título en su parte superior izquierda (el cual se cambia cambiando su propiedad Caption) y sirve para agrupar controles. Su mayor utilidad radica en agrupar botones de opción, lo cual permite que sólo uno esté activo a la vez.

Botones de Opción (Option).

Los botones de opción permiten decidir acciones, eligiendo entre opciones. Para que esto ocurra deben estar colocados dentro de un Marco. Se selecciona el marco y luego se colocan los botones de opción dentro.
Sus propiedades más importantes son la propiedad Value que tiene dos valores (True o False) que indica si el botón estará activo o no; dentro de un marco solamente un botón podrá tener su propieda Value=True. La propiedad Caption especifica el texto que contendrá el control.

Casillas de Verificación (CheckBox).

Estos controles también sirven para decidir acciones, pero no se excluyen entre ellos. Al igual que los botones de opción sus propiedades más importantes son las propiedades Value y Caption. En el caso de la propiedad Value, esta podrá tener los valores Checked (tendrá un signo de OK en su interior) y Unchecked (la casilla estará vacía).
Su evento más importante es el evento Click.

Barras de Desplazamiento (Scroll Bar).

Las Barras de Desplazamiento son horizontales o verticales, pero ambas son iguales en eventos, propiedades y métodos.
Los eventos por excelencia de estos controles son los eventos Change y Scroll. Estos eventos ocurren al mover una barra de desplazamiento (cambiar su propiedad Value), pero la diferencia está en que el evento Change ocurre cuando se terminó de arrastrar la barra y el evento Scroll ocurre mientras se arrastra la barra.
Tres propiedades importantes de este control son las propiedades Min, Max y Value. Las propiedades Min y Max son los valores mínimos y máximos que podrá tener la barra y la propiedad Value es el valor que tenga la barra en un momento dado y el que se cambia al mover la barra. La propiedad Value no podrá ser entonces, mayor que la propiedad Max ni menor que la propiedad Min.

Cuadros de Lista y Cuadros Combinados (ListBox y ComboBox).

Los cuadros de lista son controles donde se pueden listar elementos, ya sean numéricos, alfanuméricos o alfabéticos. Los cuadros combinados combinan las cualidades de los cuadros de lista y las cajas de texto, sin embargo tienen las propiedades y métodos de los cuadros de lista y se estudian en forma conjunta.
Los eventos más usuales son los eventos Click, DblClick y Change.
Los elementos de una lista o un cuadro combinado tienen un índice o sea, un número que los identifica (al igual que los arrays) dentro de la lista y se comienzan a numerar por 0 para el primer elemento, 1 para el segundo, etc...
Las siguientes son las propiedades de estos controles:

  • ListIndex: es el índice del elemento actualmente seleccionado en el control. Si no hay ningún elemento activo el valor de Listindex es -1.
  • List: esta propiedad devuelve el texto contenido en uno de los registros del control. Lleva por argumento el parámetro Indice el cual es el índice del elemento a recuperar.
  • ListCount: esta propiedad de solo lectura indica la cantidad de elementos que contiene un control.
  • MultiSelect: esta propiedad de los cuadros de lista especifica si se pueden seleccionar más de un elemento a la vez (True) o no (False).
  • Sorted: ordena alfabéticamente los elementos dentro del control.
  • Selected(Indice): indica si un elemento está seleccionado o no. El argumento Indice es el índice del elemento. También pueden seleccionarse elementos a través de código mediante esta propiedad.
  • DropCombo: para los cuadros combinados esta propiedad indica la forma en que se presentará el cuadro combinado.
Los métodos de estos controles son:
  • Additem(Elemento,Indice): este método permite ingresar elementos al control. El argumento Elemento es obligatorio y es el elemento que se ingresará y el argumento Indice es opcional y especifica el índice que tendrá el elemento. Si no se coloca este argumento, el elementos se colocará al final de la lista.
  • Removeitem(Indice): este método permite quitar elementos del control. Lleva el argumento Indice que es el índice del elemento a quitar.
  • Clear: elimina todos los elementos de un control.

Control Timer (Timer).

Este control sirve para realizar en forma periódica determinadas tareas. Admite un único evento: el evento Timer el cual se produce cuando la propiedad Interval es mayor que 0 y cuando la propiedad Enabled está a True. Este control no tiene una interfaz gráfica por lo tanto al ejecutar la aplicación que lo utilice no visualizará el control, solamente se verán sus efectos controlados por código.
Sus propiedades más importantes son Enabled e Interval. La propiedad Enabled activa o desactiva el evento Timer; asimismo la propiedad Interval=0 desactiva el evento Timer. La propiedad Interval es el intervalo en milisegundos en que ocurrirá el evento Timer una y otra vez.

Drives (Drive).

Este control es uno de los controles estándar para la gestión de archivos.
Es un cuadro combinado con las unidades de disco existentes como elementos. El evento más sobresaliente de este control es el evento Change y su propiedad, la propiedad Drive; ya que con este evento y esta propiedad se puede relacionar el control con los otros dos controles de ficheros.

Lista de Directorios (DirList).

Este control muestra los directorios de un disco y, haciendo doble clic en uno de ellos, se muestran los subdirectorios, etc. Su evento más importante es el evento Change y su propiedad, la propiedad Path. Con esto se relaciona este control con los demás controles de fichero. La propiedad Path es una cadena de texto con la ruta a un directorio (por ejemplo C:\Windows\Media).

Lista de Archivos (FileList).

Este control es un cuadro de lista que muestra los archivos que hay en un directorio.
Para este control, los eventos más importantes serán los eventos Click y DblClick. Mediante el código correspondiente en estos eventos se podrían abrir archivos, ejecutar programas, etc. La propiedad Path es una cadena de texto que es la ruta del directorio que contiene los archivos mostrados; a través de la propiedad Pattern se puede especificar qué tipos de archivo se mostrarán en este control. Si la propiedad Pattern es *.* (por defecto) se mostrarán todos los archivos, si se le da por valor *.doc, se mostrarán solamente los archivos con extensión doc; si tiene por valor *.doc;*.txt se mostrarán sólo los archivos con extensión txt y doc.

Líneas (Line).

Este control es meramente decorativo y no tiene eventos ni métodos. Las propiedades X1, Y1, X2 e Y2 son las coordenadas de sus extremos, las que pueden cambiarse a través de código. La propiedad BorderWidth permite definir el grosor de la línea.

Formas (Shape).

Al igual que las líneas, las formas no tienen ni eventos ni métodos, pero tienen más propiedades que las líneas.
La propiedad Shape permite definir qué figura geométrica tendrá (círculo, rectángulo, rectángulo ovalado, elipse, etc.). La propiedad BackColor define el color de fondo de la forma, BackStyle tiene dos valores: Opaque y Transparent. Si la propiedad está en Transparent no se verá el color de fondo. La propiedad FillStyle permite determinar el relleno de la figura (con líneas diagonales, cuadriculado, etc.) y FillColor determina el color de dichas líneas de relleno. BorderStyle determina el tipo de línea que conformará el borde y BorderColor determinará el color del borde.

DataControl (Data).

Este control Data permite tener un acceso sencillo a bases de datos. Pueden ser bases de datos de Access (*.mdb) o dBase (*.dbf), Paradox (*.db), etc. a través de un ISAM instalable.
Visual Basic tiene una herramienta para crear bases de datos de cualquiera de los tipos ya mencionados (y más), llamada VisData.
Este tema se tratará más adelante.

Ejemplo

Crea un nuevo proyecto estándar. Este proyecto tendrá 3 formularios:

Control Propiedad Valor
Form Name frmPrin
" " Caption Inicio
Commandbutton Name cmdFtime
" " Caption Control &Timer
Commandbutton Name cmdFfich
" " Caption &Ficheros
Commandbutton Name cmdFcont
" " Caption &Controles
Commandbutton Name cmdExit
" " Caption &Salir
Label Name lblFech
" " Autosize True
" " Caption

Escribe el siguiente código en la ventana de código del formulario:

Private Sub cmdFtime_Click()
frmTime.Show 1
End Sub

Private Sub cmdFfich_Click()
frmFich.Show 1
End Sub

Private Sub cmdFcont_Click()
frmContr.Show 1
End Sub

Private Sub cmdExit_Click()
End
End Sub

Private Sub Form_Load()
lblFech.Caption=Format(Date,"Long Date") &" - "& Time
End Sub

Control Propiedad Valor
Form Name frmTime
" " Caption Control Timer
Shape Name shpCont
" " Height 500
" " Width 3000
" " Left 80
" " Top 80
Shape Name shpMovil
" " Shape Circle
" " Height 420
" " Width 420
" " Top 120
" " Left 90
Timer Name tmrMover
" " Enabled False
" " Interval 2
Scroll Bar Name hsbInter
" " Min 0
" " Max 100
" " Value 2
Commandbutton Name cmdMover
" " Caption Comenzar

Escribe el siguiente código en este formulario:

Option Explicit
Dim
direccion as Boolean

Private Sub hsbInter_Change()
tmrMover.Interval=hsbInter.Value
End Sub

Private Sub cmdMover_Click()
If cmdMover.Caption="Comenzar" Then
tmrMover.Enabled=True:cmdMover.Caption="Detener"
Else:tmrMover.Enabled=False:cmdMover.Caption="Comenzar"
End If
End Sub

Private Sub tmrMover_Timer()
Select Case direccion
Case Is=False
While
shpMovil.Left<2570
shpMovil.Left=shpMovil.Left+1
Wend
direccion=True
Case Is
=True
While
shpMovil.Left>90
shpMovil.Left=shpMovil.Left-1
Wend
direccion=False
End Select
End Sub

Control Propiedad Valor
Form Name frmFich
" " Caption Ficheros
Image Name imgFoto
Drive Name drvDisco
DirList Name dirCarp
FileList Name filArch
" " Pattern *.bmp;*.jpg;*.gif
Label Name lblNomb
" " Caption
Label Name lblTipo
" " Caption
" " Autosize True

Escribe el siguiente código en el formulario:

Private Sub drvDisco_Change()
dirCarp.Path=drvDisco.Drive
End Sub

Private Sub dirCarp_Change()
filArch.Path=dirCarp.Path
End Sub

Private Sub filArch_Click()
Dim nomb as String, longit as Byte
nomb=filArch.List(filArch.ListIndex)
longit=Len(nomb)-4
lblNomb.Caption=Left(nomb,longit)
Select Case Lcase(Right(nomb,3))
Case "bmp"
lblTipo.Caption="Mapa de Bits"
Case "jpg"
lblTipo.Caption="Imagen JPEG"
Case "gif"
lblTipo.Caption="Imagen GIF"
End Select
imgFoto.Picture=LoadPicture(filArch.Path &"\"& nomb)
End Sub

Control Propiedad Valor
Form Name frmCont
" " Caption Controles
TextBox Name txtEscr
" " Text
" " Multiline True
Label Name lblFormat
" " Caption
" " WordWrap True
Frame Name fraColor
" " Caption Colores
Option Name optColor
" " Caption Negro, Blanco. Azul, Rojo, Verde, Amarillo
" 2 Index 0 a 5
CheckBox Name chkBold
" " Caption Negrita
CheckBox Name chkItalic
" " Caption Cursiva
CheckBox Name chkUnderline
" " Caption Subrayado
Commandbutton Name Dar Formato

Escribe el siguiente código en el formulario:

Option Explicit
Dim
constcolor as ColorConstants

Private Sub optColor_Click(index as Integer)
Select Case index
Case 0
constcolor=vbBlack
Case 1
constcolor=vbWhite
Case 2
constcolor=vbBlue
Case 3
constcolor=vbRed
Case 4
constcolor=vbGreen
Case 5
constcolor=vbYellow
End Select
End Sub

Private Sub Form_Load()
constcolor=vbBlack
optColor(0).Value=True
End Sub

Private Sub cmdFormat_Click()
lblFormat.Caption=txtEscr.Text
lblFormat.Forecolor=constcolor
chkBold.Value=lblFormat.Font.Bold
chkItalic.Value=lblFormat.Font.Italic
chkUnderline.Value=lblFormat.Font.Underline
End Sub

Pulse F5 para probar la aplicación


Anterior Indice Siguiente