La razón de ser

La vuelta a la Patria es un compromiso...la responsabilidad social...el aporte generoso...el modelo...la vida misma.

PARTE 02 Aprendiendo Visual Basic 2010 Express

01/Abril/2012

Ejercicio Nº 6

Desarrollar la sumadora de dos sumandos mostrada a continuación:





Pasos:

1. Insertar siete etiquetas, dos cajas de texto y un botón



2. Diseñar el formulario a satisfacción con el menú de propiedades
    haciendo click con el botón derecho en cada control.



 3. Generar el código que se muestra a continuación





 
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As  _
                              System.EventArgs) Handles Button1.Click

        Dim num1, num2, product As Single

        On Error GoTo corrector
        num1 = TextBox1.Text
        num2 = TextBox2.Text

        product = num1 + num2

        Label7.Text = Format(product, "FIXED")

        Exit Sub 'Para no ingresar a la rutina de error cuando los datos _
        'son(válidos)

corrector:
        Label7.Text = "Dato no numérico"
    End Sub

    Function s1() As String
        s1 = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
            CurrencyDecimalSeparator()
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As  _
                           System.EventArgs) Handles MyBase.Load
        Label3.Text = "99999" & s1() & "99"
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox1.KeyPress
        Dim h As Integer
        Dim cadena As String


        If InStr(1, "0123456789-" & Chr(8) & s1(), e.KeyChar) = 0 Then
            e.KeyChar = ""
        Else
            h = Len(TextBox1.Text) ' Longitud de cadena

            cadena = TextBox1.Text ' Almacena lo escrito en el textbox,
            ' sin incluir el último caracter

            For p = 1 To h
                If Mid(cadena, p, 1) = s1() Then ' Si ya hay UN SEPARADOR
                    'DECIMAL en la cadena...
                    If e.KeyChar = s1() Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

            For p = 1 To h
                If Mid(cadena, p, 1) = "-" Then ' Si ya hay un signo -
                    'en la cadena...
                    If e.KeyChar = "-" Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

        End If
    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As  _
                                  System.Windows.Forms.KeyPressEventArgs) _
                                     Handles TextBox2.KeyPress
        Dim h As Integer
        Dim cadena As String


        If InStr(1, "0123456789-" & Chr(8) & s1(), e.KeyChar) = 0 Then
            e.KeyChar = ""
        Else
            h = Len(TextBox2.Text) ' Longitud de cadena

            cadena = TextBox2.Text ' Almacena lo escrito en el textbox,
            'sin incluir el último caracter

            For p = 1 To h
                If Mid(cadena, p, 1) = s1() Then ' Si ya hay UN SEPARADOR
                    'DECIMAL en la cadena...
                    If e.KeyChar = s1() Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

            For p = 1 To h
                If Mid(cadena, p, 1) = "-" Then ' Si ya hay un signo -
                    'en la cadena...
                    If e.KeyChar = "-" Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

        End If
    End Sub

End Class

Observaciones:

1. Se usó una función para obtener el separador de decimales
    Function s1() As String

2. Se validó el ingreso de texto a la caja de texto Nº 2.

   
Ejercicio Nº 7

Desarrollar utilizando solamente un textbox y con todos los casos posibles de evaluación, la sumadora que se muestra a continuación:

Observación:

Únicamente se aceptará un solo signo + (de la suma)  en la línea.









Pasos:

1. Crear el formulario con una caja de texto
2. Crear el módulo de variables públicas con Proyecto/Agregar Nuevo Elemento/Módulo



'**********
Module variablesGLOBALES
    Public cadena As String ' Cadena que se ingresará en la caja de texto
    ' y que variará continuamente.

    Public signo As String = "+" 'Alternará a = para el segundo sumando

    Public menos As String = "-" ' Para chequear que los sumandos tengan
    ' signo - solamente a la izquierda

    Public posicion_mas As Integer = 0 'Posición que separa los sumandos
End Module

'*********

3. Generar el código

         



 


 


