canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  188

Manual de Visual Basic: Elementos de interface

INDICE MANUAL VISUAL BASIC II

5.1.- BOTONES DE OPCIÓN, CUADROS DE VERIFICACIÓN, BARRAS DE DESPLAZAMIENTO.

CASILLAS DE VERIFICACIÓN Y CUADROS DE OPCIÓN.

Los botones de opción (Option Button, 3ª fila, icono central) y las casillas de verificación (CheckBox, 3ª fila, icono izquierdo), indican un estado y permiten al usuario que cambie el estado. Las casillas de verificación actúan independientemente. Por el contrario, los botones de opción aparecen en conjuntos y permiten escoger un valor del conjunto.

Las propiedades importantes de estos controles son, prácticamente las mismas que las de un botón de comando, a excepción de la propiedad Value (valor), que indica el estado del control. Para los botones de opción puede estar establecida a True o False. Si está a True, el botón estará activado. Para las casillas de verificación, se podrá establecer a 0-Unchecked (no está activado), 1-Checked (activado) o 2-Grayed (atenuado).

MARCOS

Los marcos (Frame, 2ª fila, icono central) sirven para separar grupos de otros objetos en la pantalla. Para los controles anteriores, también afectan al comportamiento de ellos. Para asegurarse que los controles que se añadan al marco pertenecen al marco, se deben crear dentro del marco y no arrastrarlos encima del marco.

BARRAS DE DESPLAZAMIENTO

(HScrollBar y VScrollBar, 4ª fila, iconos central y derecho) Informan de la posición del cuadro de desplazamiento dentro de la barra.

Las propiedades que se suelen utilizar son: Value (valor) contiene el número que representa la posición actual del cuadro de desplazamiento en el interior de la barra. LargeChange (gran cambio) representa el valor añadido o sustraído al número contenido en la propiedad Value cuando el usuario hace clic dentro de la barra de desplazamiento. Max (máximo) indica el valor de la propiedad Value cuando el cuadro de desplazamiento está en su posición más a la derecha o abajo posible. Min (mínimo) indica el valor de la propiedad Value cuando el cuadro de desplazamiento está en su posición más a la izquierda o arriba posible. SmallChange (cambio pequeño) representa el valor añadido o sustraído al número contenido en la propiedad Value cuando el usuario hace clic dentro de una de las flechas de desplazamiento.

Los eventos asociados a este tipo de control son los eventos Change producido después de que se haya modificado la posición del cuadro de desplazamiento; y el evento Scroll, emitido repetidamente mientras el cuadro de desplazamiento se arrastra por el interior de la barra de desplazamiento (no ocurre si se mueve haciendo clic en las flechas o en la barra). Se utiliza para proporcionar información instantánea.

TEMPORIZADORES

(Timer, 5ª fila, icono izquierdo) Este tipo de control se programa estableciendo su propiedad Interval al número de milisegundos que deben transcurrir entre los eventos que emita. En la mayoría de los ordenadores, un valor en la propiedad Interval inferior a 56 no es útil. El valor máximo permitido es algo más de un minuto: 66... Antes de generar un evento de reloj, el sistema siempre comprueba si hay algún otro evento de reloj pendiente, si lo hay, no genera un evento nuevo. Invisible en tiempo de ejecución.

CONTROL DE REJILLA (CONTROL GRID)

Una rejilla tiene la apariencia de una hoja de cálculo, por lo que la información que muestra aparece en las celdas de la rejilla. Durante la ejecución, el usuario podrá seleccionar celdas, pero no modificar su contenido. En una rejilla podemos tener celdas fijas y no fijas. El color por defecto de las celdas fijas es gris y, el de las no fijas, blanco. Si el número de celdas no cabe en la rejilla, aparecerán barras de desplazamiento. En Visual Basic 4.0, este control debe ser añadido al proyecto desde Herramientas/Controles Personalizados/ Activando "Microsoft Grid Control"

Las propiedades más importantes de este control son: Row (fila) determina la fila actual. Col (columna) contiene la columna actual. Rows (filas) determina el número total de filas. Cols (columnas) que determina el número total de columnas. FixedRows (filas fijas) determina el número de filas, empezando desde arriba, que permanecen fijas. FixedCols (columnas fijas) determina el número de columnas, empezando desde la izquierda, que permanecen fijas. ColWidth (anchura columna) determina el ancho de la columna. RowHeight (altura fila) determina el alto de la fila. Ambas están medidas en Twips. Text (texto) contiene el contenido de la celda.

