You are on page 1of 40

Capitulo XI

INDICE

CAPITULO XI

MessageBox Variables de Tipo MsgBoxResult Tipos Funciones Tipo Cadena IF THEN - ELSE Ejercicio 71 Ejercicio 72 InputBox Ejercicio 73 Format Ejercicio 74 Ejercicio 75 SELECT CASE Ejercicio 76 Ejercicio 77 Ejercicio 78 Ejercicio 79 Funciones Pblicas Ejercicio 80 Clases y NameSpace en un Modulo Ejercicio 81 Ejercicio 82 Funcin Shell Ejercicio 83 Despedida 38 36 35 34 30 30 28 28 26 23 21 19 19 17 16 15 12 11 06 03 03 02 01 02

01

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

MSGBOX

El MSGBOX es una ventana que nos muestra un mensaje en el centro de la pantalla. Su sintaxis es la siguiente:

MsgBox(Mensaje, Tipo de Mensaje, Titulo)

Por ejemplo:

MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.YesNo, "Sistema")

El mensaje que nos mostrara ser el siguiente:

Tipo de Mensaje No No Abortar, Reintentar, Ignorar (Desactivado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar, Ayuda (Activado) Aceptar (Activado) Aceptar (Activado y al lado Izquierdo) Aceptar (Activado) Aceptar, Cancelar (Activado) Aceptar (Activado) Aceptar (Activado) Reintentar, Cancelar (Activado) Aceptar (Activado) Icono en el Titulo Si, No (Desactivado) Si, No, Cancelar (Activado)

Icono

Botones (Botn Cerrar)

No No No

No No No No No

No No No No No

Joel Martin Chuco Marrufo 1

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Variable tipo MsgBoxResult

La variable tipo MsgBoxResult, almacena los resultados que se obtenga mediante un Message Box, que despus no sirva compararala y ejecutar instrucciones, por ejemplo:

Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir?", MsgBoxStyle.YesNo, "Sistema") If Resp = MsgBoxResult.Yes Then Me.Close() End If

Explicacin:

Primero declaramos una variable Resp de tipo MsgBoxResult, esta variable almacena el valor devuelto del mensaje, si el usuario responde SI, este valor que es verdadero (True) va a ser comparado con la siguiente instruccin IF que compara la variable Resp, que seria mas o menos as: Si la variables Resp tienes almacenado el valor SI, cerrara la ventana, sino, no har ninguna instruccin.

FUNCIONES TIPO CADENA

Una cadena es un dato de tipo String (Carcter); es decir se refiere a letras o letras y nmeros, ahora veremos las funciones de cadenas mas utilizadas y posteriormente realizaremos una aplicacin para que les quede mas claro, sobre las funciones de cadena.

Right: Obtiene de una cadena, una cantidad de caracteres empezando por la derecha: Sintaxis; Microsoft.VisualBasic.Right(Cadena,N) Left: Obtiene de una cadena, una cantidad de caracteres empezando por la izquierda: Sintaxis; Microsoft.VisualBasic.Left(Cadena,N) Mid: Obtiene de una cadena, una cantidad de caracteres a partir de una posicin determinada: Sintaxis; Microsoft.VisualBasic.Mid(Cadena,N) Len: Obtiene la longitud de una cadena, es decir la cantidad de caracteres que contiene incluyendo los espacios en blanco: Sintaxis; Len(Cadena) Trim: Quita los espacios en blanco al final de una cadena: Sintaxis; Trim(Cadena) RTrim: Quita los espacios en blanco al final de una cadena: Sintaxis; RTrim(Cadena) LTrim: Quita los espacios en blanco al inicio de una cadena: Sintaxis; LTrim(Cadena) UCase: Convierte una cadena en maysculas: Sintaxis; UCase(Cadena) LCase: Convierte una cadena en minsculas: Sintaxis; LCase(Cadena) StrConv: Convierte una cadena en 3 formas diferentes, en maysculas = 1, minsculas = 2, la primera letra de cada palabra en maysculas = 3 : Sintaxis; StrConv(Cadena,Valor) InStr: Obtiene un nmero que indica la posicin de una subcadena dentro de una cadena: Sintaxis; InStr(Cadena,SubCadena)

Joel Martin Chuco Marrufo 2

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

IF - THEN - ELSE

Como ya hemos visto antes esta instruccin condicional, en las consolas de aplicacin, ahora veremos en las aplicaciones de ventanas, que por cierto no cambian nada, ahora veremos unos cuantos ejercicios usando el IF y el MessageBox.

71. Ahora desarrollaremos nuevamente el ejercicio anterior (62).

txtNombre

txtDireccion

txtTelefono

txtCE

txtObservaciones

btnNuevo

btnFinalizar

Joel Martin Chuco Marrufo 3

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Esta aplicacin deber tener las siguientes caractersticas:

Al ejecutar la aplicacin el botn Nuevo Alumno debe estar desactivado. Slo se debe activar cuando comience a ingresar el nombre del alumno. Cuando el usuario ingrese un campo y pulse Enter, el cursor debe pasar automticamente al siguiente campo. Al hacer clic en el botn finalizar se debe mostrar un mensaje de advertencia. Las instrucciones de este botn se deben ejecutar cuando el usuario pulse la tecla Esc.

txtNombre (Evento KeyPress)

If Asc(e.KeyChar) = 13 Then Me.txtDireccion.Focus() End If

txtDireccion (Evento KeyPress)

If Asc(e.KeyChar) = 13 Then Me.txtTelefono.Focus() End If

txtTelefono (Evento KeyPress)

If Asc(e.KeyChar) = 13 Then Me.txtCE.Focus() End If

txtCE (Evento KeyPress)

If Asc(e.KeyChar) = 13 Then Me.txtObservaciones.Focus() End If

frmEjercicio71 (Evento FormClosing)

Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.YesNo, "Sistema") If Resp = MsgBoxResult.No Then e.Cancel = True End If

frmEjercicio71 (Evento Load)

Me.btnNuevo.Enabled = False

Joel Martin Chuco Marrufo 4

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnFinalizar (Evento Click)

Me.Close()

btnNuevo (Evento Click)

Me.txtCE.Text = "" Me.txtDireccion.Text = "" Me.txtNombre.Text = "" Me.txtObservaciones.Text = "" Me.txtTelefono.Text = "" Me.txtNombre.Focus()

txtNombre (Evento TextChanged)

If Trim(Me.txtNombre.Text) = "" Then Me.btnNuevo.Enabled = False Else Me.btnNuevo.Enabled = True End If

Para que se active o realice las instrucciones que se encuentren en el botn Finalizar, con solo presionar Esc, tendrn que especificar CancelButton en la propiedad del formulario, indicando el botn btnFinalizar.

Explicacin

Seguro se estarn haciendo algunas preguntas como lo son: e.KeyChar, e.Cancel, Asc, ahora les explico:

e.KeyChar: Esta instruccin nos devuelve el carcter que ha sido digitado en ese momento, por ejemplo si digitamos la letra a, esta instruccin nos devuelve el valor de a pero como carcter. Asc: Esta funcin convierte cualquier carcter enviado en un cdigo ASCII , siguiendo del ejemplo anterior, ya que e.KeyChar tiene el carcter de a, si esto lo enviamos a la funcin Asc, quedara mas o menos as: Asc(e.KeyChar), esta instruccin nos devolvera el valor de 97, porq?, wueno el valor de a en cdigo ASCII es 97, as de simple. e.Cancel: Esta instruccin nos permite cancelar cualquier evento que se este realizando, por ejemplo si estamos cerrando el formulario, podemos indicarle que lo cancele, envindole o instan cindole un valor verdadero, para la cancelacin del evento.

Joel Martin Chuco Marrufo 5

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

72. La siguiente aplicacin nos ingresar los apellidos y nombres, fecha de ingreso, turno y promedio de un alumno. Este programa debe contar con las siguientes caractersticas:

El primer carcter de cada nombre o apellido debe convertirse en maysculas y el reto en minsculas. Se debe de verificar que la fecha ingresada sea correcta En el turno solo se debe aceptar las letras M, T y N. El promedio debe ser un nmero entre 0 y 20. Los botones Nuevo y Salir deben permanecer desactivados hasta que se ingresen todos los datos correctos.

txtApeNom

txtFecNac

btnNuevo

txtTurno btnSalir txtPromedio

Funcin Mayscula Esta funcin indica si la letra ingresada esta en mayscula.

Function Mayuscula(ByVal v As Integer) As Boolean If v >= 65 And v <= 90 Then Mayuscula = True Else Mayuscula = False End If End Function

Funcin Minscula Esta funcin indica si la letra ingresada esta en minscula.

Function Minuscula(ByVal v As Integer) As Boolean If v >= 97 And v <= 122 Then Minuscula = True Else Minuscula = False End If End Function

Joel Martin Chuco Marrufo 6

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Funcin Nmero Esta funcin indica si el carcter ingresado es un nmero.

Function Numero(ByVal v As Integer) As Boolean If v < 48 Or v > 57 Then Numero = False Else Numero = True End If End Function

Funcin Especial Indica si a ingresado una vocal con tilde, la letra o o pulso ENTER, la barra espaciadora o de retroceso (BackSpace).

Function Especial(ByVal v As Integer) As Boolean If v = 13 Or v = 32 Or v = 8 Or v = 225 Or v = 233 Or v = 237 Or v = 243 Or v = 250 Or v = 241 Or v = 209 Then Especial = True Else Especial = False End If End Function

Funcin Ingresados Esta funcin verifican si todos lo datos han sido ingresados correctamente.

Sub Ingresados() If Trim(Me.txtApeNom.Text) <> "" And IsDate(Me.txtFecNac.Text) And Trim(Me.txtTurno.Text) <> "" And Trim(Me.txtPromedio.Text) <> "" Then Me.btnNuevo.Enabled = True Me.btnSalir.Enabled = True Else Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End Sub

Funcin Limpiar Esta funcin limpia los controles TextBox.

Sub Limpiar() Me.txtApeNom.Text = "" Me.txtFecNac.Text = "" Me.txtPromedio.Text = "" Me.txtTurno.Text = "" Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False Me.txtApeNom.Focus() End Sub

Joel Martin Chuco Marrufo 7

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

txtApeNom (Evento KeyPress)

Static anteriorespacio As Boolean If Asc(e.KeyChar) = 13 Then Me.txtFecNac.Focus() End If If Asc(e.KeyChar) = 32 Then anteriorespacio = True Else If Mayuscula(Asc(e.KeyChar)) Or Minuscula(Asc(e.KeyChar)) Or Especial(Asc(e.KeyChar)) Then If Trim(Me.txtApeNom.Text) = "" Or anteriorespacio Then REM Convierte a Mayuscula e.KeyChar = UCase(e.KeyChar) Else REM Convierte a Minuscula e.KeyChar = LCase(e.KeyChar) End If anteriorespacio = False Else MsgBox("Debe de Ingresar slo Letras", MsgBoxStyle.Information, "Cuidado") e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End If

txtFecNac (Evento KeyPress)

If Asc(e.KeyChar) = 13 Then Me.txtTurno.Focus() End If

txtFecNac (Evento LostFocus)

If IsDate(Me.txtFecNac.Text) Then Ingresados() Else MsgBox("Debe de Ingresar una Fecha Correcta", MsgBoxStyle.Information, "Cuidado") Me.txtFecNac.SelectionStart = 0 Me.txtFecNac.SelectionLength = Len(Me.txtFecNac.Text) Me.txtFecNac.Text = Me.txtFecNac.Text Me.txtFecNac.Focus() End If