Public Class Form1

    Function s1() As String
        ' Obtención del separador de decimales de la cultura corriente
        s1 = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
            CurrencyDecimalSeparator()
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As  _
                       System.EventArgs) Handles MyBase.Load
        TextBox1.Text = "" 'Coloca el cursor en el inicio de la
        ' caja de texto
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox1.KeyPress
        Dim h As Integer
        Dim num1, num2, product As Single

        If signo = "+" Then
            cadena = TextBox1.Text 'Significa que estamos ingresando
            ' el primer sumando
        Else '0
            cadena = Mid(TextBox1.Text, posicion_mas)
            ' Representa el segundo sumando incluyendo el signo +

        End If

        If UCase(e.KeyChar) <> "C" And e.KeyChar <> Chr(8) Then
            ' Si la tecla pulsada es distinta de C para borrar ó
            ' backspace

            If InStr(1, "0123456789" & menos & s1() & signo, e.KeyChar) = 0 Then
                e.KeyChar = "" ' solo e permiten caracters válidos
            Else '1

                h = Len(cadena) ' Longitud de cadena (no incluye el último CHAR
                ' ingresado

                If e.KeyChar <> "=" Then 'Si es = se procede a sumar

                    If e.KeyChar = "-" Then

                        menos = "" 'Permitir un solo - al inicio del sumando
                        If (h > 0 And posicion_mas = 0) Then
                            e.KeyChar = ""
                        End If

                        If (h > 1 And posicion_mas > 0) Then
                            e.KeyChar = ""
                        End If

                    End If

                    If e.KeyChar = "+" Then

                        signo = "="
                        menos = "-"
                        posicion_mas = h + 1

                    Else

                        For p = 1 To h

                            If Mid(cadena, p, 1) = s1() Then ' Si ya hay UN 
                                ' SEPARADOR DECIMAL en la cadena...
                                If e.KeyChar = s1() Then
                                    e.KeyChar = "" ' anula el ingreso segundo
                                    ' separador de decimales
                                    Exit For
                                End If
                            End If
                        Next p

                        For p = 1 To h
                            If Mid(cadena, p, 1) = "-" Then ' Si ya hay un signo - 
                                'en la cadena...
                                If e.KeyChar = "-" Then
                                    e.KeyChar = "" 'anula el ingreso del segundo -
                                    Exit For
                                End If
                            End If
                        Next p

                    End If

                Else

                    cadena = TextBox1.Text
                    ' Obtención del primer sumando

                    If posicion_mas - 1 >= 2 Then
                        If Mid(TextBox1.Text, posicion_mas - 1, 1) = "-" Then
                            num1 = Mid(TextBox1.Text, 1, posicion_mas - 2)
                        Else
                            num1 = Mid(TextBox1.Text, 1, posicion_mas - 1)
                        End If

                    Else

                        If Mid(TextBox1.Text, 1, 1) = "-" Then
                            num1 = 0

                        Else

                            If Mid(TextBox1.Text, 1, 1) = "+" Then
                                num1 = 0
                            Else
                                num1 = Mid(TextBox1.Text, 1, 1)

                            End If

                        End If

                    End If

                    e.Handled = True 'para que no ingrese el =
                    h = Len(TextBox1.Text) + 1

                    'Obtención del segundo sumando
                    If h - posicion_mas >= 3 Then
                        If Mid(TextBox1.Text, Len(TextBox1.Text), 1) = "-" Then
                            num2 = Mid(TextBox1.Text, posicion_mas + 1, _
                                       h - posicion_mas - 2)
                        Else
                            num2 = Mid(TextBox1.Text, posicion_mas + 1)

                        End If


                    Else
                        If h - posicion_mas = 2 Then
                            If Mid(TextBox1.Text, posicion_mas + 1, 1) = "-" Then
                                num2 = 0
                            Else
                                num2 = Mid(TextBox1.Text, posicion_mas + 1, 1)
                            End If
                        Else
                            num2 = 0
                        End If


                    End If


                    product = num1 + num2
                    TextBox1.Text = cadena + " = " + Format(product, "FIXED") + _
                        " Pulse c para borrar"

                End If
            End If '
        Else

            If UCase(e.KeyChar) = "C" Then
                e.KeyChar = ""
                signo = "+"
                menos = "-"
                TextBox1.Text = ""
            Else
                If signo = "=" Then
                    If Mid(TextBox1.Text, Len(TextBox1.Text), 1) = "+" Then

                        signo = "+"
                        menos = "-"
                        e.Handled = False

                    End If
                Else

                End If

            End If

        End If

    End Sub