EJERCICIOS:

  1. Crear una aplicación que permita mostrar en una caja de texto la posición actual de una barra de desplazamiento.
  2. Diseñar una aplicación que transcurrido un intervalo de tiempo introducido por el usuario, simule un protector de pantalla.
  3. Diseñar una aplicación que permita al usuario definir un color escogiendo la cantidad de rojo, verde y azul. Se deben utilizar barras de desplazamiento para cada color y, una caja de texto para mostrar el color resultante.

5.2.- CUADROS DE DIÁLOGO COMUNES. CONTROLES DE UNIDADES, DIRECTORIOS Y ARCHIVOS

CUADROS DE DIÁLOGO

(Common Dialog, 8ª fila, icono izquierdo) Este control es invisible en tiempo de ejecución. Sin embargo, cuando se pone un control de este tipo en un formulario, se puede llamar a cualquiera de las cinco operaciones estándar de Windows como Abrir, Guardar como, Color, Fuente e Impresora. El cuadro de diálogo no realiza acciones, sólo recoge información. La ejecución de las funciones seleccionadas comienza cuando se establece la propiedad (Personalizado) del control de diálogo estándar. Las instrucciones de Visual Basic se suspenden hasta que el usuario sale del cuadro de diálogo. Entonces se podrán examinar las propiedades del control para ver qué acción se produjo. No hay ni métodos ni eventos asociados a este tipo de control. Todas las funciones del cuadro de diálogo permiten generar un error si el usuario selecciona el botón Cancelar. Para ello, se utiliza la propiedad CancelError (cancelar error), que por defecto está desactivada.

Al modificar la propiedad (Personalizado) aparece una serie de fichas para escoger el tipo de cuadro de diálogo que se debe mostrar. Las posibilidades son las siguientes:

Abrir / Guardar Como: Permite al usuario seleccionar una unidad de disco, un directorio, una extensión de archivo, un nombre de archivo e indicar si éste va a ser abierto sólo para lectura. Sus propiedades más importantes son: DialogTitle (título del cuadro de diálogo) que puede ser establecida en cualquier cadena de caracteres; FileName (nombre de archivo) utilizada para establecer el nombre inicial que aparecerá en el cuadro Nombre del archivo del cuadro de diálogo. Sirve además para saber el nombre del archivo seleccionado; Filter (filtro) se utiliza para restringir los nombres de los archivos que aparecerán en el cuadro de lista. Debe ser una cadena de texto con una o más parejas de componentes, donde cada componente está formada por una descripción y por un carácter comodín y, separadas por |; FilterIndex (filtro índice) tendrá como valor un número entero que indica la pareja de componentes del filtro que actuará por omisión; Flags (banderas) establecida como una combinación de uno o más valores que controlan características especiales del cuadro de diálogo.

Color: Permite al usuario seleccionar un color de una paleta o crear y seleccionar un color personalizado. La propiedad Color determina el color seleccionado.

Fuente: Permite al usuario seleccionar un tipo de letra, especificando la fuente, el estilo y el tamaño.

Imprimir: Visualiza el tipo de impresora que se está utilizando y permite al usuario especificar una nueva impresora y/o indicar cómo se va a realizar la impresión. Las propiedades Copies (número de copias), FromPage (desde la página nº), ToPage (hasta la página nº), determinan la información relativa a la impresión.

Ayuda: Permite ejecutar Winhelp.exe, pero no se visualiza cuadro de diálogo. La propiedad HelpCommand (comando de ayuda) especifica el tipo de ayuda que se quiere obtener; HelpFile (archivo de ayuda) especifica el nombre del archivo de ayuda y HelpKey (clave de ayuda) especifica la palabra clave que se debe usar para la pantalla inicial de ayuda.

Una vez en tiempo de ejecución, para visualizar el cuadro de diálogo se deberá utilizar uno de los métodos siguientes:

Método Tipo de Caja

ShowOpen Caja de diálogo Abrir

ShowSave Caja de diálogo Guardar Como

ShowColor Caja de diálogo Color

ShowFont Caja de diálogo Fuente

ShowPrinter Caja de diálogo Imprimir

ShowHelp Invoca a Winhelp.exe (no visualiza caja de diálogo)

EJEMPLO:

Diseñar una aplicación que permita visualizar varios tipos de cuadros de diálogo.

CONTROL

PROPIEDAD

VALOR

Form

Caption

Cuadros de diálogo

 

Name

frmCDemo

 

Appearance

1 - 3D

Label

Caption

Elige un tipo de cuadro

List Box

Font

Font: Courier

 

Name

lstDiags

Command Button

Name

cmdOK

 

Caption

OK

 

Default

True

Command Button

Caption

Cancelar

 

Name

cmdCancelar

 

Cancel

True

Common Dialog

Name

CommonDialog1

Private Sub Form_Load()

lstDiags.AddItem "Ningún cuadro de diálogo - Action = 0"

lstDiags.AddItem "Cuadro de diálogo Abrir - Action = 1"

lstDiags.AddItem "Cuadro de diálogo Guardar Como - Action = 2"

lstDiags.AddItem "Cuadro de diálogo Color - Action = 3"

lstDiags.AddItem "Cuadro de diálogo Fuentes - Action = 4"

lstDiags.AddItem "Cuadro de diálogo Imprimir - Action = 5"

lstDiags.AddItem "Cuadro de diálogo Ayuda - Action = 6"

End Sub

Private Sub cmdOK_Click()

MostrarCuadro

End Sub

Private Sub lstDiags_DblClick()

MostrarCuadro

End Sub

Private Sub cmdCancelar_Click()

Unload cmdCancelar.Parent

End Sub

Public Sub MostrarCuadro()

Dim Cual As Integer

Const OFNFileMustExists = 4096 ‘Constantes obtenidas del "Object Browser"

Const OFNAllowMultiselect = 512

Const OFNShowHelp = 16

Const OFNOverwritePrompt = 2

Const CCFullOpen = 2

Const CFBoth = 3

Const PPrintSetup = 64

Const HelpContents = 3

If lstDiags.ListIndex = 0 Or lstDiags.ListIndex = -1 Then

MsgBox "Lo siento, no hay cuadro de diálogo seleccionado"

Else

Cual = lstDiags.ListIndex

Select Case Cual

Case 1 ‘Abrir archivo, Action = 1

CommonDialog1.Flags = OFNFileMustExist Or OFNAllowMultiselect

CommonDialog1.ShowOpen

Case 2 ‘Guardar archivo, Action = 2

CommonDialog1.Flags = OFNShowHelp Or OFNOverwritePrompt

CommonDialog1.ShowOpen

Case 3 ‘Color, Action = 3

CommonDialog1.Flags = CCFullOpen

CommonDialog1.ShowOpen

Case 4 ‘Fuentes, Action = 4

CommonDialog1.Flags = CFBoth

CommonDialog1.ShowOpen

Case 5 ‘Imprimir, Action = 5

CommonDialog1.Flags = PDPrinterSetup

CommonDialog1.ShowOpen

Case 6 ‘Ayuda, Action = 6

CommonDialog1.HelpFile = "VB.HLP"

CommonDialog1.HelpCommand = HelpContents

CommonDialog1.ShowOpen

End Select

End If

End Sub

CONTROLES DE UNIDADES DE DISCO

(DriveList, 5ª fila, icono central) La propiedad Drive del control de unidades de disco, permite saber cuál es la unidad actual. Sólo el primer carácter es significativo. Disponible en tiempo de ejecución. Un cambio de unidad de disco provoca el suceso Change. Para que cambie la unidad de disco se debe ejecutar la sentencia:

ChDrive Drive1.Drive

CONTROL DE DIRECTORIOS

(DirList, 5ª fila, icono derecho) Muestra la estructura de directorios de la unidad actual. La propiedad Path devuelve el camino completo del directorio actual, incluyendo el nombre de unidad. Disponible en tiempo de ejecución. Un cambio de directorio provoca el suceso Change. Para que cambie el directorio se debe ejecutar la sentencia:

ChDir Dir1.Path

El directorio especificado por la propiedad Path siempre tiene como índice (propiedad ListIndex) -1. El que está inmediatamente encima de él, tiene como índice -2, y así sucesivamente hasta el directorio raíz. El primer subdirectorio que está inmediatamente a continuación, tiene como índice 0. Si hay varios directorios en el primer nivel de subdirectorios, el siguiente tiene índice 1, y así sucesivamente. El número de directorios correspondientes al primer nivel de subdirectorios del directorio especificado por Path, viene dado por la propiedad ListCount de la lista.

