Академический Документы
Профессиональный Документы
Культура Документы
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
MSGBOX
El MSGBOX es una ventana que nos muestra un mensaje en el centro de la pantalla. Su sintaxis es la siguiente:
Por ejemplo:
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
No No No
No No No No No
No No No No No
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.
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)
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.
txtNombre
txtDireccion
txtTelefono
txtCE
txtObservaciones
btnNuevo
btnFinalizar
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.
Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.YesNo, "Sistema") If Resp = MsgBoxResult.No Then e.Cancel = True End If
Me.btnNuevo.Enabled = False
Me.Close()
Me.txtCE.Text = "" Me.txtDireccion.Text = "" Me.txtNombre.Text = "" Me.txtObservaciones.Text = "" Me.txtTelefono.Text = "" Me.txtNombre.Focus()
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.
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
Function Mayuscula(ByVal v As Integer) As Boolean If v >= 65 And v <= 90 Then Mayuscula = True Else Mayuscula = False End If End Function
Function Minuscula(ByVal v As Integer) As Boolean If v >= 97 And v <= 122 Then Minuscula = True Else Minuscula = False End If End Function
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
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
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
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
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
Limpiar()
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
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
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
Ingresados()
Limpiar()
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
INPUTBOX
El INPUTBOX es una ventana que permite que el usuario pueda ingresar un dato. Su sintaxis es la siguiente:
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.
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
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
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
Call Limpia()
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()
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()
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()
Call Limpia()
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
Format(Variable,Formato)
Ejemplo:
33,333.33
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
Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacion", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then e.Cancel = True End If
Call Limpia()
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 + " %"
Call Limpia()
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
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
Call Limpia()
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")
Call Limpia()
Me.Close()
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.
DESCUENTO %
txtProducto
txtPrecUnit
txtCantComp
btnCalcular
lblTotal
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
Call Limpia()
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")
Call Limpia()
Me.Close()
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
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
Limpiar()
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
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
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
Limpiar()
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.
Etapa
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
Call Limpia()
Call Limpia()
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
Me.Close()
79. Esta aplicacin es un ejemplo del uso de las funciones de cadena que ya hemos visto el concepto.
txtFrase
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
Call Limpia()
Call Limpia()
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)
Me.Close()
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
lblDiaSem
lblFecIng
lblFecAct
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.
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
Me.Close()
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
lblDiaSem
lblFecIng
lblFecAct
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 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
= "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.
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
Call Limpia() Me.Text = "La Fecha Actual es: " + CStr(Format(Now, "dd / MMMM / yyyy"))
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)
Me.Close()
82. Esta aplicacin nos muestra un ejemplo de la utilidad de las funciones de tipo numricas.
txtNumero
lblEntero
lblDecimal
btnMuestra
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
Call Limpia()
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)))
Me.Close()
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:
83. Esta aplicacin nos permitir ejecutar algunos programas desde el visual Basic.
btnCalc
btnWord
btnExcel
btnExplorador
btnDOS
btnFinalizar
Shell("C:\Windows\System32\calc.exe", AppWinStyle.NormalFocus)
Shell("C:\WINDOWS\explorer.exe", AppWinStyle.MaximizedFocus)
Shell("C:\WINDOWS\system32\cmd.exe", AppWinStyle.NormalFocus)
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
067-3008573560
www.interbank.com.pe
www.lawebdelprogramador.com