End Class

Ejercicio Nº 8

Obtener el máximo de cuatro números dados






1. Colocar en el formulario:
    2 labels
    4 cajas de texto
    1 botón

2. Configurar el textbox1 para que el cursor se coloque en posición de edición
    Colocar 0 enTabIndex


3. Ingresar el código






Public Class Form1

    Function s2() As Single
        ' Devuelve 0 si la tecla pulsada no es numérica
        s2 = InStr(1, "0123456789", teclado)
    End Function

    Function Maximo(ByVal ParamArray arreglo() As Object) As Object
        'Devuelve el número máximo de entre una lista

        Dim indice As Integer
        Dim temporal As Object

        temporal = arreglo(LBound(arreglo))

        For indice = LBound(arreglo) + 1 To UBound(arreglo)
            If arreglo(indice) > temporal Then
                temporal = arreglo(indice)
            End If
        Next indice

        Maximo = temporal

    End Function

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox1.KeyPress

        teclado = e.KeyChar
        If s2() = 0 Then
            e.KeyChar = ""
        End If
    End Sub
    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox2.KeyPress
        '*******
        teclado = e.KeyChar
        If s2() = 0 Then
            e.KeyChar = ""
        End If
    End Sub
    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox3.KeyPress

        teclado = e.KeyChar
        If s2() = 0 Then
            e.KeyChar = ""
        End If
    End Sub
    Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As  _
                                System.Windows.Forms.KeyPressEventArgs) _
                                      Handles TextBox4.KeyPress

        teclado = e.KeyChar
        If s2() = 0 Then
            e.KeyChar = ""
        End If
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As  _
                              System.EventArgs) Handles Button1.Click

        Dim num1 As Single, num2 As Single, num3 As Single, num4 As Single
        Dim respuesta As Single


        num1 = TextBox1.Text
        num2 = TextBox2.Text
        num3 = TextBox3.Text
        num4 = TextBox4.Text

        respuesta = Maximo(num1, num2, num3, num4)

        Label2.Text = respuesta

    End Sub
End Class


Ejercicio Nº 9

Desarrollar la carta de pago   que se muestra a continuación:







Código



Module Module1
    Public luz As Integer = 100

    Public agua As Integer = 200

    Public telefono As Integer = 300
End Module





Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
                           As System.EventArgs) Handles MyBase.Load

        Label1.Text = luz
        Label2.Text = agua
        Label3.Text = telefono
        Label5.Text = "Agua"
        Label6.Text = "Luz"
        Label7.Text = "Teléfono"
        Label8.Text = "Total"
        Label9.Text = "Relación de gastos"
        Button1.Text = "Sumar"

        CheckBox1.Text = ""
        CheckBox2.Text = ""
        CheckBox3.Text = ""


    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
                              As System.EventArgs) Handles Button1.Click


        Dim sum As Integer = 0


        If CheckBox1.Checked = True Then
            sum += luz
        End If

        If CheckBox2.Checked = True Then
            sum += agua
        End If

        If CheckBox3.Checked = True Then
            sum += telefono
        End If


        Label4.Text = sum.ToString("n")
        'Label4.Text = Format(sum, "FIXED")
    End Sub

End Class

Ejercicio Nº 10

Agregar un botón "Cancelar" para eliminar los checkings.



Código




Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
                           As System.EventArgs) Handles MyBase.Load

        Label1.Text = luz
        Label2.Text = agua
        Label3.Text = telefono
        Label4.Text = ""

        Label5.Text = "Agua"
        Label6.Text = "Luz"
        Label7.Text = "Teléfono"
        Label8.Text = "Total"
        Label9.Text = "Relación de gastos"
        Button1.Text = "Sumar"
        Button2.Text = "Cancelar"

        CheckBox1.Text = ""
        CheckBox2.Text = ""
        CheckBox3.Text = ""


    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
                              As System.EventArgs) Handles Button1.Click


        Dim sum As Integer = 0


        If CheckBox1.Checked = True Then
            sum += luz
        End If

        If CheckBox2.Checked = True Then
            sum += agua
        End If

        If CheckBox3.Checked = True Then
            sum += telefono
        End If


        Label4.Text = sum.ToString("n")
        'Label4.Text = Format(sum, "FIXED")
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click

        Label4.Text = ""
        CheckBox1.Checked = False
        CheckBox2.Checked = False
        CheckBox3.Checked = False

    End Sub
