migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y...

22
Practica Cajas de Dialogo [email protected] Cree una aplicación denominada VentanaMarco que utilice un objeto Form como ventana principal, con la intención de visualizar, a partir de ella otros diálogos, a partir de ella, otros diálogos. Para ello, cree el esqueleto de la aplicación y añada al formulario una barra de menús como se muestra a continuación: El menú Archivo contendrá sólo una orden, y el menú Diálogos inicialmente estará vacio. Se desea que el usuario introduzca una palabra clave en el momento de ejecutar la aplicación. Por lo tanto, añada a la clase del formulario Form1 el controlador de su evento Load como se indica a continuación: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If (Not contraseña()) Then Me.Close() End If End Sub El método contraseña de la clase Form1 devolverá true si la contraseña fue correcta y false si, después de tres intentos, fue incorrecta. Crear una caja de dialogo para la contraseña

Transcript of migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y...

Page 1: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Practica Cajas de Dialogo [email protected]

Cree una aplicación denominada VentanaMarco que utilice un objeto Form como ventana principal, con la intención de visualizar, a partir de ella otros diálogos, a partir de ella, otros diálogos. Para ello, cree el esqueleto de la aplicación y añada al formulario una barra de menús como se muestra a continuación:

El menú Archivo contendrá sólo una orden, y el menú Diálogos inicialmente estará vacio.

Se desea que el usuario introduzca una palabra clave en el momento de ejecutar la aplicación. Por lo tanto, añada a la clase del formulario Form1 el controlador de su evento Load como se indica a continuación:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If (Not contraseña()) Then Me.Close() End If End Sub

El método contraseña de la clase Form1 devolverá true si la contraseña fue correcta y false si, después de tres intentos, fue incorrecta.

Crear una caja de dialogo para la contraseña

1. Agregue un formulario de diálogo al proyecto y asígnele el nombre de DlgPalabraDePaso .2. Como titulo llevara “Palabra de Paso”3. Las cajas de diálogo no suelen incluir barra de menús, barras de desplazamiento de

ventana, menú de control, botones minimizar y maximizar, barra de estado ni borde de tamaño ajustable. Por lo tanto, en la ventana de propiedades, cambie la propiedad FormBorderStyle a FixedDialog y ControlBox a False

Page 2: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

4. Haga los cambios que considere necesarios para personalizar la apariencia y características del formulario.

5. Añada al formulario los siguientes controles

Objeto Propiedad ValorEtiqueta Name

TextetPalabraDePasoIntroduzca la palabra de paso:

Caja de texto NamePasswordChar

ctPalabraDePaso*

Boton1 NameTextDialogResult

btAceptar&AceptarOK

Boton2 NameTextDialogResult

btCancelar&CancelarCancel

Asigne a la propiedad AcceptButton de la caja de diálogo el valor de btAceptar para que este botón pueda ser activado, además de con un clic, también con la tecla Enter, y a CancelButton el valor de btCancelar para que este otro botón pueda ser activado también con la tecla Cancelar.

Mostrar caja de dialogo.

El formulario de inicio se cargará automáticamente cuando se ejecute la aplicación. Para hacer que aparezca en la aplicación un segundo formulario o caja de dialogo, desde este formulario de inicio habrá que crear un objeto de su clase (New) y mostrarlo (ShowDialog o Show). Por ejemplo.

' Crear la caja de diálogo de entrada Dim Dlg As DlgPalabraDePaso = New DlgPalabraDePaso ' Mostrar el diálogo y recuperar sus datos If (Dlg.ShowDialog() = Windows.Forms.DialogResult.OK) Then sPalabraDePaso = Dlg.ctPalabraDePaso.Text Else Return False End If

Page 3: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Del mismo modo, para hacer que desaparezca el formulario o caja de dialogo hay que escribir código para descargarlo u ocultarlo; esto ocurrirá automáticamente cuando el objeto creado salga fuera del ámbito, instante en que se invocara el destructor de su clase (método dispose).