Joel Martin Chuco Marrufo 8

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

frmEjercicio72 (Evento FormClosing)

Dim Resp As MsgBoxResult Resp = MsgBox("Esta Seguro de Salir", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then REM Si respondio que NO e.Cancel = True End If

frmEjercicio72 (Evento Load)

Limpiar()

txtTurno (Evento KeyPress)

Dim Letra As String If Asc(e.KeyChar) = 13 Then Me.txtPromedio.Focus() Else Letra = UCase(e.KeyChar) If Letra = "M" Or Letra = "T" Or Letra = "N" Or Asc(e.KeyChar) = 8 Then REM Convierte la Letra a Mayusculas e.KeyChar = UCase(e.KeyChar) Else MsgBox("Debe Ingresar slo las Letras M,T o N", MsgBoxStyle.Information, "Error") REM Ignora el Carcter Ingresado e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End If

txtPromedio (Evento KeyPress)

If Numero(Asc(e.KeyChar)) Or Asc(e.KeyChar) = 8 Or Asc(e.KeyChar) = 13 Then Ingresados() Else MsgBox("Debe Ingresar Slo Nmeros", MsgBoxStyle.Information, "Cuidado") e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If

Joel Martin Chuco Marrufo 9

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

txtPromedio (Evento TextChanged)

If Val(Me.txtPromedio.Text) < 0 Or Val(Me.txtPromedio.Text) > 20 Then MsgBox("El Valor Debe Estar Entre 0 y 20", MsgBoxStyle.Information, "Error") Me.txtPromedio.SelectionStart = 0 Me.txtPromedio.SelectionLength = Len(Me.txtPromedio.Text) Me.txtPromedio.Text = Me.txtPromedio.SelectedText Me.txtPromedio.Focus() Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False Else Ingresados() End If

txtApeNom, txtTurno (Evento TextChanged)

Ingresados()

btnNuevo (Evento Click)

Limpiar()

btnSalir (Evento Click)

Me.Close()

En este ejercicio no casi nada que explicar en el cdigo, ya que es casi lo mismo que hemos usado en el ejercicio anterior, solo me queda dejarle una pequea tabla de cdigo ASCII que hemos usado.

De A a la Z = del 65 al 90 De a a la z = del 97 al 122 = 255, = 233, = 237, = 243, = 250, = 241, = 209 De 0 al 9 = del 48 al 57 ENTER = 13 BACKSPACE = 8 ESC = 27 Barra Espaciadora = 32

Joel Martin Chuco Marrufo 10

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

INPUTBOX

El INPUTBOX es una ventana que permite que el usuario pueda ingresar un dato. Su sintaxis es la siguiente:

InputBox(Mensaje, Titulo, Valor Pred., Columna, Fila)

Mensaje Es el mensaje que se desea mostrar cuando se pida el dato a ingresar. Titulo Es el titulo de la ventana. Valor Predeterminado Es el valor que se muestra en forma automtica para ser ingresado. Columna Es un valor que indica la posicin horizontal del formulario, donde se desea que se muestre la ventana. Fila Es un valor que indica la posicin vertical del formulario, donde se desea que se muestre la ventana.

Ejemplo:

Dim resp As String resp = InputBox("Ingrese el Nombre de la Persona", "Nuevo Registro", "Joel Martin Chuco Marrufo")

En este ejemplo hemos declarado una variable resp de tipo cadena, para poder almacenar el nombre que el usuario ingrese, tambin se puede obtener otro tipo de dato, ya sea nmero, fecha.

Joel Martin Chuco Marrufo 11

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

73. Este ejercicio cuenta el nmero de depsitos y retiros realizados por un cliente, adems almacena el total de los montos tanto de retiros como de depsitos efectuados incluyendo el saldo actual.

txtCliente

btnOk

txtMonto

btnDeposito

btnRetiro

lblCantDep lblTotalDep

btnNuevo

lblCantRet

lblTotalRet

btnSalir

lblSaldo

Joel Martin Chuco Marrufo 12

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Variables a nivel del formulario

Dim cd, cr As Integer Dim td, tr, saldo As Single

Funcion Limpia

Sub Limpia() cd = 0 cr = 0 td = 0 tr = 0 saldo = 0 Me.txtCliente.Text = "" Me.txtMonto.Text = "" Me.lblCantDep.Text = "" Me.lblCantRet.Text = "" Me.lblSaldo.Text = "" Me.lblTotalDep.Text = "" Me.lblTotalRet.Text = "" Me.btnOk.Visible = True Me.btnDeposito.Enabled = False Me.btnRetiro.Enabled = False Me.txtCliente.ReadOnly = False Me.txtMonto.ReadOnly = True Me.txtCliente.Focus() End Sub

frmEjercicio73 (Evento FormClosing)

Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacion", MsgBoxStyle.YesNo, "Banco El Amigo") If Resp = MsgBoxResult.No Then e.Cancel = True End If

frmEjercicio73 (Evento Load)

Call Limpia()

Joel Martin Chuco Marrufo 13

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnOk (Evento Click)

Me.txtCliente.ReadOnly = True Me.txtMonto.ReadOnly = False Me.btnOk.Visible = False Me.btnDeposito.Enabled = True Me.btnRetiro.Enabled = True REM Utilizamos un InputBox para ingresar el saldo inicial saldo = Val(InputBox("Monto de Apertura " + Chr(13) + Chr(13) + "La Cuenta se Apertura con cualquier monto ", "Nueva Cuenta", 350)) Me.lblSaldo.Text = CStr(saldo) td = saldo cd = 1 Me.lblCantDep.Text = CStr(cd) Me.lblTotalDep.Text = CStr(td) Me.txtMonto.Focus()

btnDeposito (Evento Click)

Dim deposito As Single deposito = CSng(Me.txtMonto.Text) td = td + deposito cd = cd + 1 Me.lblCantDep.Text = CStr(cd) Me.lblTotalDep.Text = CStr(td) saldo = CSng(Me.lblSaldo.Text) Me.lblSaldo.Text = CStr(saldo + deposito) Me.txtMonto.SelectionStart = 0 Me.txtMonto.SelectionLength = Len(Me.txtMonto.Text) Me.txtMonto.Focus()

btnRetiro (Evento Click)

Dim retiro As Single retiro = CSng(Me.txtMonto.Text) saldo = CSng(Me.lblSaldo.Text) If saldo < retiro Then MsgBox("La cantidad que desea retirar excede su saldo actual", MsgBoxStyle.Critical, "Disculpe") Me.txtMonto.Text = "" Me.txtMonto.Focus() Else tr = tr - retiro cr = cr + 1 Me.lblCantRet.Text = CStr(cr) Me.lblTotalRet.Text = CStr(tr) Me.lblSaldo.Text = CStr(saldo - retiro) End If Me.txtMonto.SelectionStart = 0 Me.txtMonto.SelectionLength = Len(Me.txtMonto.Text) Me.txtMonto.Focus()

Joel Martin Chuco Marrufo 14

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnNuevo (Evento Click)

Call Limpia()

btnSalir (Evento Click)

Me.Close()

FORMAT

Esta funcin format nos permite darle un formato a un dato, ya sea una fecha, nmero, hora, etc. Sus formatos mas utilizados son:

Formato devuelto 152,125.32 04 - May - 2006 04/05/06 Jueves, May 04 2006 02:49:35 pm 14:49:35 ###,##0.00 dd MMM - yyyy dd/mm/yy dddd, MMM d yyyy hh:mm:ss tt HH:mm:ss

Formato

Su sintaxis seria la siguiente:

Format(Variable,Formato)

Ejemplo:

Dim Numero As Double Numero = 100000/3 Me.Label1.Text = Format(Numero, "###,##0.00")

Y lo que nos mostrara el Label en la pantalla seria lo siguiente

33,333.33

Joel Martin Chuco Marrufo 15

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

74. Esta aplicacin nos permite ingresar el nombre del producto, precio anterior y precio actual, luego nos permite calcular el alza en soles y el alza en porcentajes. El alza en porcentaje es igual al alza en soles por 100 entre precio anterior.

txtProducto

txtPrecAn

txtPrecAct

lblAlzaS

lblAlzaP

btnNuevo

btnCalcular

btnSalir

Funcion Limpia

Sub Limpia() Me.txtPrecAct.Text = "" Me.txtPrecAnt.Text = "" Me.txtProducto.Text = "" Me.lblAlzaP.Text = "" Me.lblAlzaS.Text = "" Me.txtProducto.Focus() End Sub

frmEjercicio74 (Evento FormClosing)

Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacion", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then e.Cancel = True End If

Joel Martin Chuco Marrufo 16

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

frmEjercicio74 (Evento Load)

Call Limpia()

btnCalcular (Evento Click)

Me.lblAlzaS.Text = CStr(Val(Me.txtPrecAct.Text) - Val(Me.txtPrecAnt.Text)) Me.lblAlzaS.Text = Format(Val(Me.lblAlzaS.Text), "###,##0.00") Me.lblAlzaP.Text = CStr(Val(Me.lblAlzaS.Text) * 100 / Val(Me.txtPrecAnt.Text)) Me.lblAlzaP.Text = Format(Val(Me.lblAlzaP.Text), "###,##0.00") Me.lblAlzaP.Text = Me.lblAlzaP.Text + " %"

btnNuevo (Evento Click)

Call Limpia()

btnSalir (Evento Click)

Me.Close()

75. Esta aplicacin nos permite ingresar el nombre del profesor, el nmero de horas normales que ha trabajado y el nmero de horas extras, luego se debe calcular el total que se le debe pagar por el nmero de horas normales, el total por horas extras y el total a pagar. Si trabajo mas de 48 horas su pago por hora es de S/. 8.00 soles y S/. 7.00 en caso contrario. Por hora extra S/. 9.50.

txtNomProf

txtHT

txtHE

lblPH

btnCalcular

lblTHN btnNuevo

lblTHE

btnSalir

lblTP

Joel Martin Chuco Marrufo 17

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Funcion Limpia

Sub Limpia() Me.txtHE.Text = "" Me.txtHT.Text = "" Me.txtNomProf.Text = "" Me.lblPH.Text = "" Me.lblTHE.Text = "" Me.lblTHN.Text = "" Me.lblTP.Text = "" Me.txtNomProf.Focus() End Sub

frmEjercicio75 (Evento Load)

Call Limpia()

btnCalcular (Evento Click)

Dim PHN As Single PHN = IIf(Val(Me.txtHT.Text) > 48, 8.0, 7.0) Me.lblPH.Text = Format(PHN, "##0.00") Me.lblTHE.Text = Format(Val(Me.txtHE.Text) * 9.5, "###,##0.00") Me.lblTHN.Text = Format(Val(Me.txtHT.Text) * PHN, "###,##0.00") Me.lblTP.Text = Format(Val(Me.lblTHE.Text) + Val(Me.lblTHN.Text), "###,##0.00")

btnNuevo (Evento Click)

Call Limpia()

btnSalir (Evento Click)

Me.Close()

Joel Martin Chuco Marrufo 18

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

SELECT - CASE

Como ya hemos visto antes esta instruccin de seleccin, en las consolas de aplicacin, ahora veremos en las aplicaciones de ventanas, que por cierto no cambian casi nada, y utilizaremos las diversas sintaxis que existen, junto con funciones, clases etc

76. En esta aplicacin se debe de ingresar el nombre del un producto, su precio unitario y la cantidad comprada de dicho producto, luego se debe calcular y visualizar el sub Total, el descuento en porcentaje, el descuento en soles y el total a pagar. El descuento en porcentaje se depende del sub total, de acuerdo a la siguiente tabla.

SUBTOTAl 100 101 De 101.1 a 200 De 200.1 a 500 A partir de 500 2% 4% 6% 10 %

DESCUENTO %

txtProducto

txtPrecUnit

txtCantComp

btnCalcular

lblSubTotal btnNuevo lblDescP btnSalir lblDescS

lblTotal

Joel Martin Chuco Marrufo 19

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Funcion Limpia

Sub Limpia() Me.txtCantComp.Text = "" Me.txtPrecUnit.Text = "" Me.txtProducto.Text = "" Me.lblDescP.Text = "" Me.lblDescS.Text = "" Me.lblSubTotal.Text = "" Me.lblTotal.Text = "" Me.txtProducto.Focus() End Sub

frmEjercicio76 (Evento Load)

Call Limpia()

btnCalcular (Evento Click)

Dim Desc As Integer Me.lblSubTotal.Text = CStr(Val(Me.txtPrecUnit.Text) * Val(Me.txtCantComp.Text)) Select Case Val(Me.lblSubTotal.Text) Case 100, 101 : Desc = 2 Case 101.1 To 200 : Desc = 4 Case 200.1 To 500 : Desc = 6 Case Is > 500 : Desc = 10 Case Else : Desc = 0 End Select Me.lblDescP.Text = CStr(Desc) Me.lblDescS.Text = Format(Val(Me.lblSubTotal.Text) * Desc / 100, "###,##0.00") Me.lblTotal.Text = Format(Val(Me.lblSubTotal.Text) - Val(Me.lblDescS.Text), "###,##0.00") Me.lblSubTotal.Text = Format(Val(Me.lblSubTotal.Text), "###,##0.00")

btnNuevo (Evento Click)

Call Limpia()

btnSalir (Evento Click)

Me.Close()

Joel Martin Chuco Marrufo 20

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

77. En este programa se debe de ingresar el nombre del alumno, su nota nmero 1 y su nota nmero 2, al hacer clic en el botn obtener promedio se debe de visualizar: el promedio del alumno, una observacin que indica si el alumno esta aprobado o desaprobado, la cantidad de puntos que le faltan para aprobar, si esta desaprobado o los puntos para llegar a veinte en caso que este aprobado. Tambin se debe visualizar la nota cualitativa del alumno de acuerdo al promedio. Se debe de controlar que solo se ingresen notas entre 0 y 20.

SUBTOTAl Entre Entre Entre Entre Entre 0y5 5.1 y 10.4 10.5 y 14.4 14.5 y 17.4 17.5 y 20 Psimo Malo Regular Bueno Excelente

DESCUENTO %

txtAlumno

txtCurso

txtN1

btnOtro

txtN2

btnObtener

lblPromedio

btnSalir

lblObservacion

lblPuntos

lblCualidad

Joel Martin Chuco Marrufo 21

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Funcin Limpiar Esta funcin limpia los controles TextBox.

Sub Limpiar() Me.txtAlumno.Text = "" Me.txtCurso.Text = "" Me.txtN1.Text = "" Me.txtN2.Text = "" Me.lblCualidad.Text = "" Me.lblObservacin.Text = "" Me.lblPromedio.Text = "" Me.lblPuntos.Text = "" Me.txtAlumno.Focus() End Sub

frmEjercicio77 (Evento Load)

Limpiar()

txtN1 (Evento GotFocus)

Me.txtN1.SelectionStart = 0 Me.txtN1.SelectionLength = Len(Me.txtN1.Text)

txtN2 (Evento GotFocus)

Me.txtN2.SelectionStart = 0 Me.txtN2.SelectionLength = Len(Me.txtN2.Text)

txtN1 (Evento LostFocus)

If Not IsNumeric(Me.txtN1.Text) Or Val(Me.txtN1.Text) < 0 Or Val(Me.txtN1.Text) > 20 Then MsgBox("Solo Debe Ingresar Notas Entre 0 y 20", MsgBoxStyle.Information, "Cuidado") Me.txtN1.Focus() End If

txtN2 (Evento LostFocus)

If Not IsNumeric(Me.txtN2.Text) Or Val(Me.txtN2.Text) < 0 Or Val(Me.txtN2.Text) > 20 Then MsgBox("Solo Debe Ingresar Notas Entre 0 y 20", MsgBoxStyle.Information, "Cuidado") Me.txtN2.Focus() End If

Joel Martin Chuco Marrufo 22

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnObtener (Evento Click)

Me.lblPromedio.Text = CStr((Val(Me.txtN1.Text) + Val(Me.txtN2.Text)) / 2) If Val(Me.lblPromedio.Text) >= 10.5 Then Me.lblObservacin.Text = "Aprobado(a)" Me.lblPuntos.Text = "Le faltan " + CStr(20 - Val(Me.lblPromedio.Text)) + " puntos para tener 20" Else Me.lblObservacin.Text = "Desaprobado(a)" Me.lblPuntos.Text = "Le faltan " + CStr(11 - Val(Me.lblPromedio.Text)) + " puntos para aprobar" End If Select Case Val(Me.lblPromedio.Text) Case 0 To 5 : Me.lblCualidad.Text = "Psimo" Case 5.1 To 10.4 : Me.lblCualidad.Text = "Malo" Case 10.5 To 14.4 : Me.lblCualidad.Text = "Regular" Case 14.5 To 17.4 : Me.lblCualidad.Text = "Bueno" Case 17.5 To 20 : Me.lblCualidad.Text = "Excelente" End Select

btnOtro (Evento Click)

Limpiar()

btnSalir (Evento Click)

Me.Close()

78. En esta aplicacin se debe de ingresar el nombre y el ao de nacimiento de una persona y se tiene que visualizar: su edad, una observacin que indica si es mayor o menor de edad, Si es menor de edad se debe mostrar cuantos aos le faltan para se mayor de edad y si es mayor de edad se debe mostrar hace cuantos aos es mayor de edad. Tambin se debe mostrar la etapa de la persona teniendo en cuenta lo siguiente.

Edad 0 y 12 13 y 17 18 y 30 31 y 70 70 a mas Nio Adolescente Joven Adulto Anciano

Etapa

Joel Martin Chuco Marrufo 23

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

txtNombre btnResultados txtAoNac

lblEdad

btnNuevo

lblObservacion btnSalir

lblAos

lblEtapa

Funcion Limpia

Sub Limpia() Me.txtAoNac.Text = "" Me.txtNombre.Text = "" Me.lblAos.Text = "" Me.lblEdad.Text = "" Me.lblEtapa.Text = "" Me.lblObservacion.Text = "" Me.txtNombre.Focus() End Sub

frmEjercicio78 (Evento Load)

Call Limpia()

btnNuevo (Evento Click)

Call Limpia()

Joel Martin Chuco Marrufo 24

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnResultados (Evento Click)

If Not IsNumeric(Me.txtAoNac.Text) Then MsgBox("Ingrese un ao correcto", MsgBoxStyle.Information, "Error") Me.txtAoNac.SelectionStart = 0 Me.txtAoNac.SelectionLength = Len(Me.txtAoNac.Text) Me.txtAoNac.Focus() Exit Sub End If Me.lblEdad.Text = CStr(Val(Year(Now())) - Val(Me.txtAoNac.Text)) If Val(Me.lblEdad.Text) < 18 Then Me.lblObservacion.Text = "Es Menor de Edad" Me.lblAos.Text = "Le Falta " + CStr(18 - Val(Me.lblEdad.Text)) + " aos para ser mayor de edad" Else Me.lblObservacion.Text = "Es Mayor de Edad" Me.lblAos.Text = "Es mayor de edad " + CStr(Val(Me.lblEdad.Text) - 18) + " aos" End If Select Case Val(Me.lblEdad.Text) Case 0 To 12 : Me.lblEtapa.Text = "Nio" Case 13 To 17 : Me.lblEtapa.Text = "Adolescente" Case 18 To 30 : Me.lblEtapa.Text = "Joven" Case 31 To 70 : Me.lblEtapa.Text = "Adulto" Case Is > 70 : Me.lblEtapa.Text = "Anciano" End Select

btnSalir (Evento Click)

Me.Close()

Joel Martin Chuco Marrufo 25

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

79. Esta aplicacin es un ejemplo del uso de las funciones de cadena que ya hemos visto el concepto.

txtFrase

lblLongitud btnMuestra lblPrimero btnNuevo lblUltimo

lblSegSex

btnSalir

lblPosA lblMinusculas

lblMayusculas

lblSoloPrim

Funcion Limpia

Sub Limpia() Me.txtFrase.Text = "" Me.lblLongitud.Text = "" Me.lblMayusculas.Text = "" Me.lblMinusculas.Text = "" Me.lblPosA.Text = "" Me.lblPrimero.Text = "" Me.lblSegSex.Text = "" Me.lblSoloPrim.Text = "" Me.lblUltimo.Text = "" Me.txtFrase.Focus() End Sub

frmEjercicio79 (Evento Load)

Call Limpia()

Joel Martin Chuco Marrufo 26

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnNuevo (Evento Click)

Call Limpia()

btnMuestra (Evento Click)

Me.lblLongitud.Text = Len(Trim(Me.txtFrase.Text)) Me.lblPrimero.Text = Microsoft.VisualBasic.Left(Trim(Me.txtFrase.Text), 1) Me.lblUltimo.Text = Microsoft.VisualBasic.Right(Trim(Me.txtFrase.Text), 1) Me.lblSegSex.Text = Microsoft.VisualBasic.Mid(Trim(Me.txtFrase.Text), 2, 5) Me.lblPosA.Text = InStr(Me.txtFrase.Text, "a") Me.lblMinusculas.Text = LCase(Me.txtFrase.Text) Me.lblMayusculas.Text = UCase(Me.txtFrase.Text) Me.lblSoloPrim.Text = StrConv(Me.txtFrase.Text, 3)

btnSalir (Evento Click)

Me.Close()

Joel Martin Chuco Marrufo 27

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

UTILIZANDO FUNCIONES DE FECHA Y PUBLICAS Y TAMBIEN MODULOS, CLASES Y NAMESPACE

Funciones Pblicas en un Mdulo

80. En esta aplicacin se debe de ingresar el nombre y la fecha de nacimiento de una persona y se debe de visualizar por separado: el da, mes, ao, nmero del da de la semana, la fecha en letras y la fecha y hora actual. Utilizando dos funciones publicas codificadas en un modulo.

txtNombre

txtFecNac

lblDia btnOk lblMes btnSalir lblAo

lblDiaSem

lblFecIng

lblFecAct

Joel Martin Chuco Marrufo 28

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Primero agregaremos un modulo llamado mdFecha y codificaremos lo siguiente:

Module mdFecha

Public Function Dia(ByVal ndia As Integer) As String Dia = Choose(ndia, "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado") End Function

Public Function Mes(ByVal nmes As Integer) As String Select Case nmes Case 1 : Mes = "Enero" Case 2 : Mes = "Febrero" Case 3 : Mes = "Marzo" Case 4 : Mes = "Abril" Case 5 : Mes = "Mayo" Case 6 : Mes = "Junio" Case 7 : Mes = "Julio" Case 8 : Mes = "Agosto" Case 9 : Mes = "Setiembre" Case 10 : Mes = "Octubre" Case 11 : Mes = "Noviembre" Case 12 : Mes = "Diciembre" End Select End Function

End Module

La funcin da nos hallara el da de la semana segn el nmero de da enviado a esta funcin, igualmente la funcin mes.

btnOk (Evento Click)

If Not IsDate(Me.txtFecNac.Text) Then MsgBox("Ingrese una Fecha Correcta", MsgBoxStyle.Information, "Error") Me.txtFecNac.SelectionStart = 0 Me.txtFecNac.SelectionLength = Len(Me.txtFecNac.Text) Me.txtFecNac.Focus() Exit Sub End If Me.lblAo.Text = Year(CDate(Me.txtFecNac.Text)) Me.lblDia.Text = Microsoft.VisualBasic.Day(CDate(Me.txtFecNac.Text)) Me.lblDiaSem.Text = Microsoft.VisualBasic.Weekday(CDate(Me.txtFecNac.Text)) Me.lblMes.Text = Microsoft.VisualBasic.Month(CDate(Me.txtFecNac.Text)) Me.lblFecIng.Text = Dia(Val(Me.lblDiaSem.Text)) + ", " + Me.lblDia.Text + " de " + Mes(Val(Me.lblMes.Text)) + " de " + Me.lblAo.Text

Joel Martin Chuco Marrufo 29

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnSalir (Evento Click)

Me.Close()

frmEjercicio80 (Evento Load)

Me.lblFecAct.Text = "Hoy es " + CStr(Now)

Clases y NameSpace en un Mdulo

81. En esta aplicacin se debe de ingresar la fecha de nacimiento de una persona y se debe de visualizar por separado: la estacin de la fecha en que naci, su signo zodiacal la semana del ao en que naci, los meses transcurridos desde el ao que naci y la fecha actual despus de tres semanas. Para esto crearemos un NameSpace que contendr la clase y las funciones para hallar la estacin y el signo zodiacal.

txtNombre

txtFecNac

lblDia btnOk lblMes btnSalir lblAo

lblDiaSem

lblFecIng

lblFecAct

Joel Martin Chuco Marrufo 30

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Primero agregaremos un modulo llamado Informacion y codificaremos lo siguiente: Primero borramos todo el cdigo que aparece y cambiamos por lo siguiente:

Namespace Informacion

Public Class FecNac

Public Function Estacion(ByVal dia As Integer, ByVal mes As Integer) As String If (dia >= 23 And mes = 12) Or mes = 1 Or mes = 2 Or (dia <= 22 And mes = 3) Then Estacion = "Verano" If (dia >= 23 And mes = 3) Or mes = 4 Or mes = 5 Or (dia <= 22 And mes = 6) Then Estacion = "Otoo" If (dia >= 23 And mes = 6) Or mes = 7 Or mes = 8 Or (dia <= 22 And mes = 9) Then Estacion = "Invierno" If (dia >= 23 And mes = 9) Or mes = 10 Or mes = 11 Or (dia <= 22 And mes = 12) Then Estacion = "Primavera" End Function

Public Function SignoZodiacal(ByVal dia As Integer, ByVal mes As Integer) As String Select Case mes Case 1 If dia < 21 Then SignoZodiacal = "Capricornio" Else SignoZodiacal = "Acuario" End If Case 2 If dia < 20 Then SignoZodiacal = "Acuario" Else SignoZodiacal = "Piscis" End If Case 3 If dia < 21 Then SignoZodiacal = "Piscis" Else SignoZodiacal = "Aries" End If Case 4 If dia < 21 Then SignoZodiacal = "Aries" Else SignoZodiacal = "Tauro" End If Case 5 If dia < 21 Then SignoZodiacal = "Tauro" Else SignoZodiacal = "Geminis" End If Case 6

Joel Martin Chuco Marrufo 31

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005


If dia < 22 Then SignoZodiacal Else SignoZodiacal End If Case 7 If dia < 23 Then SignoZodiacal Else SignoZodiacal End If Case 8 If dia < 23 Then SignoZodiacal Else SignoZodiacal End If Case 9 If dia < 23 Then SignoZodiacal Else SignoZodiacal End If Case 10 If dia < 23 Then SignoZodiacal Else SignoZodiacal End If Case 11 If dia < 22 Then SignoZodiacal Else SignoZodiacal End If Case 12 If dia < 22 Then SignoZodiacal Else SignoZodiacal End If End Select End Function

= "Geminis"

= "Cancer"

= "Cancer"

= "Leo"

= "Leo"

= "Virgo"

= "Virgo"

= "Libra"

= "Libra"

= "Escorpio"

= "Escorpio"

= "Sagitario"

= "Sagitario"

= "Capricornio"

End Class

End Namespace

La funcin Estacion nos hallara la estacin del ao en que naci, igualmente la funcin SignoZodiacal que nos hallara el signo zodiacal correspondiente.

Joel Martin Chuco Marrufo 32

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Al principio de la ventana de codificacin del formulario, escribiremos el siguiente cdigo que nos permite importar el espacio de nombre que hemos creado. Para que lo importamos?, lo importamos para poder utilizar sus clases, funciones que hemos creado.

Imports Ejercicio81.Informacion

Funcin Limpia

Sub Limpia() Me.txtFecNac.Text = "" Me.lblEstacion.Text = "" Me.lblFecAct.Text = "" Me.lblMesesTrans.Text = "" Me.lblNumSem.Text = "" Me.lblSigno.Text = "" Me.txtFecNac.Focus() End Sub

frmEjercicio81 (Evento Load)

Call Limpia() Me.Text = "La Fecha Actual es: " + CStr(Format(Now, "dd / MMMM / yyyy"))

btnOk (Evento Click)

Dim ndia, nmes As Integer Dim Estacion, Signo As New Informacion.FecNac If Not IsDate(Me.txtFecNac.Text) Then MsgBox("Ingrese una Fecha Correcta", MsgBoxStyle.Information, "Error") Exit Sub End If ndia = Microsoft.VisualBasic.Day(CDate(Me.txtFecNac.Text)) nmes = Microsoft.VisualBasic.Month(CDate(Me.txtFecNac.Text)) Me.lblEstacion.Text = Estacion.Estacion(ndia, nmes) Me.lblSigno.Text = Signo.SignoZodiacal(ndia, nmes) Me.lblNumSem.Text = Microsoft.VisualBasic.DatePart(DateInterval.WeekOfYear, CDate(Me.txtFecNac.Text)) Me.lblMesesTrans.Text = Microsoft.VisualBasic.DateDiff(DateInterval.Month, CDate(Me.txtFecNac.Text), Now) Me.lblFecAct.Text = Microsoft.VisualBasic.DateAdd(DateInterval.WeekOfYear, 3, Now)

btnSalir (Evento Click)

Me.Close()

Joel Martin Chuco Marrufo 33

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

82. Esta aplicacin nos muestra un ejemplo de la utilidad de las funciones de tipo numricas.

txtNumero

lblEntero

lblDecimal

btnMuestra

lblValAbs btnNuevo lblRaiz btnSalir lblSigno

lblValOct

lblValHex

Funcin Limpia

Sub Limpia() Me.txtNumero.Text = "" Me.lblDecimal.Text = "" Me.lblEntero.Text = "" Me.lblRaiz.Text = "" Me.lblSigno.Text = "" Me.lblValAbs.Text = "" Me.lblValHex.Text = "" Me.lblValOct.Text = "" Me.txtNumero.Focus() End Sub

frmEjercicio82 (Evento Load)

Call Limpia()

Joel Martin Chuco Marrufo 34

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnOk (Evento Click)

If Not IsNumeric(Me.txtNumero.Text) Then MsgBox("Ingrese un Nmero", MsgBoxStyle.Information, "Error") Me.txtNumero.Text = "" Me.txtNumero.Focus() Exit Sub End If Me.lblEntero.Text = CStr(CInt(Val(Me.txtNumero.Text))) Me.lblDecimal.Text = CStr(Val(Me.txtNumero.Text) - Val(Me.lblEntero.Text)) Me.lblValAbs.Text = CStr(Math.Abs(Val(Me.txtNumero.Text))) If Val(Me.txtNumero.Text) > 0 Then Me.lblRaiz.Text = CStr(Math.Sqrt(Val(Me.txtNumero.Text))) Else Me.lblRaiz.Text = "No Existe" End If Me.lblSigno.Text = CStr(Math.Sign(Val(Me.txtNumero.Text))) Me.lblValOct.Text = CStr(Microsoft.VisualBasic.Oct(Val(Me.txtNumero.Text))) Me.lblValHex.Text = CStr(Microsoft.VisualBasic.Hex(Val(Me.txtNumero.Text)))

btnSalir (Evento Click)

Me.Close()

btnNuevo (Evento Click)

Call Limpia()

FUNCION SHELL

La funcin Shell se utiliza para ejecutar programas (archivos ejecutables como *.exe, *.com etc.) desde el visual Basic. Su sintaxis es la siguiente:

Shell("Ruta y Nombre del programa", Estilo de Presentacin)

Joel Martin Chuco Marrufo 35

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

83. Esta aplicacin nos permitir ejecutar algunos programas desde el visual Basic.

btnCalc

btnWord

btnExcel

btnExplorador

btnDOS

btnFinalizar

btnCacl (Evento Click)

Shell("C:\Windows\System32\calc.exe", AppWinStyle.NormalFocus)

btnWord (Evento Click)

Shell("C:\Archivos de programa\Microsoft Office\OFFICE11\winword.exe", AppWinStyle.MaximizedFocus)

btnExcel (Evento Click)

Shell("C:\Archivos de programa\Microsoft Office\OFFICE11\excel.exe", AppWinStyle.MaximizedFocus)

Joel Martin Chuco Marrufo 36

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

btnExplorador (Evento Click)

Shell("C:\WINDOWS\explorer.exe", AppWinStyle.MaximizedFocus)

btnDOS (Evento Click)

Shell("C:\WINDOWS\system32\cmd.exe", AppWinStyle.NormalFocus)

btnFinalizar (Evento Click)

If MsgBox("Deseas salir de la aplicacin?", MsgBoxStyle.YesNo, "Uso de Shell") = MsgBoxResult.Yes Then Me.Close()

Joel Martin Chuco Marrufo 37

Lenguaje de Programacin Capitulo XI

Programando con Visual Basic 2005

Bueno seores con esto acaba la Sptima entrega de este manual, les pido disculpas por la demora, pero estaba con trabajo estos dos ltimos meses, aqu les dejo o mejor dicho les envo los programas elaborados hasta ahora y en la prxima entrega realizaremos lo siguiente: Arrays Procedimientos Cclicos Y mejoraremos el aspecto del formulario con mtodos grficos

Bueno conmigo ser hasta la prxima entrega.

Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com

Donaciones a la cuenta de Ahorros del Banco de Interbank del Per


Cuenta en Soles:

067-3008573552 Cuenta en Dlares:

067-3008573560

www.interbank.com.pe

Este Manual Solo lo Puedes Descargar por la Pgina Oficial.

www.lawebdelprogramador.com

Lima, 04 de mayo de 2006

Joel Martin Chuco Marrufo 38

You might also like