CONTROL DE ARCHIVOS

(FileList, 6ª fila, icono izquierdo) Muestra los archivos del directorio actual. La propiedad FileName permite especificar el fichero que se quiere utilizar o devuelve el nombre del fichero seleccionado. Disponible en tiempo de ejecución. La propiedad Pattern permite que se visualicen los ficheros que cumplen el patrón especificado por ésta. Admite los comodines * y ?. Los atributos están disponibles a través de las propiedades Archive, Normal, System, Hidden y ReadOnly. Para poner atributos a un fichero se ejecutará la propiedad SetAttr y, para obtenerlos, GetAttr. Las propiedades List y ListIndex son idénticas a las propiedades del mismo nombre de los cuadros combinados.

EJEMPLOS:

  1. Diseñar una aplicación que permita buscar ficheros a partir de un determinado directorio previamente especificado. Se necesitan dos formularios y un módulo.

CONTROL

PROPIEDAD

VALOR

Form

Caption

Buscar ficheros

 

Name

frmBuscarFicheros

Label

Caption

Criterio de búsqueda:

Text Box

Text

(ninguno)

 

Name

txtPatrón

Command Button

Name

cmdDirectorio

 

Caption

Directorio:

Text Box

Caption

(ninguno)

 

Name

txtDirectorio

Command Button

Caption

Buscar

 

Name

cmdBuscar

 

Default

True

Command Button

Caption

Cancelar

 

Name

cmdCancelar

Command Button

Caption

Salir

 

Name

cmdSalir

List

Name

lstLista

 

Sorted

True

Private Sub cmdSalir_Click()

End

End Sub

Private Sub Form_Load()

txtDirectorio.Text = CurDir$ ‘Directorio actual

txtPatrón.Text = "*.*"

End Sub

Private Sub txtPatrón_Change()

FrmSistemaF.fleArchivos.Pattern = txtPatrón.Text

End Sub

Private Sub cmdBuscar_Click()

BuscarFichero

End Sub

Private Sub cmdCancelar_Click()

NoAbandonarBuscar = False

End Sub

Private Sub cmdDirectorio_Click()

frmSistemaF.Show 1 ‘Formulario modal

End Sub

En un nuevo módulo:

Public NoAbandonarBuscar As Boolean

Dim NumFicheros As Integer

Public Sub BuscarFichero()

‘Inicialización para llamar a RecorrerArbolDirs para ejecutar una búsqueda recursiva

Dim Abandono As Boolean, I As Integer, Msj As String

‘Si ya existe una lista, borrarla

If frmBuscarFicheros.lstLista.ListCount Then FrmBuscarFicheros.lstLista.Clear

‘Comenzar la búsqueda recursiva de directorios

Abandono = RecorrerArbolDirs(frmBuscarFicheros.txtDirectorio.Text, "")

frmSistemaF.fleArchivos.Path = frmSistemaF.dirDirectorio.Path

If Not Abadono Then

If frmBuscarFicheros.lstLista.ListCount Then

NumFicheros = frmBuscar-ficheros.lstLista.ListCount

Msj = "Se encontraron " & Str$(NumFicheros)

Msj = Msj & " ficheros"

Else

Msj = "No se encontraron ficheros"

End If

MsgBox Msj, vbInformation, frmBuscarFicheros.Caption

Else

Msj = "Error: se abandonó la búsqueda"

MsgBox Msj, vbCritical, frmBuscarFicheros.Caption

End If

End Sub

Public Function RecorrerArbolDirs(DirActual As String, DirAnterior As String) _

As Boolean

‘Buscar directorios recursivamente desde DirActual hacia abajo

Dim vr As Integer, I As Integer, Msj As String

‘Permitir al usuario abandonar la búsqueda

NoAbandonarBuscar = True

‘Si ocurre un error, la función devuelve True

RecorrerArbolDirs = False

‘Permitir ejecutar otros sucesos

vr = DoEvents

‘Ahora Cancelar puede poner NoAbandonar a False

On Error GoTo ManipularErrorRecorrerArbolDirs

‘Directorios debajo del actual

DirsDebajo = frmSistemaF.dirDirectorio.ListCount

Do While (DirsDebajo > 0) And NoAbandonarBuscar

‘DirViejo se guarda en DirAnterior para la próxima recursión

DirViejo = DirActual

If frmSistemaF.dirDirectorio.ListCount > 0 Then ‘otro nodo

FrmSistemaF.dirDirectorio.Path = frmSistemaF!dirDirectorio.List(DirsDebajo - 1)

NoAbandonarBuscar = RecorrerArbolDirs((frmSistemaF!dirDirectorio.Path), _

DirViejo)

End If

‘Otra rama del mismo nivel de directorios

DirsDebajo = DirsDebajo - 1

If NoAbandonarBuscar = False Then

RecorrerArbolDirs = True

Exit Function

End If

Loop

‘Completar camino

If frmSistemaF.fleArchivos.ListCount Then

If Len(DirActual) > 3 Then DirActual = DirActual + "\"

‘Añadir ficheros a la lista

For I = 0 To frmSistemaF.fleArchivos.ListCount - 1

Entrada = DirActual & frmSistemaF.fleArchivos.List(I)

FrmBuscarFicheros.lstLista.AddItem Entrada

NumFicheros = NumFicheros + 1

Next I

End If

If DirAnterior <> "" Then ‘Directorio anterior en la lista

FrmSistemaF.dirDirectorio.Path = DirAnterior

End If

Exit Function

ManipularErrorRecorrerArbolDirs:

Ir Err = 7 Then ‘Insuficiente memoria (lista llena)

‘Visualizar mensaje de error y retornar True en AbandonarBusqueda

Msj = "Lista llena. Se abandona la búsqueda"

MsgBox Msj, vbExclamation

RecorrerArbolDirs = True

Exit Function ‘Exit pone Err a 0

Else

MsgBox Error, vbCritical

End

End If

End Function

En un nuevo formulario:

CONTROL

PROPIEDAD

VALOR

Form

Caption

Sistema de Ficheros

 

Name

frmSistemaF

Label

Caption

Ficheros:

File

Name

FleArchivos

Label

Caption

Directorios:

Dir

Name

dirDirectorio

Label

Caption

Unidades:

Drive

Name

drvUnidades

Command Button

Caption

Aceptar

 

Name

cmdAceptar

Command Button

Caption

Cancelar

 

Name

cmdCancelar

Private Sub drvUnidades_Change()

On Error GoTo Unidades

dirDirectorio.Path = drvUnidades.Drive

Exit Sub

Unidades:

MsgBox "Error: unidad no preparada", vbExclamation, "Sistema Ficheros"

Exit Sub

End Sub

Private Sub dirDirectorio_Change()

fleArchivos.Path = dirDirectorio.Path

End Sub

Private Sub cmdAceptar_Click()

‘Actualizar la lista de directorios

dirDirectorio.Path = dirDirectorio.List(dirDirecrorio.ListIndex))

frmBuscarFicheros.txtDirectorio.Text = dirDirectorio.Path

frmSistemaF.Hide

End Sub

Private Sub cmdCancelar_Click()

frmSistemaF.Hide

End Sub

 

  1. Diseñar una aplicación que simule una base de datos de una farmacia. Se debe guardar información sobre el nombre del producto, cantidad en stock y comentarios sobre el producto. Para ello, se utilizará un tipo Registro. El formulario estará formado por un botón para buscar un producto determinado, otro botón para añadir un nuevo producto, así como las cajas de texto necesarias para visualizar el inventario. Cuando se desee buscar un producto, se mostrará un formulario con una lista en la que aparecerán los nombres de los productos. Cuando el usuario seleccione un producto, se visualizará en el formulario inicial toda la información relativa a dicho producto.

CONTROL

PROPIEDAD

VALOR

Form

Caption

Inventario de Farmacia

 

Name

frmInventario

Text Box

Text

(ninguno)

 

Name

txtNombre

Text Box

Text

(ninguno)

 

Name

txtCantidad

Text Box

Text

(ninguno)

 

Name

txtComentarios

 

MultiLine

True

 

ScrollBars

2-Vertical

Command Button

Caption

Buscar Producto

 

Name

cmdBuscar

Command Button

Caption

Añadir

 

Name

cmdAñadir

Private Sub cmdAñadir_Click()

TotalRegistros = TotalRegistros + 1

Articulo(TotalRegistros).Nombre = txtNombre.Text

Articulo(TotalRegistros).Cantidad = txtCantidad.Text

Articulo(TotalRegistros).Comentario = txtComentarios.Text

frmRegistros.lstNombre.AddItem txtNombre.Text

txtNombre.Text = ""

txtCantidad.Text = ""

txtComentarios.Text = ""

txtNombre.SetFocus

End Sub

Private Sub Form_Terminate()

End

End Sub

Private Sub cmdBuscar_Click()

frmRegistro.Show

End Sub

En un nuevo módulo:

Type Registro

Nombre As String * 50

Cantidad As String * 20

Comentarios As String * 200

End Type

Public TotalRegistros As Integer

Public Articulo(1 To 100) As Registro

Public Sub BuscarRegistro()

Dim QueRegistro As Integer

For QueRegistro = 1 To 100

If (RTrim(Articulo(QueRegistro).Nombre)) = _ RTrim(frmRegistro.lstNombre.Text Then Exit For

Next QueRegistro

frmInventario.txtNombre.Text = Articulo(QueRegistro).Nombre

frmInventario.txtCantidad.Text = Articulo(QueRegistro).Cantidad

frmInventario.txtComentarios.Text = Articulo(QueRegistro).Comentarios

frmRegistro.Hide

End Sub

En un nuevo formulario:

CONTROL

PROPIEDAD

VALOR

Form

Caption

Buscar Producto

 

Name

frmRegistro

 

Max Button

False

 

Min Button

False

 

BorderStyle

1-Fixed Single

List Box

Sorted

True

 

Name

lstNombre

Command Button

Caption

Aceptar

 

Name

cmdAceptar

Command Button

Caption

Cancelar

 

Name

cmdCancelar

Private Sub cmdCancelar_Click()

frmRegistro.Hide

End Sub

Private Sub cmdAceptar_Click()

BuscarRegistro

End Sub

Private Sub lstNombre_DblClick()

BuscarRegistro

End Sub

EJERCICIO:

Crear una aplicación que permita al usuario escoger un tipo de letra y sus determinados atributos. El formulario debe parecerse lo más posible al mostrado por Visual Basic al cambiar la propiedad Font de cualquier control.

 

 

5.3.- CREACIÓN DE MENÚS.

DISEÑO DE UN MENÚ

Para diseñar un menú se utilizará Herramientas/Editor de Menús. Los elementos de un menú pueden ser órdenes o comandos, que al hacer clic sobre ellos ejecutan acciones; submenús, que despliegan una nueva lista de elementos y; separadores o línea horizontal que agrupa las opciones del menú. Una vez en la ventana de diseño de menús, se introducirán los siguientes datos:

Caption Nombre del menú que se desea crear (lo que ve el usuario). Se insertará un ampersand (&) delante de la letra que dará acceso al menú. Para introducir un separador, se escribirá un guión (-) en este apartado.

Name Nombre utilizado en el código para referirse al menú.

Index Permite que un conjunto de órdenes sean agrupadas en una matriz de controles.

ShortCut Permite definir un acelerador, es decir, una combinación de teclas para activar el elemento.

Checked Útil para indicar si una orden está activa o no. Si lo está, en la orden aparece una marca Ö a su izquierda.

Enabled Útil para desactivar una orden. Si una orden tiene esta propiedad marcada, aparecerá atenuada y no podrá ser ejecutada.

Visible Es útil cuando en tiempo de ejecución se quiere ocultar una orden.

WindowList Permite especificar si un menú mantiene una lista de las ventanas abiertas, con una marca Ö a la izquierda de la ventana activa.

HelpContexID Se utiliza para proveer una ayuda en línea para una aplicación.

NegotiatePosition Determina si el menú va a aparecer en el formulario y cómo lo hace.

Para introducir sangrías entre los elementos de menú, se pulsará los botones de flecha. El botón Next inserta un nuevo elemento de menú o, se desplaza al siguiente.

En tiempo de ejecución se podrán añadir órdenes a un menú. Para ello se utilizará la sentencia Load, tal como se utilizaba en matrices de controles. Para eliminar una orden de un menú, se utilizará Unload. Para poder utilizar estas dos sentencias, las órdenes que componen el menú tienen que pertenecer a una matriz de controles, por lo que durante el diseño se debe haber creado al menos, un elemento (haber puesto a un comando la propiedad Index a 0).

MENÚS DESPLEGABLES FLOTANTES O EMERGENTES

Para poder crear un menú emergente o contextual, se utilizará el método:

[formulario.] PopupMenu NombreMenú

donde NombreMenú es el valor de la propiedad Name del menú que se quiere mostrar. Ya se verá cómo hacer que aparezcan al pulsar el botón derecho del ratón.

EJEMPLO:

Modificar la aplicación que permitía simular un editor de texto.

CONTROL

PROPIEDAD

VALOR

Form

Caption

Editor de Textos

 

Name

frmEditor

Text Box

Text

(ninguno)

 

MultiLine

True

 

ScrollBars

3- Both

 

Name

txtEditor

El menú a diseñar tiene el siguiente formato:

CAPTION

NAME

OTRAS

&Archivo

mnuArchivo

 

&Salir

mnuArchivoSalir

ShortCut: CTRL+S

&Edición

mnuEdición

 

&Cortar

mnuEdiciónCortar

ShortCut: CTRL+X

Enabled: False

C&opiar

mnuEdiciónCopiar

ShortCut: CTRL+C

Enabled: False

&Pegar

mnuEdiciónPegar

ShortCut: CTRL+V

Enabled: False

&Configuración

mnuConfiguaración

 

&Fuente

mnuConfFuente

 

Arial

Fuente

Checked: True

Index: 0

Times New Roman

Fuente

Index: 1

&Tamaño

mnuConfTamaño

 

10

Tamaño

Checked: True

Index: 0

20

Tamaño

Index: 1

&Color

mnuConfColor

 

Negro

Color

Checked: True

Index: 0

Azul

Color

Index: 1

Rojo

Color

Index: 2

A&yuda

mnuAyuda

 

Acerca de ...

mnuAyudaAcerca

 

Dim SeñalColor As Integer

Dim SeñalFuente As Integer

Dim SeñalTamaño As Integer

Private Sub Form_Load()

Clipboard.Clear ‘Limpiar el portapapeles

txtEditor.Font.Name = "Arial"

SeñalFuente = 0

txtEditor.Font.Size = 10

SeñalTamaño= 10

txtEditor.ForeColor = RGB(0, 0, 0)

SeñalColor = 0

End Sub

Private Sub mnuArchivoSalir_Click()

End

End Sub

Private Sub mnuEdición_Click()

mnuEdiciónCopiar.Enabled = (txtEditor.SelLength > 0)

mnuEdiciónCortar.Enabled = (txtEditor.SelLength > 0)

‘Activar la opción Pegar si el portapapeles tiene algo

mnuEdiciónPegar.Enabled = (Len(Clipboard.GetText()) > 0)

End Sub

Private Sub mnuEdiciónCopiar_Click()

Clipboard.SetText txtEditor.SelText ‘Llevar al portapapeles

End Sub

Private Sub mnuEdiciónCortar_Click()

Clipboard.SetText txtEditor.SelText ‘Llevar al portapapeles

txtEditor.SelText = "" ‘Eliminar el texto

End Sub

Private Sub mnuEdiciónPegar_Click()

txtEditor.SelText = Clipboard.GetText()

End Sub

Private Sub Fuente_Click()

txtEditor.Font.Name = Fuente(Index).Caption

Fuente(SeñalFuente).Checked = False ‘Desactivar la fuente anterior

Fuente(Index).Checked = True ‘Activar la nueva fuente

SeñalFuente = Index

End Sub

Private Sub Tamaño_Click()

txtEditor.Font.Size = Val(Tamaño(Index).Caption

Tamaño(SeñalTamaño).Checked = False ‘Desactivar el tamaño anterior

Tamaño(Index).Checked = True ‘Activar el nuevo tamaño

SeñalTamaño = Index

End Sub

Private Sub Color_Click()

Select Case Index

Case 0

txtEditor.ForeColor = RGB(0, 0, 0)

Case 1

txtEditor.ForeColor = RGB(0, 0, 255)

Case 2

txtEditor.ForeColor = RGB(255, 0, 0)

End Select

Color(SeñalColor).Checked = False

Color(Index).Checked = True

SeñalColor = Index

End Sub

EJERCICIOS:

  1. Modificar el ejemplo anterior para que no utilice el portapapeles.
  2. Modificar la aplicación de la alarma de forma que tenga un menú "Alarma" con una única opción. Inicialmente la opción indicará "Activar alarma" y, una vez la alarma esté activada, la opción del menú indicará "Desactivar alarma".

 

5.4.- CONTROL DE ACTIVIDAD DEL RATÓN, EVENTOS ASOCIADOS.

EVENTOS ASOCIADOS

Los formularios y varios tipos de controles reconocen tres sucesos porducidos por el ratón:

MouseDown. Reconocido cuando el usuario pulsa cualquier botón.

MouseUp. Reconocido cuando el usuario suelta cualquier botón.

MouseMove. Reconocido cada vez que el usuario mueve el cursor del ratón a una nueva posición.

Los procedimientos asociados a estos sucesos tienen los mismos argumentos: Button, botón pulsado; Shift, tecla/s pulsada/s; X e Y, coordenadas de la posición actual del ratón.

Objeto_SucesoRatón(Button As Integer, Shift As Integer, X As Single, Y As Single)

Los valores válidos para el argumento Button dependen del suceso. Para los sucesos MouseDown y MouseUp, este argumento puede tomar los siguientes valores:

CONSTANTE VALOR

vbLeftButton 1

vbRightButton 2

vbMiddleButton 4

Para el suceso MouseMove, este argumento puede tomar los siguientes valores:

CONSTANTE VALOR

vbLeftButton 1

vbRightButton 2

vbLeftButton + vbRightButton 3

vbMiddleButton 4

vbLeftButton + vbMiddleButton 5

vbMiddleButton + vbRightButton 6

vbLeftButton + vbRightButton + vbRightButton 7

Los valores válidos para el argumento Shift pueden ser:

CONSTANTE VALOR

vbShiftMask 1

vbCtrlMask 2

vbAltMask 4

EJEMPLOS:

  1. Crear una aplicación que indique en tres cajas de texto txtTest1, txtTest2 y txtTest3 respectivamente, que permitan mostrar los valores de los argumentos X, Y y Button para el evento MouseDown.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _

Y As Single)

txtTest1.Text = Str(X)

txtTest2.Text = Str(Y)

Select Case Button

Case 1

txtTest3.Text = "Botón Izquierdo"

Case 2

txtTest3.Text = "Botón Derecho"

Case 4

txtTest3.Text = "Botón Central"

End Select

End Sub

  1. Crear una aplicación que permita dibujar líneas en el formulario mientras se presiona el botón izquierdo del ratón.

Dim PuntoX As Integer

Dim PuntoYAs Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _

Y As Single)