Analizando la propiedad DialogResult del botón btAceptar. Si el valor de esta propiedad es distinto de None y el formulario se muestra mediante el método ShowDialog, al hacer clic en el botón se cierra el formulario (ocultándolo, no destruyéndolo) sin necesidad de responder a ningún evento, y la propiedad DialogResult del botón. ShowDialog devuelve el valor de la propiedad DialogResult del diálogo.

Introducción de los datos y recuperación de los mismos.

Para recuperar los datos de una caja de diálogo, es importante saber como se cerró: valor DialogResult devuelto por ShowDialog. Por ejemplo, si el usuario hace clic en el botón Aceptar los datos se recuperarán, pero si lo hace en Cancelar, los datos escritos por el usuario se desecharan en lugar de conservarse.

Private Function contraseña() As Boolean Dim nCuenta As Integer Dim sPalabraDePaso As String ' Crear la caja de diálogo de entrada Dim Dlg As DlgPalabraDePaso = New DlgPalabraDePaso ' Se admiten tres intentos para introducir la palabra de paso Do ' Mostrar el diálogo If (Dlg.ShowDialog() = Windows.Forms.DialogResult.OK) Then sPalabraDePaso = Dlg.ctPalabraDePaso.Text Else Return False End If

' Verificar si la palabra de paso es correcta If (sPalabraDePaso.Length <> 0 And _ sPalabraDePaso.CompareTo("Javier") <> 0) Then MessageBox.Show("La palabra de paso no es correcta", _ "Error", _ MessageBoxButtons.OK, MessageBoxIcon.Error) nCuenta += 1 Else nCuenta = 4 End If Loop While (nCuenta < 3) If (sPalabraDePaso.Length = 0 Or nCuenta = 3) Then Return False ' salir de la aplicación End If Return True End Function

Page 4: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Casillas de verificación

Una casilla de verificación es un control que indica sí una opción particular está activada o desactivada. Cada casilla de verificación es independiente de las demás, ya que cada una de ellas tiene su propio identificador.

La funcionalidad para manipular este tipo de controles se proporciona por la clase CheckBox del espacio de nombres System.Windows.Forms.

Cargue la aplicación VentanaMarco creada anteriormente y añada una nueva caja de dialogo, como la de la figura.

La caja de diálogo será un objeto de la clase DlgCasillaVerificación derivada de Form.

Objeto Propiedad ValorCaja de Dialogo Name

TextFormBorderStyleMaximBox

DlgCasillaVerificacionCasilla de verificaciónFixedDialogFalse

Caja de texto Name ctTextoCasilla de verificación

NameText

cvConverMayus&Convertir a mayúsculas

Para mostrar un dialogo de la clase DlgCasillaVerificacion, se añadirá al menú Diálogos de la aplicación ventana marco un nuevo elemento DialogoCasillaV y después se escribirá el controlador para su evento Click, como sigue:

Private Sub DialogoCasillaV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DialogoCasillaV.Click Dim Dlg As DlgCasillaVerificacion = New DlgCasillaVerificacion Dlg.ShowDialog() End Sub

Page 5: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Asigne a la propiedad ThreeState de la casilla el valor True, y en segundo lugar, intercéptela tecla pulsada (evento KeyPress) y en función del estado de la casilla de verificación visualice el carácter como corresponda.

Private Sub ctTexto_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ctTexto.KeyPress If (cvConverMayus.CheckState = CheckState.Unchecked) Then If (Char.IsUpper(e.KeyChar)) Then e.KeyChar = Char.ToLower(e.KeyChar) End If ElseIf (cvConverMayus.CheckState = CheckState.Checked) Then If (Char.IsLower(e.KeyChar)) Then e.KeyChar = Char.ToUpper(e.KeyChar) End If End If End Sub

El método cvConverMayus_Click sitúa el foco, que estaba sobre la casilla de verificación, en la caja de texto y coloca el punto de inserción a continuación del ultimo carácter.

Private Sub cvConverMayus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cvConverMayus.Click, cvConverMayus.CheckedChanged ctTexto.Focus() ctTexto.SelectionStart = ctTexto.Text.Length End Sub

Page 6: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Botones de Opción