End Class


Ejercicio Nº  11

Implementar el formulario siguiente:










 Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
                           As System.EventArgs) Handles MyBase.Load

        Label1.Text = "Datos equipo: Vuelta al Cotopaxi"

        Label2.Text = ""

        Button1.Text = "Confirmar"

        GroupBox1.Text = "Categoría"

        GroupBox2.Text = "Color"

        GroupBox3.Text = "Carpa para dormir"

        RadioButton1.Text = "Novato"

        RadioButton2.Text = "Élite"

        RadioButton3.Text = "Master"

        RadioButton4.Text = "Amarillo"

        RadioButton5.Text = "Azul"

        RadioButton6.Text = "Rojo"

        RadioButton7.Text = "Individual"

        RadioButton8.Text = "Doble"

        RadioButton9.Text = "Colectiva"

    End Sub
    '***************************

    Dim Dato_equipo As String
    Dim Dato_color As String
    Dim dato_carpa As String

    Private Sub RadioButton1_CheckedChanged(ByVal sender As  _
                System.Object, ByVal e As System.EventArgs) _
                          Handles RadioButton1.CheckedChanged
        Dato_equipo = "Equipo Novato"
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As  _
              System.Object, ByVal e As System.EventArgs) _
                      Handles RadioButton2.CheckedChanged
        Dato_equipo = "Equipo Élite"
    End Sub

    Private Sub RadioButton3_CheckedChanged(ByVal sender As  _
                                    System.Object, ByVal e _
      As System.EventArgs) Handles RadioButton3.CheckedChanged
        Dato_equipo = "Equipo Master"
    End Sub

    Private Sub RadioButton4_CheckedChanged(ByVal sender As  _
                                    System.Object, ByVal e _
       As System.EventArgs) Handles RadioButton4.CheckedChanged
        Dato_color = "Amarillo"
    End Sub

    Private Sub RadioButton5_CheckedChanged(ByVal sender As  _
                                    System.Object, ByVal e _
       As System.EventArgs) Handles RadioButton5.CheckedChanged
        Dato_color = "Azul"
    End Sub

    Private Sub RadioButtom6_CheckedChanged(ByVal sender As  _
                                    System.Object, ByVal e _
    As System.EventArgs) Handles RadioButton6.CheckedChanged
        Dato_color = "Rojo"
    End Sub
    '**********************

    Private Sub RadioButton7_CheckedChanged(ByVal sender As  _
                                    System.Object, ByVal e _
     As System.EventArgs) Handles RadioButton7.CheckedChanged
        dato_carpa = "Individual"
    End Sub

    Private Sub RadioButton8_CheckedChanged(ByVal sender As  _
                                System.Object, ByVal e As  _
      System.EventArgs) Handles RadioButton8.CheckedChanged
        dato_carpa = "Doble"
    End Sub

    Private Sub RadioButtom9_CheckedChanged(ByVal sender As  _
                                System.Object, ByVal e _
      As System.EventArgs) Handles RadioButton9.CheckedChanged
        dato_carpa = "Colectiva"
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
                              As System.EventArgs) Handles Button1.Click
        If Len(Dato_equipo) > 0 And Len(Dato_color) And _
            Len(dato_carpa) > 0 Then
            Label2.Text = "Equipo: " & Dato_equipo + " " + "Color: " + _
                Dato_color + " " + "Carpa: " + dato_carpa
        Else
            Label2.Text = "Datos incompletos"
        End If

    End Sub

End Class

Ejercicio Nº  12

Implementar el formulario siguiente:









Con las funcionalidades siguientes:

1.  Cada vez que pulse  "Anexar registros"  se anexe una fila (HOLA, mi,  amor)
2.  Cada vez que pulse "Celda corriente" responda con:
     Número de filas
     Número de columnas
     Coordenadas de la celda corriente
3.  Al pulsar "Salir", salga de la ejecución

PASOS:

1. Ingresar en el formulario
    8 etiquetas
    3 botones
    1 datagridview

2. Con "propiedades" anexar las columas (click con el botón derecho sobre el grid)
    columna0
    columna1
    columna2

3. Ingresar el código siguiente: