Guía practica de Visual Basic 6.0 1 Entorno: - Ventana principal - Ventana propiedades - Ventana proyectos Barra de Menús Barra de herramientas Explorador de proyectos Ventana propiedades Cuadro de Herramientas Formulario Barra de Menús Presenta los comandos para trabajar con VB, además de los menús estándar: Archivo, Edición, Ver, Ventana y Ayuda entre otros, se proporcionan menús de funciones especificas de programación como Proyecto, Formato o Depuración. Barra de Herramientas Presenta los comandos usados en el entorno de programación, es posible activar / desactivar otras barras. Cuadro de Herramientas Contiene los objetos básicos que se colocan sobre el formulario y que sirven para hacer la presentación del programa, si se necesitan objetos especializados se insertan en el momento llamando a otro menú (ctrl. T). Explorador de proyecto Muestra en una ventana el nombre del proyecto, el o los formularios y otros archivos (módulos, entre otros) que lo forman. Un proyecto es la colección de archivos que usa para generar una aplicación.
Ventana propiedades Enumera los valores o características del objeto sobre el formulario y el formulario seleccionado, entre las propiedades tenemos nombre, color, tamaño, tipo de texto, entre otros. Formularios Funciona como una ventana en la que se personaliza el diseño de la interfaz del programa del problema que se esta resolviendo. Agregue controles, gráficos, entre otros a un formulario para crear la apariencia que desee. Cada formulario tiene su propia ventana de propiedades. Objetos Son los elementos que se utilizarán para realizar la parte visual del proyecto, presentan propiedades que se pueden modificar o no, según sea el caso. Algunos de estos objetos se codificarán para ejecutar el programa. 2 Propiedades Son características asociadas a cada objeto, existen propiedades que son comunes y otras que son propias del objeto, es decir, propiedades que las poseen todos los objetos y propiedades que son comunes para pocos objetos o exclusivas de un objeto. Ejemplo: Objeto Propiedad común Propiedad no común Etiqueta (label) Nombre / Caption / Font Aligment Boton de comando (command botton) Nombre / Caption / Font Picture Caja de texto (textbox) Nombre / Font Text 3 Métodos Son palabras reservadas para realizar una determinada acción, se aplican a determinados objetos. Ejemplo: Additem: permite agregar a una lista desplegable (combobox) un nuevo ítem Combo1.additem Valencia Combo1.additem Caracas Combo1.additem Maracaibo Clear: borra el contenido de un objeto Combo1.clear
Removeitem: remueve en una lista el ítem seleccionado Combo1.removeitem Setfocus: coloca el foco en un objeto determinado Command1.setfocus Text1.setfocus Show: muestra o presenta un formulario Form1.show 4 Eventos Son los acontecimientos que le pueden suceder a un objeto. Ejemplo, si se elige el evento Keydown de un botón de comando, la ventana código contendrá lo siguiente: Private Sub Command1_Keydown ( keycode as integer, shift as integer) Como se ve, existen dos variables definidas con los nombres Keycode y Shift, esas variables pueden ser utilizadas dentro de la Subrutina para realizar diferentes acciones. Ejemplo: Private Sub Command1_Keydown ( keycode as integer, shift as integer) Label1= tecla Nº : + Str$ (keycode) + Str$ (Shift) Algunos eventos son: Keydown: Load: Clic: ocurre cuando una tecla es presionada se verifica cuando un formulario es cargado en memoria ocurre cuando el puntero del ratón (Mouse) hace presión sobre el objeto. Nota: Los objetos tienen propiedades, responden a eventos y ejecutan los métodos.
Las propiedades se pueden considerar como atributos de un objeto, los métodos como sus acciones y los eventos como sus respuestas. 5 Declaración de Variables. Una variable contiene un valor que se puede modificar a lo largo de la ejecución de la aplicación o programa. Cada variable tiene atributos propios, como lo son: a._ Nombre: es la identificación que se utiliza para identificar a dicha variable en la aplicación. b._ Tipo: determina que clase de valores o datos puede almacenar. c._ Ámbito: especifica en que parte de la aplicación la variable es conocida y puede utilizarse. a._ Nombre: Tiene que comenzar con una letra Puede tener hasta 40 caracteres No puede ser una palabra reservada del lenguaje como Dim, For, as, and, entre otros. b._ Tipo de datos. Tipo Descripción Carácter Rango Integer Entero % -32.768 a 32.767 Long Entero largo & - 2.147.483.648 a 2.147.483.647 Single Real simple! - 3.37 E +38 a 3.37 E +38 Double Real doble # - 1.67 E +308 a 1.67 E +308 Currency Numero con @ - 9.22 E +14 a 9.22 E +14 Punto decimal fijo String Cadena de $ caracteres Variant Cadena / Numérica No realiza operaciones aritméticas Ejemplo: Antes de utilizar una variable hay que declarar su tipo. Declarar la variable Dim I as integer es igual a I% Dim etiqueta as string * 10 longitud fija
Dim nombre as string es igual a nombre$ Cualquier declaración numérica, se inicializa en cero y si es alfanumérica con carácter nulo. Si una variable se utiliza y no se declara se asume del tipo single. Si el valor no va tener más de cuatro dígitos decimales, y no más de 14 enteros, es conveniente declararla Currency. C._ Ámbito de las variables Variables Globales Variables a nivel del formulario Variables a nivel del módulo Variables Locales Variables Locales Variables Locales Procedimientos Formulario Procedimientos Módulo Aplicación Se entiende por ámbito de una variable, el espacio de la aplicación donde la variable es visible y por lo tanto se puede utilizar. La figura anterior indica los cuatro lugares donde se puede declarar una variable. 6 Asignación y Manejo de las propiedades. Las propiedades de un objeto pueden manipularse dentro del código en tiempo de ejecución, de la siguiente forma: Ejemplo de estos: objeto.propiedad = valor o variable variable = objeto.propiedad label1.caption = el resultado es & suma x = text1.text
Clases Prácticas Problemas en Visual Basic Recuerde: objeto.propiedad = valor o variable variable = objeto.propiedad Palabras claves: Str$ : cambia un numero en alfanumérico. val : asegura que se esta tomando el contenido de la variable como un numero. msgbox mensaje$ (, tipo% (, titulo$ ) ) mensaje$ => va entre comillas tipo% => es la suma de los valores que describe el numero y el tipo de botones a visualizar, el estilo del icono. Ej : msgbox la palabra clave no es correcta, 16 16 => icono STOP, 20 => suma de iconos (16+4) => SI y NO Abreviaciones utilizadas para identificar los objetos, esta abreviación va seguida del nombre del objeto, este asociado a lo que realiza. btn txt lbl frm => botón o cmd => comando => texto => label => form Los comentarios son para aclara cualquier duda o escribir una anotación acerca de la instrucción, se inician con un apostrofe, y cambia su color a verde, los mismos no se ejecutan son transparentes para el programa.
1.- Calcular el promedio de notas de tres parciales Ejemplo utilizando los objetos básicos LABEL, TEXT, COMMAND y MSGBOX Lisa de variables: n1 = Nota1 n2 = Nota2 n3 = Nota3 Pseudocodigo promedio de nota de tres parciales Var Real: n1, n2, n3, promedio Inicio Leer : n1,n2,n3 //verificar que es numérico cada dato introducido Promedio = ( n1 + n2 + n3) /3 Escribir el promedio es & promedio Fin form 1 label 1 text 1 command 1 label 2 text 2 command 2 label 3 text 3 command 3 label 4 label 5 objeto name Caption text form 1 form1 promedio de notas _ label 1 label 1 nota 1 _ label 2 label 2 nota 2 _ label 3 label 3 nota 3 _ label 4 label 4 resultado _ label 5 label 5 ( borrar ) _ text 1 txt_n1 _ ( borrar )
text 2 txt_n2 _ ( borrar ) text 3 txt_n3 _ ( borrar ) Command 1 btn_calcular &Calcular _ Command 2 btn_borrar &Borrar _ Command 3 btn_salir &Salir _ Promedio de Notas Nota 1 Nota 2 Nota 3 Resultado Calcular Borrar Salir Codificación Private Sub btn_calcular_click() Dim n1, n2, n3, promedio as single verificar que txt_n1.text sean numéricos If isnumeric (txt_n1.text) then verifica que el contenido de la caja de texto sea un numero n1 = val ( txt_n1.text ) val toma el valor real del contenido else Msgbox Debe ser numerico txt_n1.text = limpia el contenido de la caja de texto txt_n1.setfocus coloca el cursor en la caja de texto end if realizar lo mismo para las otras dos cajas de texto n2 = val ( txt_n2.text ) n3 = val ( txt_n3.text ) promedio = ( n1 + n2 + n3 ) / 3 otra forma sin utilizar variables sino directamente el objeto: promedio = ( val ( txt_n1.text ) + val ( txt_n2.text ) + val ( txt_n3.text ) ) / 3
label5.caption = promedio otra forma de presentar el resultado, cambiando la instrucción label5.caption = promedio msgbox promedio = & Str$ ( promedio ) & concatena una expression con una variable Private Sub btn_borrar_click() txt_n1.text = txt_n2.text = txt_n3.text = label5.caption = Private Sub btn_salir_click() End 2.- Dados dos números enteros positivos, calcular el cociente y el resto por el método de restas sucesivas (dividir). El método para obtener el cociente y resto es por restas sucesivas. La forma es restar sucesivamente el divisor y el dividendo hasta obtener un resultado menor que el divisor y que será el resto de la división, el número de iteraciones (restas) será el cociente. Pseudocodigo cociente y resto de un numero Var Entero : Cociente, Resto, dividendo, divisor, numero Inicio Leer : dividendo, divisor Resto = dividendo Cociente = 0 //se inicia en cero, porque actúa como contador Do Resto = Resto divisor Cociente = Cociente + 1 Loop until Resto < divisor
Fin Escribir el resto es & Resto & y el cociente & Cociente Ejemplo utilizando los objetos básicos LABEL, TEXT, COMMAND y MSGBOX form 1 label 1 text 1 command 1 label 2 text 2 command 2 label 3 label 4 command 3 label 5 label 6 objeto name Caption text form 1 form1 Calculo de cociente y resto _ label 1 label 1 Valor del Dividendo : _ label 2 label 2 Valor del Divisor : _ label 3 label 3 Cociente : _ label 4 label 4 ( borrar ) _ label 5 label 5 Resto : _ label 6 label 6 ( borrar ) _ text 1 txt_dv _ ( borrar ) text 2 txt_ds _ ( borrar ) Command 1 btn_resolver &Resolver _ Command 2 btn_borrar &Borrar _ Command 3 btn_salir &Salir _ Calculo de cociente y resto Valor del Dividendo: Valor del Divisor: Cociente: Resto: Calcular Borrar Salir
Codificación Private Sub btn_resolver_click() Dim resto as integer, cociente as integer, n as integer verificar que txt_dv.text y txt_ds.text sean numéricos resto = val ( txt_dv.text ) n = val ( txt_ds.text ) Cociente = 0 Do resto = resto - n cociente = cociente + 1 loop until resto < n label4.caption = cociente label6.caption = resto otra forma de presentar el resultado, cambiando la instrucción label5.caption = promedio msgbox Cociente = + Str$ ( cociente ) + Resto = + Str$ ( resto ) Private Sub btn_borrar_click() txt_dv.text = txt_ds.text = Cociente = 0 label4.caption = label6.caption = Private Sub btn_salir_click() End
3.- Resolver la ecuación cuadrática Ejemplo utilizando los objetos básicos LABEL, TEXT, COMMAND y MSGBOX form 1 label 1 label 2 text 1 command 1 label 3 text 2 command 2 label 4 text 3 command 3 objeto name Caption text form 1 form1 Ecuación Cuadrática _ label 1 label 1 y = a x^2 + b x + c _ label 2 label 2 a = _ label 3 label 3 b = _ label 4 label 4 c = _ text 1 txt_a _ ( borrar ) text 2 txt_b _ ( borrar ) text 3 txt_c _ ( borrar ) Command 1 btn_resolver &Resolver _ Command 2 btn_borrar &Borrar _ Command 3 btn_salir &Salir _ Ecuación Cuadratica a = b = c = Calcular Borrar Salir Palabras claves: chr$ (13) => retorno de carro chr$ (10) => avance de carro
Codificación En este caso se esta dimensionando fuera de un botón, en General en la ventana de código, esto significa que las variables allí dimensionadas se comportan como generales. Dim a, b, c, D, x1, x2 as single Dim signo as string*3, signo2 as string*3 string = alfanumérico, *3 = cantidad de caracteres que va a permitir Private Sub btn_resolver_click() nuevalinea = chr$(13)+ chr$(10) verificar que txt_a.text, txt_b.text y txt_c.text sean numéricos a = val ( txt_a.text ) b = val ( txt_b.text ) c = val ( txt_c.text ) If a <> 0 then D = b ^ 2-4 * a * c cálculo del discriminante If d < 0 then raíces imaginarias x1 = - b / ( 2 * a ) x2 = SQR ( - D ) / ( 2 * a ) SQR : raíz cuadrada If x2 >= 0 then signo = - signo2 = + else signo = + signo2 = - end if x2 = Abs( x2 ) valor absoluto Msgbox Raíces Imaginarias + nuevalinea + x1= + format$(x1, 0.0######### )+ signo + format$ (x2, 0.0######### ) + i + nuevalinea + x2 = + format$( x1, 0.0######### ) + signo2 + format$ (x2, 0.0######### ) + i else if d > 0
x1 = - b - SQR ( D ) / ( 2 * a ) x2 = - b + SQR ( D ) / ( 2 * a ) Msgbox Raíces Reales y Diferentes + nuevalinea + x1= + format$(x1, 0.0######### ) + nuevalinea + x2 = + format$( x1, 0.0######### ) else d=0 x1 = - b / ( 2 * a ) Msgbox Raíces Reales e Iguales + nuevalinea + x1= x2 = +format$(x1, 0.0######### ) end if else a = 0 msgbox el valor debe ser distinto de cero txt_a.setfocus end if Private Sub btn_borrar_click() txt_a.text = txt_b.text = txt_c.text = Private Sub btn_salir_click() End
4.- Determine si un número es perfecto, abundante o deficiente. Ejemplo utilizando los objetos básicos LABEL, TEXT, COMMAND y MSGBOX form 1 label 1 text 1 command 1 command 2 label 2 label 3 command 3 objeto name Caption text form 1 form1 Que numero es: _ label 1 label 1 Introduzca el Numero: _ label 2 label 2 Resultado _ label 3 label 3 ( borrar ) _ text 1 text 1 _ ( borrar ) Command 1 btn_aceptar &Aceptar _ Command 2 btn_borrar &Borrar _ Command 3 btn_salir &Salir _ Que numero es? Introduzca el numero = Resultado Aceptar Borrar Salir Nota: Text1 no vale la pena cambiar el nombre ya que es la única caja de texto a utilizar
Codificación Dim n as single, suma as integer Private Sub btn_aceptar_click() verificar que text1.text sea numero n = val ( text1.text ) If n > 0 then suma = 0 for k = 1 to n-1 if n Mod k = 0 then mod calcula el resto de una división suma = suma + k end if next k if suma = n then label 3. Caption = Numero Perfecto Msgbox Numero Perfecto else if suma > n then label 3. Caption = Numero Abundante Msgbox Numero Abundante else label 3. Caption = Numero Deficiente Msgbox Numero Deficiente end if Private Sub btn_borrar_click() text1.text = label 3.Caption = Private Sub btn_salir_click() End
5.- Programa para calcular el promedio de números positivos. Ejemplo utilizando los objetos básicos LABEL, TEXT, COMMAND, MSGBOX y LIST Pantalla 1: form 1 label 1 label 2 command 1 objeto name Caption text form 1 frmejemplo Programa _ label 1 label 1 Ejemplo _ label 2 label 2 Uso de Listas _ Command 1 btn_inicio &Inicio _ Programa Introduzca el numero Ejemplo Uso de Listas Inicio Codificación Private Sub btn_inicio_click() frmejemplo.show show es para mostrar pantalla 2: form 2 Text 1 command 1 command 2 list1 command 3 command 4 label 1 label 2
command 5 objeto name Caption text tabindex form 2 frmcalculo Calculo del promedio de positivos text1 text1 _ (borrar) 0 list1 list1 1 label 1 label 1 El promedio es: label 2 label 2 (borrar) Command 1 btn_agregar &Agregar Command 2 btn_eliminar &Eliminar Command 3 btn_borrar &Borrar Command 4 btn_calcular &Calcular Command 5 btn_salir &Salir Calculo del promedio de positivos Agregar Eliminar list1 Borrar Calcular El promedio es : Salir Codificación Private Sub btn_agregar_click() verificar que text1.text sea numérico List1.AddItem Text1.Text 'adiciona el termino a la lista Text1.Text = "" Text1.SetFocus Private Sub btn_borrar_click() List1.Clear 'limpia el contenido de la lista
Text1.Text = "" Text1.SetFocus Label4.Caption = "" Private Sub btn_calcular_click() Dim suma, promedio As Single, c As Integer c = 0 suma = 0 For i = 0 To List1.ListCount ' listcount cuenta los elementos que se van agregando a la lista If Val(List1.List(i)) > 0 Then 'pregunta si es positivo el valor suma = suma + Val(List1.List(i)) ' list(i) indica el valor del elemento en la posición "i" c = c + 1 End If Next i If c = 0 Then MsgBox "No hay promedio " Text1.SetFocus Else promedio = (suma / c) Label4.Caption = promedio otra forma 'MsgBox " promedio = " + Str$(promedio) otra forma de presentar el resultado indicando la cantidad que sumó Msgbox la suma de positivos es : + str$ ( suma ) + y sumo + str$ ( cont ) + términos End If Private Sub btn_eliminar_click() ' Aquí se elimina el numero seleccionado en la lista y su índice List1.RemoveItem List1.ListIndex
Text1.SetFocus Private Sub btn_salir_click() End Private Sub Text1_KeyPress(keyascii As Integer) ' keypress es para que presionando el Enter se activa lo codificado If keyascii < Asc("0") Or keyascii > Asc("9") Then ' No acepta ni letras ni símbolos keyascii = 0 List1.AddItem Text1.Text 'adiciona el termino a la lista Text1.Text = "" Text1.SetFocus End If
6.- Programa para calcular dos series. Ejemplo utilizando los objetos FUNCTION. MSGBOX, COMBOBOX, INPUTBOX, SELECT CASE y form 1 label 1 combobox command 1 command 2 objeto name Caption tabindex style form 1 form1 Ejemplo de combobox label 1 label 1 Serie: Combobox1 Cmbserie _ 1 2 Command 1 btn_calcular &Calcular 2 _ Command 2 btn_salir &Salir 3 _ Ejemplo de combobox Serie: combobox Calcular Salir Codificación Private Sub btn_resolver_click() Dim pi As Double Dim y, n As String, suma As Single pi = 4 * Atn(1) ' esto es para que la máquina reconozca el valor de pi If cmb_serie.listindex > -1 Then suma = 0 Select Case cmb_serie.list(cmb_serie.listindex) Case "Seno de (X)"
y = InputBox("X = ", "Introduzca el valor de X en grados decimales") InputBox abre una ventana para insertar un valor. If y <> "" Then x = Val(y) * pi / 180 toma el valor del contenido n = InputBox("n =", "Numero de términos") If n <> "" And Val(n) > 0 Then suma = x For i = 2 To Val(n) Next i suma = suma + ((-1) ^ (i - 1)) * (x ^ (2 * i - 1)) / fact(2 * i - 1) MsgBox " Seno (" + y + " ) " + " = " + Str$(suma) Else: MsgBox "El numero de términos debe ser mayor que cero" los dos puntos significan cambio de línea, es decir, como si estuviera escribiendo en la línea siguiente. End If End If End If Case "Coseno de (X)" y = InputBox("X = ", "Introduzca el valor de X en grados decimales") If y <> "" Then End If End Select x = Val(y) * pi / 180 n = InputBox("n =", "Numero de términos") If n <> "" And Val(n) > 0 Then suma = 1 For i = 2 To Val(n) Next i suma = suma + ((-1) ^ (i - 1)) * (x ^ (2 * i - 2)) / fact(2 * i - 2) MsgBox "Coseno (" + y + " ) " + " = " + Str$(suma) Else: MsgBox "El numero de términos debe ser mayor que cero" End If
Private Sub btn_salir_click() End Private Sub Form_Load() cmb_serie.additem "Seno de (X)" cmb_serie.additem "Coseno de (X)" esto es para que aparezcan al iniciar el programa estas opciones en el combobox Public Static Function fact (numero) If numero > 0 Then fact = 1 For k = 1 To numero fact = fact * k Next k ElseIf numero = 0 Then fact = 1 Else MsgBox "No existe el factorial" End If End Function
7.- Programa para cambiar en mayúsculas un texto escrito en minúsculas. Ejemplo utilizando los objetos CHECKBOX. form 1 text 1 command 1 checkbox command 2 objeto name Caption text form 1 form 1 Ejemplo de checkbox _ text 1 text 1 _ ( borrar ) Command 1 btn_borrar &Borrar _ Command 2 btn_salir &Salir _ Checkbox 1 chk_mayus Convertir en mayúsculas _ Ejemplo de checkbox Borrar Convertir en mayúsculas Salir Valor de la propiedad del checkbox. Value = 0 => la caja aparece vacía Value = 1 => la caja aparece con una x Value = 2 => la caja aparece en gris Enabled => desactiva el checkbox
Codificación Private Sub btn_salir_click() End Private Sub btn_borrar_click() text1.text = text1.setfocus chk_mayus.value = 0 Private Sub chk_mayus_click() if chk_mayus.value = 1 then text1.text = Ucase$ ( text1.text ) end if if chk_mayus.value <> 2 then text1.setfocus end if Ucase$ cambia un texto en mayúscula Lcase$ cambia un texto en minúscula
8.- Programa para seleccionar una opción. Ejemplo utilizando los objetos OPTIONBUTTON y FRAME. form 1 label 1 text 1 frame 1 option 1 command 1 option 2 command 2 command 3 objeto name Caption text form 1 form 1 Ejemplo de option y frame _ label 1 label 1 Valor de la temperatura : _ text 1 txt_temp _ ( borrar ) Command 1 btn_convertir &Convertir _ Command 2 btn_borrar &Borrar _ Command 3 btn_salir &Salir _ option 1 opt_f Farenheit _ option 2 opt_c Celsius _ frame 1 frame 1 Unidad de conversión _ Ejemplo de option y frame Valor de la temperatura Unidad de Conversión Farenheit Celsius Convertir Borrar Salir
Codificación Dim temp, dato As single Private Sub btn_salir_click() End Private Sub btn_borrar_click() txt_temp.text = txt_temp.setfocus Private Sub btn_convertir_click() if isnumeric (txt_temp.text ) then dato = txt_temp.text if opt_f.value = true then //dato suministrado está en farenheit temp = 5/9 * (dato - 32) msgbox temperatura = & temp & º Celsius else temp = 9/5 * dato +32 msgbox temperatura = & temp & º Farenheit end if else msgbox Debe ser numérico end if