If Button = 1 Then ‘Botón izquierdo

PuntoX = X

PuntoY = Y

CurrentX = X

CurrentY = Y

End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _

Y As Single)

If Button = 1 Then Line -(X, Y) ‘Dibujar una línea

End Sub

ARRASTRAR Y SOLTAR

Para que un control pueda ser arrastrado, su propiedad DragMode debe estar establecida a 1. En este caso, este objeto ya no recibe más los eventos Click y MouseDown. En su lugar, el objeto se mueve cuando el usuario hace clic sobre él y comienza a arrastrarlo. Al mover un objeto, Visual Basic muestra un cuadro gris en lugar del objeto. Si se quiere sustituir por una imagen, se modificará la propiedad DragIcon del objeto a mover.

Cuando un objeto está siendo arrastrado, se denomina objeto fuente y, el objeto sobre el que se suelta, objeto destino. Este último objeto recibe el evento DragDrop. A todos los objetos por los que el objeto fuente haya pasado por encima durante el arrastre, se emitirá el evento DragOver.

Un objeto puede ser movido a petición del usuario. Para ello, la propiedad DragMode del objeto estará establecida a 0. Para permitir o no arrastrar el objeto, se utilizará el método:

[control.] Drag acción

donde acción puede tener el valor 0, 1 ó 2. Un valor 0 cancela la operación de arrastrar, un valor 1 inicia la operación de arrastrar, un valor 2 finaliza la operación de arrastrar y provoca el suceso DragDrop.

Visual Studio . VisualBasic.net . ADO.NET . ASP.NET . Framework . Crystal report
[ Visual Basic .NET ·  Información legal ·  Contacto ·  RSS novedades Foro ·  Inicio ]
© Copyright 2008 canalvisualbasic.net Ontecnia. Todos los derechos reservados
Ontecnia
Otros sitios web de Ontecnia
Programación en español, manuales, foros Programas gratis Comentarios de libros y literatura Juegos gratis online, Juegos flash Videojuegos, trucos, avances y noticias de juegos Descargar programas gratis Noticias y resultados de fútbol