Un botón de opción es un control que indica si una determinada opción está activada o desactivada. Cada botón de opción es independiente de los demás, ya que cada uno de ellos tiene su propio identificador. El número de opciones representadas de esta forma puede ser cualquiera, y de ellas el usuario puede seleccionar una cada vez. La funcionalidad para manipular este tipo de controles se proporciona mediante por la clase RadioButton .

Un clic sobre un objeto RadioButton genera un evento Click, y cuando su estado cambia, un evento CheckedChanged. Para saber el tipo de cambio experimentado por la opción que originó el evento, hay que verificar el valor de la propiedad Checked de la misma. Este valor puede ser False, el botón aparece vacío, o True, el botón aparece con una señal.

La propiedad Appearence determina si la apariencia de este control es la típica o como un botón de pulsación. La propiedad FlatStyle, determina el estilo y la apariencia del control: Flat, Popup, Standard o System, valores definidos por el tipo enumerado FlatStyle. El valor predeterminado es Standard. Cuando el valor es System, la apariencia del control estará determinada por el sistema operativo del usuario.

Considérese que cuando se hace clic sobre un botón de opción que pertenece a un grupo, hay dos que cambian de estado: el que estaba seleccionado y el nuevo seleccionado.

Cargue la aplicación denominada VentanaMarco, y añada una nueva caja de diálogo; de tal forma que cuando se seleccione uno de los botones de opción “Decimal”, “Octal”, o “Hexadecimal”, el número tecleado en la caja de texto aparezca en la base indicada. La caja de diálogo será un objeto de la clase DlgBasesNum derivada de Form.

Page 7: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Objeto Propiedad ValorCaja de Diálogo Name

TextFormBorderStyleMaximizeBox

DlgBasesNumBotones de opciónFixedDialogFalse

Caja de texto Name ctDatoGroupBox Name

TextbgGrupoBotones1(Nada)

Botón de opción NameTextChecked

btopDecimal&DecimalTrue

Botón de opción NameText

btopOctal&Octal

Botón de opción NameText

btopHexadecimal&Hexadecimal

Añada la orden Bases numéricas al menú Diálogos de la aplicación VentanaMarco, para que cuando el usuario haga clic en esa orden, se visualice una caja de diálogo de la clase DLGBasesNum. Por lo que debe añadir a la clase Form1 el controlador del evento Click de este nuevo elemento y edítelo como se indica a continuación:

Private Sub DialogoBtOpcion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DialogoBases.Click Dim Dlg As DlgBasesNum = New DlgBasesNum Dlg.ShowDialog() End Sub

A continuación programe las operaciones para las que se diseño el diálogo:

1. Cuando el usuario escriba o modifique el contenido de la caja de texto, ésta se lo notifica a la caja de dialogo con el evento TextChanged; para manipularlo, añada el controlador correspondiente. (en el diálogo DlgBasesNum haga doble clic en la caja de texto

2. Lo que va hacer el método ctDato_TextChanged es almacenar el valor decimal, octal o hexadecimal de la caja de texto en una variable miembro denominada numeroActual de tipo Int32, de la clase DlgBassNum . Añada esta variable a la clase citada (su valor inicial predeterminado es cero).

Public Class DlgBasesNum Private numeroActual As Int32

End Class

Page 8: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

3. Después, edite el método privado ctDato_TextChanged como se indica a continuación:

Private Sub ctDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctDato.TextChanged If (ctDato.Text.Length = 0) Then Return Dim texto As String = ctDato.Text Dim base As Integer = 0

If (btopDecimal.Checked) Then base = 10 ElseIf (btopOctal.Checked) Then base = 8 ElseIf (btopHex.Checked) Then base = 16 End If Try numeroActual = Convert.ToInt32(texto, base) Catch ex As FormatException If (texto = "-" Or texto = "+") Then Return MsgBox(ex.Message) Catch ex As Exception MsgBox(ex.Message) End Try End Sub

El método ToInt32 de la clase Convert convierte una cadena de caracteres a un número entero de tipo Int32

4. Cuando el usuario seleccione una de las opciones Decimal, Octal o Hexadecimal, se producirá entre otros, el evento CheckedChanged asociado con ese control (puede ser el mismo para los tres). Para añadir el control correspondiente diríjase al diálogo DlgBasesNum, seleccione uno a uno los botones de opción, elija ese evento en la ventana de propiedades y vincule con cada uno de los botones el método especificado a continuación:

Private Sub btopDecOcHex_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btopDecimal.CheckedChanged, btopHex.CheckedChanged, btopOctal.CheckedChanged… End Sub

Page 9: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

5. El método btopDecOcHex_CheckedChanged tiene que mostrar en la caja de texto el valor numeroActual en decimal, octal o hexadecimal. El boton de acción sobre el cual se hizo clic quedara enfocado, para situar el foco de nuevo en la caja de texto, invocaremos su método Focus.

Private Sub btopDecOcHex_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btopDecimal.CheckedChanged, btopHex.CheckedChanged, btopOctal.CheckedChanged If (btopDecimal.Checked) Then ctDato.Text = Convert.ToString(numeroActual, 10) ElseIf (btopOctal.Checked) Then ctDato.Text = Convert.ToString(numeroActual, 8) ElseIf (btopHex.Checked) Then ctDato.Text = Convert.ToString(numeroActual, 16).ToUpper End If ctDato.Focus() End Sub

El método ToString de la clase Convert convierte un entero en la cadena de caracteres equivalente y el método ToUpper de la clase String convierte a mayúsculas una cadena de caracteres.

Page 10: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Listas Simples

Una lista es un control de la clase ListBox que pone a disposición del usuario un conjunto de elementos, que podrá elegir haciendo clic en ellos.

Diseño.

Cargue la aplicación denominada VentanaMarco, de tal modo que cuando seleccione uno o más elementos de la lista y pulse el botón Aceptar, muestre su contenido en un diálogo predefinido. La caja de diálogo será un objeto de la clase DlgListaSimple derivada de Form.

Objeto Propiedad ValorCaja de Diálogo Name

TextFormBorderStyleMaximizeBox

DlgListaSimpleLista SimpleFixedDialogFalse

Lista Name lsListaBotón de pulsación Name

TextbtAceptar&Aceptar

Botón de pulsación NameText

btAñadirAña&dir

Botón de pulsación NameText

btBorrar&Borrar

Para mostrar un diálogo de la clase DlgListaSimple, añadiremos al menú Diálogos de la aplicación VentanaMarco una nueva orden Lista Simple. El controlador asociado con esta orden será el siguiente:

Private Sub DialogoListaSimple_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DialogoListaSimple.Click Dim Dlg As DlgListaSimple = New DlgListaSimple Dlg.ShowDialog() End Sub

Page 11: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Iniciar una lista.

La iniciación de una lista se puede hacer durante el diseño a través de su propiedad Items, o durante la ejecución en el instante en que se carga el formulario, respondiendo al evento Load.

Para añadir a la lista una serie de elementos de tipo String, se añadirá a la clase DlgListaSimple_Load que se ejecute como respuesta al evento Load del diálogo.

Private Sub DlgListaSimple_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim elemento() As String = New String() { _ "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", _ "ocho", "nueve", "diez", "once", "doce", "trece", "catorce"} Me.lsLista1.Items.AddRange(elemento) End Sub

Acceder a los elementos seleccionados

Mediante el método btAceptar_Click

Private Sub btAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAceptar.Click If (lsLista1.SelectedIndex < 0) Then Return 'Dim elementoSeleccionado As Object 'elementoSeleccionado = lsLista1.SelectedItem 'MsgBox(elementoSeleccionado)

Dim s As String = "" Dim i As Integer For i = 0 To lsLista1.SelectedItems.Count - 1 s = s & lsLista1.SelectedItems(i).ToString & Environment.NewLine Next MsgBox(s) End Sub

Para añadir un nuevo elemento

Al botón añadir se le debe agregar un controlador de eventos Click como se muestra a continuación.

Private Sub btAñadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAñadir.Click Dim elemento As String elemento = InputBox("Introducir elemento de la lista:") ' Añadir el elemento If (elemento.Length <> 0) Then lsLista1.Items.Add(elemento) End If End Sub

Page 12: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Para borrar un elemento

Repita el procedimiento anterior

Private Sub btBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBorrar.Click If (lsLista1.SelectedIndex < 0) Then Return lsLista1.Items.RemoveAt(lsLista1.SelectedIndex) End Sub

Clase CheckedListBox, es un objeto ListBox en el que se muestra una casilla de verificación a la izquierda de cada elemento.

Page 13: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Listas Desplegables.

Una lista desplegable es un objeto de la clase ComboBox y es una combinación de una lista simple y una caja de texto que permite la selección de un solo elemento cada vez. Los estilos de listas desplegables son: editable, no editable y estática, que pueden fijarse mediante la propiedad DropDownStyle.

Por omisión, el número de elementos que muestra una lista emergente es ocho. Este valor puede modificarse asignando a la propiedad MaxDropDownItems el valor deseado.

Para buscar en una lista un elemento que contiene una determinada cadena de caracteres, se dispone del método FindString y FindStrinExact.

Diseñar la lista

Cargue la aplicación VentanaMarco, y añada una nueva caja de diálogo como se muestra.

De tal forma que cuando seleccione un elemento de la lista y pulse el botón Aceptar, muestre su contenido en un diálogo predefinido. La clase de diálogo será un objeto de la clase DlgListaDesplegable derivada de Form.

Objeto Propiedad ValorCaja de Diálogo Name

TextFormBorderStyleMaximizeBox

DlgListaDesplegableLista desplegableFixedDialogFalse

Lista desplegable Name ldLista1Botón de pulsación Name

TextbtAceptar&Aceptar

Botón de pulsación NameText

btAñadirAña&dir

Botón de pulsación Name btBorrar

Page 14: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Text &BorrarPara mostrar este dialogo desde el menú Diálogos de la clase VentanaMarco, añada al mismo una orden Lista desplegable.

Private Sub DialogoListaDesplegable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DialogoListaDesplegable.Click Dim Dlg As DlgListaDesplegable = New DlgListaDesplegable Dlg.ShowDialog() End Sub

Iniciar Lista.

Los elementos de la lista pueden ser cadenas de caracteres, imágenes o cualquier otro elemento capaz de pintarse a sí mismo.

Acceder al elemento seleccionado.

Se utiliza el método SelectedItem de la clase ComboBox. Se utiliza el controlador de eventos Click del botón aceptar.

Private Sub btAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAceptar.Click If (ldLista1.SelectedIndex < 0) Then Return Dim elementoSeleccionado As Object elementoSeleccionado = ldLista1.SelectedItem MsgBox(elementoSeleccionado) End Sub

Este método será invocado cuando el usuario haga click en el botón btAcpetar.

Elementos de una lista desplegable

La colección Items de un objeto ComboBox se corresponde con los elementos mostrados por esa lista. Esta colección es de la clase ComboBox.ObjectCollection. Por lo tanto, las operaciones de la colección Items se reflejaran automáticamente en la lista. Estas operaciones se pueden resumir en: añadir (Add o AddRange), insertar (Insert) o quitar uno o más elementos de la lista (Remove, RemoveAt, o Clear).

Page 15: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Para realizar las operaciones anteriores se hará lo siguiente:

1. Eliminar el controlador del evento Load del dialogo DlgListaDesplegable.2. Al botón Añadir asígnele un controlador de eventos Click como se muestra:

Private Sub btAñadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAñadir.Click Dim elemento As String elemento = InputBox("Introducir elemento de la lista:") ' Añadir el elemento If (elemento.Length <> 0) Then ldLista1.Items.Add(elemento) End If End Sub

3. En el botón borrar, asignar un controlador de eventos Click, como se muestra a continuación.Private Sub btBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBorrar.Click If (ldLista1.SelectedIndex < 0) Then Return ldLista1.Items.RemoveAt(ldLista1.SelectedIndex) End Sub

La propiedad SelectedIndex de ComboBox devuelve el índice del elemento seleccionado en la lista (el primer índice es el cero; -1 si no hay ningún elemento seleccionado) y el método RemoveAt de ComboBox.OjectCollection elimina el elemento de la lista índice especificado.

Page 16: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Controles de Rango Definido

Se trata de controles que definen un valor entero perteneciente a un rango previamente definido. A este grupo pertenecen los controles VScrollBar, HScrllBar y progressBar.

Todos estos controles de biblioteca .NET definen básicamente las siguientes propiedades:

Minimum – indica el extremo inferior del rango de valores. Maximum – indica el extremo superior del rango de valores. Value – indica el valor del rango actualmente seleccionado.

Cuando se modifica la propiedad value, el control correspondiente, excepto ProgressBar, generara un evento ValueChanged.

ScrollBar

Es una barra de desplazamiento horizontal o vertical. Se trata de un control que tiene un cuadrado que se desplaza a lo largo de la misma para fijar un valor. ScrollBar es la clase base de VscrollBar y HScrollBar, clases que dan lugar a las barras de desplazamiento vertical y horizontal, respectivamente.

Como ejercicio se añadirá al menú Diálogos de la aplicación VentanaMarco, un nuevo elemento “Controles de rango definido”, para que cuando el usaurio haga clic cobre ella se muestre el siguiente cuadro de diálogo.

La actualización del contador se hará cada 10 * k milisegundos, donde k será un valor entre 1 y 150 proporcionado por la barra de de desplazamiento que se muestra en la figura; la velocidad de conteo será menor cuanto más a la derecha este el cuadrado de desplazamiento.

Cuadro de Dialogo Controles de Rango Definido con los controles que se especifican en la siguiente tabla.

Page 17: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Objeto Propiedad ValorCaja de Diálogo Name

TextFormBorderStyleMaximizeBox

DlgRangosControles de rango definidoFixedDialogFalse

Barra de Desplazamiento

NameMinimumMaximumValueLargeChangeSmallChange

bdhIntervalo115080101

Etiqueta NameAutosizeBorderStyleTextTextAlign

etContadorFalseFixed3D0MiddleCenter

Para mostrar este diálogo desde el menú de diálogos se debe añadir el siguiente código

Private Sub DialogoRangos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DialogoRangos.Click Dim Dlg As DlgRangos = New DlgRangos Dlg.ShowDialog() End Sub

Para que necesitamos la barra de desplazamiento, para variar el retardo del temporizador entre 10 x 1 y 10 x 150 milisegundos con el fin de con el fin de variar la velocidad de conteo.

Añada a la clase DlgRangos un temporizador y el controlador que responda a su evento Elapsed. Este método tiene que actualizar el valor de la etiqueta etContador

Private Sub Temporizador_Elapsed(ByVal sender As System.Object, _ ByVal e As System.Timers.ElapsedEventArgs) _ Handles Temporizador.Elapsed Dim inc As Integer = 1 ' incremento ' La cuenta es hasta 1000: carga 'Dim tpHecho As Integer = 0, carga As Integer = 1000 'Dim cuenta As Integer = Convert.ToInt32(etContador.Text) + inc 'etContador.Text = Convert.ToString(cuenta) etContador.Text = (Convert.ToInt32(etContador.Text) + 1).ToString ' Mostrar progreso 'tpHecho = CInt(CSng(cuenta) / carga * 100) 'If (tpHecho > bpCuenta.Value) Then bpCuenta.Value = tpHecho 'If (cuenta = carga) Then Temporizador.Stop() End Sub

Page 18: migoav.files.wordpress.com€¦  · Web viewAgregue un formulario de diálogo al proyecto y asígnele el nombre de . DlgPalabraDePaso.Como titulo llevara “Palabra de Paso” Las

Añada a la clase DlgRangos un controlador de eventos ValueChanged que responda que responda a las variaciones del cuadrado de desplazamiento que el usuario haga sobre la barra de desplazamiento y compételo como se indica:

'Private Sub bdhIntervalo_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bdhIntervalo.ValueChanged ' Temporizador.Interval = 10 * desIntervalo.Value 'End Sub

El valor inicial para la propiedad Interval lo podemos establecer en el método que responda al evento Load del formulario:

Private Sub DlgRangos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Temporizador.Interval = 10 * desIntervalo.Value End Sub