Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INDICE
1.- Caracteristicas generales de VB.
2.- Entorno de trabajo.
Barra de herramientas,explorador de proyectos,etc.
3.- Objetos en VB.
4.- Controles label,textbox,commnabutton,frame, y sus propiedades
5.- Convención para nombrar objetos en Visual Basic
6.- Operadores: Basicos,Comparacion, Etc.
7.- Variables y Tipo de Datos en VB.
8.- Manejo de Formularios:Eventos, Metodos, Modales y no Modales, MDI.
Practica 1
9.-Instrucciones Condicionales,Controles optionButton,Checkbox, Evento keypress y
Change
10.-Funciones de conversión de datos
11.-CUADROS DE DIALOGO
Ejemplo practico
12.-Funciones de Cadenas,Numéricas y Fechas
13.-Evento Gotfocus, LostFocus, MouseDown, MouseUp y MouseMove
14.-Instrucciones Repetitivas, Sentencia Exit.
Practica3
15.- Barras de desplazamiento (Scroll Bars)
16.- Función RGB
17.- Control Timer
18.- CONTROLES GRÁFICOS:Line,Shape,Image,Picturebox
19.- Metodos graficos:Pset,Line,Circle.
20.- CUADRO DESPLEGABLES(COMBOBOX) Y LISTAS (LIST BOX)
21.- ARREGLOS:ESTATICOS,DINAMICOS,CONTROLES
Aplicacion :AHORCADO
22.- MSFLEXGRID
Practica4
23.- PROCEDIMIENTOS Y FUNCIONES
Practica 5
24.- Registros
25.- Controles ACTIVE X (ToolBar, ImageList, ProgressBar, StatusBar,
ShockWaveFlash)
Ejemplo de Presentacion de Un Sistema
26.- Manejo de Archivos, Comandos (Dir , Kill, FileCopy, etc.) Controles DRIVE, DIR
y FILE
27.- VISUAL BASIC Y BASE DE DATOS
Objetos Recordset, propiedades, metodos, etc.
-1-
Lenguaje de Programación I
Visual Basic es un entorno de desarrollo diseñado para la creación de aplicaciones para los
entornos de trabajo Microsoft Windows 95, 98, NT y 2000.
Este lenguaje auna las posibilidades de un lenguaje de alto nivel con las herramientas de
diseño gráfico, lo cual nos dá acceso a todas las funciones de los sistemas anteriormente
citados.
Para entrar a desarrollar en visual basic nos vamos al menu Inicio- Programas – Microsoft
Visual Studio 6 – Microsoft
Visual Basic 6
OJO: El ejecutable que abre
el Visual Basic 6 se llama
VB6.EXE
Aquí escogemos
el tipo de proyecto
que queremos
realizar que en
este caso sera
EXE
STANDARD ya
que es el ideal
para crear
aplicaciones
OJO: Los otros
tipos de proyecto
permite crear
cosas distintas
como por ejemplo
-2-
Lenguaje de Programación I
ActiveX Control Crea un control para poder usarlo en tus aplicaciones e incluso en
una página WEB.
DLL ActiveX Crea Librerias dinamicas que se podra utilizar desde cualquier lenguaje
que tenga compatibilidad.
Una vez que hemos escogido el proyecto a desarrollar el sistema nos respondera de la
siguiente manera:
Barra de Menu
Explorador
Barrra de de
Herramientas Proyecto
Diseñador
de
Formulario
Ventana de
Propiedades
Cuadro de
Herramientas
-3-
Lenguaje de Programación I
Los métodos son pequeños programas que actúan sobre un determinado objeto y que
establecen su comportamiento. Así un objeto puede moverse, ocultarse, etc... Puedes
utilizar cualquier método que forme parte del objeto.
Ejemplo de Metodos: show, hide, etc.
Los eventos son las situaciones que se producen y que nos interesan identificar para
establecer algún tipo de de respuesta por parte del objeto. Así, puedes hacer click sobre un
determinado objeto, creando de esta forma un evento reconocible por el objeto. Que suceda
algo o no como respuesta a este evento dependerá de que hayas programado alguna acción
en el correspondiente procedimiento de evento.
Ejemplo de Eventos: click, dobleclicke ,mousemove, keypress, etc.
-4-
Lenguaje de Programación I
* Label o Etiquetas .- Las etiquetas son controles que nos permiten mostrar texto en los
formularios y que tienen la particularidad de que el usuario no puede modificar solo
muestra información acerca de algo.
El control de etiqueta es:
Algunas propiedades del control etiqueta son:
Propiedad Definición
Alignment Establece la alineación del texto de la etiqueta(derecha, izquierda y centro)
Autosize Si su valor es True, el tamaño de la etiqueta se adapta automáticamente a su
contenido
Caption Texto que se visualiza en la etiqueta
BackStyle Establece si el fondo del label sera opaco o transparente.
* TextBox o Caja de Textos.- Los cuadro de texto son el control estándar de entrada de
datos en Visual Basic. Permiten al usuario de la aplicación introducir información.
El control del cuadro de texto es:
Los cuadros de texto son semejantes a las etiquetas, pero con la diferencia que el usuario
puede modificar su contenido. El texto que se introduce puede ser tanto numérico como
alfanumérico (números y letras).
Cuando se recupera un valor de una caja de texto asi se haya ingresado un numero tomará
el valor de una cadena.
A diferencia de la etiqueta, el tamaño del texto es fijo al no permitir la propiedad autosize.
Algunas propiedades del objeto cuadro de texto son:
Propiedad Definición
Alignment Alineación de la información introducida.
Multiline Permite introducir más de una línea de texto en el cuadro
PasswordCharEstable el caracter que se muestra al realizar una entrada en el control. Sólo
se mostrará dicho carácter(Por defecto esta vacio)
ScrollBars Muestra barras de desplazamiento(Esto solo funciona si la propiedad
multiline esta en True)
Text Texto que se visualiza en el control
* Frame o Marcos.- Se utiliza para agrupar ciertos controles.
La única propiedad interesante de un control marco es la propiedad Caption, que se refiere
al texto que se presenta en la parte superior izquierda del control.
El control marco actúa como contenedor de otros controles. Al mover un marco también se
mueve los controles que contenga, para ello deberemos crear primero el marco y despueés
los controles que queremos que contenga dentro del marco.
-5-
Lenguaje de Programación I
Bloquear controles
Cuando estén situados los controles en el formulario se pueden bloquear para que no
puedan moverse de forma accidental.
Para esto deberemos hacer clic derecho Bloquear Controles
Para desbloquear se hace lo mismo.
Otras Propiedades
Name .- Quizas la mas importante da el nombre al control.
Backcolor .- Establece el color de fondo del control.
Forecolor .- Establece el color del texto del control.
BorderStyle .- Establece el tipo de borde del control.
Visible .- Establece si el control se verá(True) en tiempo de ejecución o no(False).
Picture .- Establece una imagen de fondo al control.
Nota: Si el control es un commandbutton la propiedad STYLE debera estar en 1.- Graphical
para que se pueda ver la imagen lo mismo es para darle un color de Fondo.
Width, Height .- Establece el ancho y el alto del control.(a mayor numero mas ancho o
alto)
Font.-Establece la fuente, tamaño, etc.
Enabled.-Permite o no que se puedan realizar acciones sobre el control(esta en True por
defecto si esta en False no se podra utilizar el control)
TabIndex.-Establece el orden de tabulación fijado para el control(Esta propiedad sirve para
casi todos los controles en VB)
TabStop.-Indica si al utilizar el tabulador se puede desplazar entre los controles del
formulario
ToolTipText.-Establece un texto que se mostrar cuando se pase el mouse por el control
como si fuera un comentario.
Top .-Establece la distancia que hay desde el borde superior del formulario hasta donde se
encuentra el control
Left .-Establece la distancia que hay desde el borde izquierdo del formulario hasta donde se
encuentra el control
Icon .- Establece la imagen de un icono (Solo esta disponible para los formularios)
MinButton, MaxButton .- Para ver o no ver los botones de minimizar y maximizar (solo
para los formularios)
Moveable .- Si esta en True el Form se podrá mover ,si esta en false será lo contrario(solo
para los formularios)
-6-
Lenguaje de Programación I
1.6.- Operadores
Operaciones Basicas
Operador Operación que realiza
+ Suma / Concatenación de cadenas de caracteres
- Resta
* Multiplicación
/ División
\ División entera
Mod Resto de la división entera
^ Exponenciación (alt + 94)
& Concatenación de
Operadores de Comparación
> Mayor que
< Menor que
= Igual a
<= Inferior o igual a
>= Superior o igual a
<> Distinto a
Operadores Lógicos
AND y
OR O
NOT Negacion
-7-
Lenguaje de Programación I
Tipos de Variables :
Privada .- La variable solo sera utilizada e el modulo donde se esta declarando
Private nombrevariable As TipodeDato
dim nombrevariable As TipodeDato
Publica o Global .- La variable se podra utilizar en todo el proyecto por que sera publica.
Public nombrevariable As tipodedato
Global nombrevariable As tipodedato
Para que la variable sea reconocida en todo el proyecto se deberá declarar en un modulo.
NOTA: Si queremos declarar un variable publica para el formulario debemos declarar esa
variable en la seccion de GENERAL-DECLARACIONES
Normalmente la interfaz de una aplicación esta compuesta por varios formularios. Cuando
Visual Basic inicia la aplicación automáticamente se muestra el formulario de arranque,
mientra que los otros formularios deben ser mostrados y ocultados a través de código. El
método o función usado depende de lo que deseamos hacer.
Eventos de Formularios:
Activate: se produce cuando un Formulario se activa.
Desactivate: se produce cuando un Formulario se desactiva.
Los eventos Activate y Desactivate sólo se producen cuando el foco pasa de uno a otro
Formulario dentro de la aplicación. Si el foco se pasa a las ventanas de otras aplicaciones
los eventos no se producen. Se utilizan los métodos Show y SetFocus.
-8-
Lenguaje de Programación I
El evento Activate ocurre antes que el evento GotFocus y el evento LostFocus ocurre antes
que el evento Desactivate.
Initialize: es el primer evento que se produce en un Formulario. Se utiliza para inicializar
datos empleados por el Formulario.
Ejemplo: Form1.Caption = "Ejemplo"
Terminate: es el último evento que se produce en un Formulario. Se produce cuando todas
las referencias a una instancia de un Formulario, se quitan de la memoria estableciendo a
Nothing todas las variables que hacen referencia al objeto.
Resize: ocurre cuando cambia el estado de una ventana (por ejemplo, cuando se maximiza,
minimiza o restaura un Formulario).
Ejemplo: cambiar automáticamente el tamaño de un Cuadro de Imagen.
Private Sub Form_Resize()
Picture1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Load: cuando un Formulario se carga en memoria se produce el evento Load. Este evento
suele utilizarse para realizar operaciones de inicialización como, por ejemplo, inicializar
variables, dar valores a las propiedades de determinados controles, cargar elementos en las
listas, etc.
Unload: se produce cuando un Formulario se descarga en memoria. Este evento dispone de
un argumento, denominado Cancel que permite cancelar la descarga del Formulario. Para
ello, bastará con asignarle un valor distinto de cero en cualquier instrucción del código. Si
no se le asigna ningún valor, se mantendrá a cero, permitiendo la descarga del Formulario.
Metodos de Formularios:
Load: Carga un formulario a la memoria, pero no lo muestra.
Ejemplo: Load Form1 ‘donde form1 es el nombre del formulario que se cargara.
Show: Muestra un formulario. Si el formulario no está cargado al momento de ejecutar el
método Show, Visual Basic lo cargará automáticamente.
Ejemplo: form1.Show
Hide: Oculta un formulario, pero no lo descarga de memoria.
Ejemplo: form1.Hide
Unload: Descarga un formulario de memoria.
Ejemplo : unload Form1
Comentarios.- La descarga de un formulario puede ser necesaria o conveniente en aquellos
casos en los que la memoria utilizada se necesite para alguna otra tarea o cuando sea
necesario restablecer las propiedades a sus valores originales.
Antes de descargar un formulario se ejecuta el evento Unload (Form_Unload). Si establece
el argumento Cancelar a True en este evento no se descargará el formulario.
Sugerencia Use la palabra Me para referirse al formulario actual.
Ejemplo: Unload Me
-9-
Lenguaje de Programación I
Finalizando su Aplicación
Se puede finalizar la ejecución de la aplicación descargando el último formulario de la
aplicación o usando la sentencia End. La sentencia End termina la ejecución de la
aplicación y descarga todos los formularios.
Cuando finaliza su aplicación con la sentencia End no se desencadena ningún evento.
Formularios MDI.- Estos formularios tienen como finalidad servir de contenedor a
otros.formularios.
Para agregar un formulario MDI debemos ir al Explorador de proyectos - Clic Derecho-
Agregar-Formulario MDI
Si queremos tener mas formularios y queremos que estos sean contenidos por el MDI
debemos poner la propiedad MDICHILD a TRUE por defecto esta en FALSE, y de esa
forma esos formularios seran contenidos por el MDI.
- 10 -
Lenguaje de Programación I
Instrucciones de Control
• Condicionales
- 11 -
Lenguaje de Programación I
End select
Ejemplo : Ingrese un numero y según cumpla una de las condiciones en otra variable se
deberá almacenar un mensaje.
Si el numero es 0 el mensaje sera “Neutro”
Si es 2,4,6,8 el mensaje sera “Par menor a 10”
Si el numero es mayor que 9 y menor que 100 el mensaje sera “entre 10 y 99 “
Si es mayor a 499 y menor a 901 o es el numero 998 el mensaje sera “Menor a mil”
Si no cumple ninguna de las condiciones saldra el mensaje “No cumple condicion”
2.4.- SWITCH.
Sintaxis:
Var = switch(condicion1,valor1,codnicion2,valor2,condicion..n,valor..n)
El switch es parecido al iif con la diferencia que se puede poner varias condiciones con
un solo switch.
Ejemplo:
En una variable almacene el numero de dia y guarde en otra variable el nombre del dia
por ejemplo 1 seria”lunes”, 2 seria “martes” ,etc.
Dim dia as integer
Dim nombre as string
Dia=7
Nombre = Switch(dia=1,”Lunes”,dia=2,”Martes”,dia=3,”Miércoles”,dia=4,”Jueves”,..)
- 12 -
Lenguaje de Programación I
El resultado seria:
2.6 Controles
Una casilla de verificación puede estar activada (cheked o 1), o desactivada (unchecked o
0) o no disponilble(Grayed o 2). La propiedad que tiene estos valores es Value.
El evento más utilizado en este tipo de objetos es el momento en el que se pulsa en la
casilla. En esta situación el usuario quiere indicar que desea activar o desactivar la casilla,
dependiendo del valor que tenga en ese momento.
Ejemplo:Se ingresara un monto de ahí se
podra sacar el 18,20,22% al monto, al
final el monto final sera la suma de los %
mas el monto.
Private Sub CmdCalcular_Click()
Dim monto%
monto = Val(txtmonto)
If chk18.Value = Checked Then
txt18 = monto * 0.18
Else
txt18 = 0
End If
If chk20.Value = Checked Then
txt20 = monto * 0.2
Else
txt20 = 0
End If
'Puede ser checked o 1
If chk22.Value = 1 Then
txt22 = monto * 0.22
Else
txt22 = 0
End If
- 13 -
Lenguaje de Programación I
OPTIONBUTTON(botones de opción)
Los botones de opción (OptionButton), también permiten presentar opciones al usuario,
pero con la particularidad que sólo puedes seleccionar una de las opciones al mismo
tiempo.
Si quieres que en un mismo formulario se pueda seleccionar más de un botón de opción,
tienes que crear distintos conjuntos de botones de opción.
El botón de opción sólo puede tener dos valores en la propiedad Value (True y False), true
si está activado y false si está desactivado.
Ejemplo:Seleccione una categoría y al hacer clic muestre que categoría se ha seleccionado
2.7..- Eventos
• Keypress
Este evento sucede cuando se presiona alguna tecla del teclado.Automáticamente VB da
un valor a una variable llamada KEYASCII que sera el codigo ascii de la tecla
presionada.
Ejemplo: Validar que en la caja de texto TXTCOD se ingrese solo numeros y al
preionar enter que tome enfoque TXTNOM
- 14 -
Lenguaje de Programación I
• Change
Este evento sucede cuando cambia la estructura de las cajas de texto(TextBox)
Es decir conforme vayamos cambiando el contenido del texto se ejecutara el vento
CHANGE
Ejemplo:
- 15 -
Lenguaje de Programación I
Función Descripción
CBool Convierte una expresión al tipo Boolean
CByte Convierte una expresión al tipo Bute
CCur Convierte una expresión al tipo Currency
CDate Convierte una expresión al tipo Date
CDbl Convierte una expresión al tipo Double
CInt Convierte una expresión al tipo Integer
CLng Convierte una expresión al tipo Long
CSng Convierte una expresión al tipo Single
CStr Convierte una expresión al tipo String
CVar Convierte una expresión al tipo Variant
Ejemplos:
Num = CDbl(“123.45”) ‘el valor de Num seria 123.45
Num = CInt(“123.45”) ‘el valor de Num seria 123
- 16 -
Lenguaje de Programación I
Ejemplos:
F = IsDate(“cas”) ‘El valor de F sera falso.
F = IsNumeric(“1234”) ‘ el valor de F sera True
Ejemplo:
MiHora = #17:04:23#
MiFecha = #27 enero 1993#
' Devuelve la hora actual del sistema en el formato largo de hora definido por el sistema.
MiCadena = Format(Time, "Long Time")
' Devuelve la fecha actual del sistema en el formato largo de fecha definido por el sistema.
MiCadena = Format(Date, "Long Date")
MiCadena = Format(MiHora, "h:m:s") ' Devuelve "17:4:23".
MiCadena = Format(MiHora, "hh:mm:ss AMPM") ' Devuelve "05:04:23 PM".
MiCadena = Format(MiFecha, "dddd, d mmm yyyy")' Devuelve "Miércoles,
' 27 de Ene de 1993".
' Si no se suministra el formato, devuelve una cadena.
MiCadena = Format(23) ' Devuelve "23".
' Formatos definidos por el usuario.
MiCadena = Format(5459.4, "##,##0.00") ' Devuelve "5.459,40".
MiCadena = Format(334.9, "###0.00") ' Devuelve "334,90".
MiCadena = Format(5, "0.00%") ' Devuelve "500,00%".
MiCadena = Format("HOLA", "<") ' Devuelve "hola".
MiCadena = Format("Esto es", ">") ' Devuelve "ESTO ES".
- 17 -
Lenguaje de Programación I
En caso de que se muestre un msgbox donde se debe responder al msgbox se debera poner
lo siguiente
If MsgBox("Ingrese Cantidad valida", vbCritical, "Mensaje") = vbYes Then
En este caso se esta preguntando si respondimos SI al msgbox.
Ejemplo
Dim Mensaje, Estilo, Título, Ayuda, Ctxt, Respuesta, MiCadena
Mensaje = "¿Desea continuar?" ' Define el mensaje.
Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones.
- 18 -
Lenguaje de Programación I
Ejemplo Practico
Diseñar este formulario donde se ingresara el Codigo del Suministro y los KW consumidos
al hacer clic en Calcular se debe hallar el importe inicial, Alumbrado Publico,
- 19 -
Lenguaje de Programación I
Mantenimiento, IGV y el Pago Total, al hacer clic en Nuevo se debe limpiar las Cajas de
Textos y al hacer clic en Salir se debe salir del programa.
NOTA: Para realizar este formulario se va a utilizar los siguientes controles
Descripción Control Nombre
Codigo del Suministro Textbox TxtCod
Kilowatts consumidos TextBox Txtkilo
Importe Inicial Label LblInicial
Alumbrado Label Lblalum
Mantenimiento Label LblMant
Reajuste Label LblReajuste
IGV Label Lbligv
Total Label LblTotal
Calcular Command CmdCalcular
Nuevo Command CmdNuevo
Salir Command CmdSalir
Imagen Image Image1
Formulario Form Form1
Private Sub CMDCALCULAR_Click()
If MsgBox("Desea calcular...?", vbYesNo + vbQuestion, "Mensaje") = vbYes Then
Dim pago#, importe#
importe = Val(txtkilo) * 0.09
lblinicial = Format(importe, "#######0.00")
lblalum = Format(importe * 0.035, "#######0.00")
lblmant = Format(importe * 0.015, "#######0.00")
lblreajuste = Format(importe * 0.048, "#######0.00")
lbligv = Format(importe * 0.019, "#######0.00")
lbltotal = CDbl(lblinicial) + CDbl(lblalum) + CDbl(lblmant) + CDbl(lblreajuste) +
CDbl(lbligv)
End If
End Sub
NOTA: Bueno aqui lo que se puede apreciar es que se estan declarando 2 variables de tipo
double pago,importe luego se esta poniendo en los label el resultado de la operación note
que se pone format(importe,”#######0.00”) para formatear el resultado con 8 enteros y 2
decimales
Private Sub CMDNUEVO_Click()
Me.txtcod = ""
Me.txtkilo = ""
Me.lblinicial = ""
Me.lblalum = ""
Me.lblmant = ""
Me.lblreajuste = ""
Me.lbligv = ""
Me.lbltotal = ""
Me.txtcod.SetFocus
End Sub
- 20 -
Lenguaje de Programación I
NOTA: aqui estamos poniendo el titulo al formulario, ademas de poner la imagen al control
IMAGE1 la propiedad Stretch es para que la imagen se ajuste al control y la propiedad
Picture es para poner una imagen,Cuando se pone una imagen en tiempo de ejecucion se
necesita la funcion LoadPicture(“aquí va la ruta del archivo de imagen”), pero vean que
aquí se puso app.path que es una funcion que saca una cadena y esa cadena es la ruta actual
donde se encuentra el proyecto por ejemplo si el proyecto de visual basic se encuentra en
C:\nueva carpeta la funcion app.path sacara c:\nueva carpeta ahora a esto se suma \logo.jpg
si sumamos las 2 cadenas el resultado seria c:\nueva carpeta\logo.jpg
Para esto la imagen Logo.jpg debe estar en la misma carpeta donde se encuentra el proyecto
OJO.- Para los botones es lo mismo pero ahí debemos de poner la propiedad STYLE en
Graphical.
Practica N° 2
1.- Ingrese por teclado en una caja de texto la hora en formato de 24 horas y en otra caja de
texto la cantidad de minutos al hacer clic en un boton debera salir la hora en formato de 12
horas por ejemplo si se ingresa 23 en una caja y en la otra 12 el resultado seria 11:12:PM
2.- Ingrese la cantidad de minutos hablados por una persona y escoja el tipo de llamada
(Local, Nacional, Internacional).Se visualizara el importe de la llamada sabiendo que por
los 3 primeros minutos se paga S/ 1.00 y por cada minuto adicional se paga 0.50 en caso
sea local si es nacional se incrementa el 25% y si es internacional se incrementa el 60% a
los precios por minuto.
3.- Ingresar el nombre de un trabajador, la cantidad de hijos y su sueldo, si este tiene hijos
se le dará una bonificación de S./40.00 por hijo y si no tiene hijos se le dara el 25% de su
sueldo se deberá mostrar la bonificación y el sueldo final.
4.- Ingrese por teclado dos números y al escoger un signo de operación se debera mostrar el
resultado de la operación.
- 21 -
Lenguaje de Programación I
5.- Ingrese un numero máximo de 2 cifras si el numero es de una cifra se deberá mostrar
cuanto falta para convertirse en un numero de 2 cifras, y si es de 2 cifras se deberá mostrar
cuanto falta para convertirse en un numero de 3 cifras.
6.- Ingrese un numero cualquiera y muestre la cantidad de cifras que tiene según sea el
caso.
Ejemplo: 203 = “Tiene 3 cifras”, 45678 = “Tiene 5 cifras” tome en cuenta que el numero
máximo a ingresar es un millon..
7.- Ingrese por teclado el nombre, año de nacimiento y sexo de una persona (M o F),se
deberá mostrar uno de los siguientes mensajes.
- Varon mayor de edad
- Varon menor de edad
- Dama mayor de edad
-Dama menor de edad
9.- Ingrese por teclado el día de nacimiento y el mes de nacimiento de una persona al hacer
clic se deberá mostrar su signo zodiacal así como también deberá aparecer la imagen del
signo Zodiacal en un control PictureBox.
- 22 -
Lenguaje de Programación I
Se deberá ingresar el largo y el ancho del terreno y conforme vayan digitándolo deberá
salir el total (Largo * ancho)
Se deberá ingresar el precio por metro y al escoger una categoría el precio se incrementara
en un 10, 20, y 30 % respectivamente según la categoria, ademas de salir el precio total que
sera el total de area * el precio y si se escogio en tipo de alquiler Contado se le hara un
Descuento de 10% al precio total y si es credito se le hara un recargo de 15 %.
Finalmente se deberá escoger si se pagara alumbrado, parques o serenazgo sacando los %
correspondientes al precio total según indica el fomulario el precio final debera salir al
hacer clic en el boton calcular.
Función Descripción
- 23 -
Lenguaje de Programación I
número
Int Devuelve la parte entera de un número
Log Devuelve el logaritmo natural de un número (en base e)
Oct Devuelve una cadena de caracteres que representa el valor octal
Rnd Devuelve un número aleatorio menor que 1 y mayor o igual que 0
Sgn Devuelve el signo de un número (-1 si es negativo, 0 si es nulo y
1 si es positivo)
Sin Devuelve el seno de un número
Sqr Devuelve la raíz cuadrada de un número
Tan Devuelve la tangente de un número
Val Devuelve el número representado por una cadena de caracteres
- 24 -
Lenguaje de Programación I
Text11 = Tan(N)
End Sub
Space Devuelve una cadena formada por un Sintaxis: “Hola” & space(2)
número especificado de espacios en Res: “hola “
blanco
StrComp Compara 2 cadenas Sintaxis: strcomp(“A”,”A”)
Strcomp(cad1,cad2) Res: 0
devuelve:
–1 : Si cad1< cad2
0 : Si cad1=cad2
1 : Si cad1>cad2
- 25 -
Lenguaje de Programación I
- 26 -
Lenguaje de Programación I
- 27 -
Lenguaje de Programación I
Ejemplos:
Dim LaFecha As Date ' Declara las variables.
Dim Msj
LaFecha = InputBox("Escriba una fecha")
Msj = "Días desde hoy: " & DateDiff("d", Now, LaFecha)
MsgBox Msj
NOTA: debe validar para que cuando tome el enfoque una caja de texto el color de fondo
cambie a rojo y cuando se pierda regrese a blanco ademas de que si ingresa minúsculas al
perder el enfoque el texto debe convertirse a mayúsculas.
- 28 -
Lenguaje de Programación I
El evento MouseDown sucede cuando el usuario pulsa cualquiera de los botones del ratón,
mientras que el evento MouseUp sucede al soltar un botón que había sido pulsado. El
evento MouseMove sucede al mover el ratón sobre un control o formulario.
Los eventos MouseUp y MouseDown tienen algunos argumentos que merecen ser
comentados. El argumento Button indica cuál de los botones del ratón ha sido pulsado o
soltado, y el argumento Shift indica si además alguna de las teclas alt, shift o ctrl está
también pulsada. La lista con todos los posibles valores de estos argumentos se muestra
Ejemplo: Diseñar un formulario que al hacerle Clic derecho se agrande y al hacerle clic
izquierdo suceda lo contrario ademas de cuando se pase el mouse pro un Boton el
formulario cambie de color Rojo y Azul.
General - Declaraciones
Dim sw As Boolean
Private Sub CmdMover_MouseMove(Button As Integer, Shift As Integer, X As Single, Y
As Single)
If sw Then
Me.BackColor = vbRed
sw = False
Else
Me.BackColor = vbBlue
sw = True
End If
End Sub
- 29 -
Lenguaje de Programación I
Ejemplos:
Visualize en el formulario los numeros pares del 100 al 2(100,98,96..)
For i=100 to 2 step –2
Print i
Next I
Visualize en el formulario los numeros impares del 1 al 99(1,3,4..)
For i=1 to 99 step 2
Print I
Next
Genere y visualize numeros del 10 al 90 y al final muestre la suma de ellos
Dim suma as integer,i as integer
Suma=0 Ejemplo:
For I=10 to 99 Sumar= 3+5+7+...+81
Print I Sm=0
Suma=Suma + i For N=3 to 81 Step 3
Next Sm=Sm+n
Print “La suma es “ & suma Next
‘el & concatena
2.- DO WHILE.…LOOP.(Hacer mientras) , DO…. LOOP UNTIL(Hacer Hasta)
Sintaxis:
Do while condicion Do
(programacion) (programacion)
Loop Loop Until Condicion
Ejemplos:
- 30 -
Lenguaje de Programación I
- 31 -
Lenguaje de Programación I
Sentencia EXIT
La sentencia EXIT permitira salir de un bucle,funcion,procedimiento,etc.Dependiendo de
donde se quiere salir se aplicará la sentencia:
Exit For .- Sale de un for
Exit Do.- Sale de un Do
Exit Sub.- Sale de un procedimiento
Exit Function.- Sale de una funcion , etc.
Ejemplo 1: queremos hacer un programa el cual muestre el primer numero primo que hay
entre 10 y 90
Dim num As Integer, cd As Integer, i As Integer
'El primer for ira del 10 al 90
For num = 10 To 90
'Se inicializa la variable cd que contara los divisores de num
cd = 0
'Este for es para dividir consecutivamente num/1,num/2,num/3 asi sucesivamente
'para ver cuales son sus divisores
For i = 1 To num
'Si el residuo es 0 es divisible y el contador se incrementa
If num Mod i = 0 Then
cd = cd + 1
End If
Next
'Si la cantidad de divisores es 2 quiere decir que es primo
If cd = 2 Then
Print "El primer primo es " & num
'Como ya encontro el primer primo rompe el for de num
Exit For
End If
Next
Ejemplo: Desarrollar un algoritmo que permita mostrar los numeros Amstrong que hay del
1 al 1000 se dice que son numeros amstrong cuando la suma del cubo de sus cifras es igual
al mismo numeros. Ejemplo :153 = 1^3 + 5^3 + 3^3 serian iguales
- 32 -
Lenguaje de Programación I
- 33 -
Lenguaje de Programación I
n = Val(Text1)
cad = ""
Do While n <> 0 ‘Hacer mientras n sea diferente a cero
r = n Mod 16
n = n \ 16
If r > 9 Then
cad = cad + Chr(55 + r)
Else
cad = cad + Str(r)
End If
Loop
Lbr2 = StrReverse(cad)
End Sub
Practica N° 3
1.- Ingrese un numero y Genere las siguientes series: (el resultado se mostrara en un label o
en un text)
• 1,3,5,7,.....
• -1,+3,-5,+7...
• 1,3,2,5,3,7,4,9,5,11....
• 0,1,1,2,3,5,8,13...(Serie Fibonacci)
2.- Genere 100 numeros aleatorios y diga cuantos primos mayores a 50 hay,perfectos
menores a 10 hay, pares e impares.
3.- Genere 100 numeros aleatorios y al finalizar diga cual es el mayor y el menor.
- 34 -
H H HOLA
O HO HOL
L HOL HO
A HOLA H
8.- Ingrese una cadena y conviértalo en mayúscula y en minusculas sin utilizar las
funciones ucase y lcase.
10.- Ingrese Una fecha y diga cuantos dias faltan para acabar el año, cuantos dias han
pasado desde esa fecha hasta la fecha actual, que dia cae esa fecha (Lunes,martes), y
muestre la misma fecha en el siguiente formato: “Lunes 15 de Abril de 2003” (Por ejemplo)
11.- Ingrese en una caja de texto una cadena y al finalizar diga cuantas palabras tiene dicha
cadena y cual es la cantidad de caracteres que tiene la palabra con mayor longitud
Ejercicios Practicos:
1.- Ingrese un precio y una cantidad y al hacer clic en calcular mostrar el monto (cantidad *
precio)
En este tipo de control las propiedades más importantes son Max y Min, que
determinan el rango en el que está incluido su valor, LargeChange y SmallChange
que determinan lo que se modifica su valor al clicar en la barra o en el botón con la
flecha respectivamente y Value que determina el valor actual de la barra de
desplazamiento. Las barras de desplazamiento no tienen propiedad Caption.
El evento que se programa habitualmente es Change, que se activa cuando la
barra de desplazamiento modifica su valor. Todo lo comentado en este apartado es
común para las barras de desplazamiento verticales y horizontales.
Además de las Scroll Bars horizontal y vertical, Visual Basic 6.0 dispone también del
control
Slider, utilizado en los paneles de control de Windows, que tiene una función similar.
Ejemplo:
Sub Pintar
Text4.BackColor = RGB(Val(Text1), Val(Text2), Val(Text3))
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
VScroll1.Value = Val(Text1)
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
VScroll2.Value = Val(Text2)
End If
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
VScroll3.Value = Val(Text3)
End If
End Sub
Private Sub VScroll1_Change()
Text1 = VScroll1.Value
Call Pintar
End Sub
Private Sub VScroll2_Change()
Text2 = VScroll2.Value
Call Pintar
End Sub
Private Sub VScroll3_Change()
Text3 = VScroll3.Value
Call Pintar
End Sub
Si se desea que una acción suceda con cierta periodicidad se puede utilizar un control
Timer.
Este control produce de modo automático un evento cada cierto número de milisegundos.
La propiedad más importante de un objeto de este tipo es Interval, que determina,
precisamente, el intervalo en milisegundos entre eventos consecutivos. La acción que se
desea activar debe programarse en el evento Timer de ese mismo control.
Si en algún momento se desea anular momentáneamente la acción periódica es suficiente
con hacer False la propiedad Enabled del control Timer y para ejecutarla de nuevo volver
a hacer True esa propiedad. Haciendo 0 la propiedad Interval también se consigue
inhabilitar el Timer.
Ejemplo: Diseñar un formulario que tenga una imagen de un Avion que se desplaze por el
formulario ademas debe salir un texto en el caption del formulario que de la impresión que
fuera una marquesina.
Lo primero que se debe hacer es jalar 2 timer y poner en la propiedad Interval 100 para que
lo que se programe en el timer se ejecuta cada 100 milisegundos
Dim cad$
Private Sub Form_Load()
cad = "Programa hecho por Fulano "
Me.Caption = cad
End Sub
Control shape
Este control es en muchos aspectos similar al control line: tampoco tiene las propiedades
text, caption y value, ni reconoce eventos. Se diferencia en que admite formas geométricas
más complejas, que vienen definidas por la propiedad shape, que admite los valores
siguientes: cuadrado
(Square), rectángulo (Rectangle), círculo (Circle), elipse (Oval), cuadrado redondeado
(Rounded Square) y rectángulo redondeado (Rounded Rectangle).
Además de las propiedades correspondientes al tamaño y posición, las propiedades más
interesantes del control shape son las siguientes: BackColor, BackStyle, BorderColor,
BorderStyle, BorderWidth, FillColor, FillStyle, DrawMode. Un control shape puede estar
visible o no (Visible),
Control image
El control image es un contenedor de gráficos bitmap, iconos, metafile, enhanced
metafile, GIF y JPEG. Este control admite ya una amplia colección de eventos, por lo que
es ya un control con un papel mucho más activo que los anteriores.
Las propiedades más propias e importantes de este control son las propiedades picture y
stretch. La propiedad picture sirve para relacionar este control con el fichero que contiene
el gráfico que se desea representar, a través del cuadro de diálogo Load Picture que permite
elegir el fichero a insertar. El fichero deberá ser de uno de los tres tipos admitidos. Según el
fichero elegido, la propiedad picture tendrá uno de los tres valores siguientes: icon
(ficheros cur, ico), bitmap (bmp, gif, jpg) o metafile (wmf, emf).
La propiedad stretch indica cómo se comporta el control image al introducir en él el
contenido del fichero gráfico. Por defecto, cuando se crea un control image arrastrando en
el formulario con el ratón esta propiedad tiene el valor false. Estando la propiedad stretch
en false el tamaño del control se ajusta al tamaño del bitmap o del metafile que se introduce
en dicho control. Por el contrario, si dicha propiedad está en true el gráfico que proviene
del fichero se adapta al tamaño de control.
Se puede tratar de modificar el tamaño del gráfico en modo de diseño (con el ratón o
cambiando las propiedades de tamaño del control). Si el gráfico es un bitmap y la propiedad
stretch está en false el tamaño de la imagen no cambia aunque cambie el del control
(quedando en la esquina superior izquierda si el control se hace más grande, o quedando
parcialmente oculta si alguna de las dimensiones del control se hace más pequeña que la del
bitmap. Si la propiedad stretch está en true el bitmap se adapta al tamaño del control y su
tamaño se cambia con el de éste.
Los gráficos metafile siempre se pueden cambiar de tamaño en modo de diseño, tanto si
stretch está en true como si está en false.
Existen otras formas de cargar un gráfico en un control image, además de utilizar la
propiedad
picture en modo de diseño, como se ha visto anteriormente. Una segunda forma, utilizable
también
en modo de diseño, es hacer Copy y Paste a partir de un gráfico contenido en otra
aplicación como Paint Shop Pro o Excel.
En modo de ejecución se puede copiar el contenido de un control image en otro control del
mismo tipo por medio de una sentencia de asignación en la forma:
imgCuadro.picture = imgCaja.picture
y se puede también cargar una imagen de un fichero utilizando el procedimiento
LoadPicture, por ejemplo en la forma siguiente (habrá que estar seguro de que existe el
fichero): imgCuadro.picture = LoadPicture("G:\graficos\pc.wmf")
Aunque el control image admite algunos eventos (Click, DblClick, DragDrop, DragOver,
MouseUp, MouseDown, MouseMove), sus posibilidades son también limitadas. Por la
forma en que se dibuja, el control image no puede estar sobre otro control, como por
ejemplo un botón Tampoco puede contener otros controles en su interior: sólo puede
contener gráficos. Finalmente, este control no puede obtener el focus y por tanto no puede
responder a acciones desde el teclado. El control picture, que se verá a continuación,
resuelve estas limitaciones aunque presenta la desventaja de ser más lento en dibujar que el
control image.
Control Picture Box
Este es el control gráfico ( ) más potente y general de Visual Basic 6.0. Se trata de una
especie de formulario reducido, pues puede contener imágenes y otros tipos de controles
tales como botones, shapes, labels, cajas de texto, etc.
Con respecto a los bitmaps, el control picture se comporta de modo diferente que el control
image. El control picture no tiene propiedad stretch, con lo cual al
cargar un icono o un bitmap siempre aparecen con su tamaño natural Sin embargo el
control picture tiene la propiedad AutoSize, que por defecto está en false. Cuando se carga
un bitmap con AutoSize en false el gráfico aparece en la esquina superior izquierda del
control; sin embargo, si AutoSize está en true el control picture adapta su tamaño al del
bitmap que es cargado. (Stretch: false y true) y en un control picture (AutoSize: false y
true). Los gráficos metafile se comportan de un modo diferente, En el control image se
cargan con su verdadero tamaño si la propiedad stretch es false, mientras que se adaptan al
tamaño del control si dicha propiedad es true. Con el control picture se adaptan al tamaño
del control si AutoSize es false, mientras que se cargan con su propio tamaño si es
AutoSize es true.
En el control picture (al igual que en los formularios) son importantes las cuatro
propiedades relacionadas con el color: BackColor, ForeColor, FillColor y FillStyle. La
propiedad BackColor controla el color de fondo del control. La propiedad ForeColor
controla el color del texto que se escribe en el control
Las propiedades FillColor y FillStyle no afectan directamente al control sino a los
elementos gráficos que se dibujen sobre él con métodos tales como line y circle, que se
verán a continuación. FillStyle determina el tipo de relleno o pattern (líneas horizontales,
verticales, inclinadas, cruzadas, ...), mientras que FillColor determina el color de estas
líneas del relleno.
19.- METODOS GRÁFICOS.-
Ejemplo:
form1.pSet(100,200),vbBlue ‘Con esta sentencia se dibuja un punto de color azul en las
coordenadas 100,2000, si se quiere agrandar el tamaño del punto en la propiedad
DrawWidth debemos cambiar el valor que hay.
Ejemplo:
Me.Line (100, 100)-(400, 400), vbRed, BF ‘con esta sentencia se dibujara un cudrado rojo
Me.Line (100, 100)-(400, 400), vbRed ‘Con esta sentencia se dibujara una linea
ListBox.- Una lista es un control en el que se pueden mostrar varios registros o líneas,
teniendo uno o varios de ellos seleccionado(s). Si en la lista hay más registros de los que se
pueden mostrar al mismo tiempo, se añade automáticamente un scrollBar.Para añadir o
eliminar registros de la lista se utilizan los métodos AddItem y RemoveItem
respectivamente. Esto sólo puede hacerse en modo de ejecución, y no en modo de diseño.
Se suelen inicializar desde el evento Form_Load.
Propiedades y Metodos:
List es un array que permite definir el contenido de la lista en modo de diseño a través de la
ventana de propiedades y también acceder a los elementos de la lista en tiempo de
ejecución, para utilizar y para cambiar su valor. Para ello se pone en índice del elemento
entre paréntesis (empezando a contar por cero) a continuación de List, como se muestra a
continuación por ejemplo, para cambiar el tercer elemento:
lstName.List(2) = "Tercero"
lstName.list(0) Esto me indicara el valor que hay en el primer elemento
NOTA: LstName viene a ser el nombre que se le ha puesto a la lista.
Additem Para añadir un registro en tiempo de ejecución:
lstName.AddItem Registro_Añadido, posicion
donde posicion es un argumento opcional que permite especificar la posición en que se
debe añadir. Si se omite el registro se añade al final de la lista. Lo anterior es válido si la
propiedad Sorted está a False; si está a True el nuevo registro se añade en la posición
ordenada que le corresponde.
Ejemplo:
lstname.additem “hola”,2 se añade “Hola” en la posición 2
lstname.additem “hola” se añade “Hola” en la ultima posición
Clear En el caso de que se quiera vaciar completamente el contenido de una lista se puede
utilizar el metodo clear
Ejemplo: lstname.clear limpia todo la lista
ListIndex permite acceder a una posición concreta de la lista para añadir un registro nuevo
en esa posición, borrar uno ya existente, seleccionarlo, etc.
Hay que tener en cuenta que los elementos de la lista se empiezan a numerar por cero. El
valor de propiedad ListIndex en cada momento coincide con el registro seleccionado y en
el caso de no haber ninguno seleccionado esta propiedad vale -1.
Ejemplo:
Lstname.listindex indicara el indice del elemento seleccionado
Selected(pos) indica si una lista esta seleccionada, esta propiedad es neta del ListBox y
tiene 2 posibles valores True o False si esta en true indica que ese elemento ha sido
seleccionado
Ejemplo: LstName.selected(0) si esto arroja el valor de True quiere decir que fue
seleccionado caso contrario ustedes ya saben.....
Multiselect esta es una propiedad que indica si se podra seleccionar solo un elemento(0-
None) o varios elementos( 1-Simple) o varios elementos extendidos(2-Extended). Es
bueno recordar que esta es una propiedad neta del ListBox y se dara en tiempo de diseño
Style Esta propiedad indica si los elementos de la lista se mostraran de una forma simple(0-
Standard) o con un check(1-CheckBox), se dara en tiempo de diseño(Solo es para listbox)
Es interesante saber que al seleccionar uno de los registros de la lista se activa el evento
Clic de dicha lista.
Combo Box
Un combo tiene muchas cosas en común con una lista. Por ejemplo los métodos AddItem,
RemoveItem o Clear y las propiedades List, ListIndex o ListCount. La diferencia principal
es que en un combo tiene una propiedad llamada Style, que puede adoptar tres valores (1,2
ó 3) que corresponden con tres distintas formas de presentar una lista:
1. Style=0 (Dropdown Combo), Éste es el valor más habitual y corresponde con el caso en
el que sólo se muestra el registro seleccionado, que es editable por el usuario,
permaneciendo el resto oculto hasta que el usuario despliega la lista completa clicando
sobre el botón-flecha.
2. Style=1 (Simple Combo). En este caso el registro seleccionado también es editable, y se
muestra una lista no desplegable dotada si es necesario de una scrollbar.
3. Style=2 (DropDown List). En este último caso el registro seleccionado no es editable y la
lista es desplegable.
En una caja combinada, al igual que en una caja de texto sencilla, está permitido escribir
con el teclado en tiempo de ejecución, si la propiedad Enabled vale True. En una lista esto
no es posible.
Ejemplo Practico: Desarrollar un formulario el cual tenga como finalidad pasar elementos
de una lista hacia otra:
Private Sub cmdaddlist2_Click() ‘Pasa todos los elementos seleccionados del List1 al List2
i=0
Do While i < List1.ListCount
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem (i)
Else
i=i+1
End If
Loop
End Sub
Private Sub CmdGenerar_Click() ‘Genera Numero aleatorios y los guarda en la Lista1
Randomize
For i = 1 To 10
num = CInt(Rnd * 100)
List1.AddItem num
Next
End Sub
Private Sub cmdpasalist1_Click()‘Pasa todos los elementos del List2 al List1
For i = 0 To List2.ListCount - 1
List1.AddItem List2.List(i)
Next
List2.Clear
End Sub
Private Sub cmdpasalist2_Click()‘Pasa todos los elementos del List1 al List2
For i = 0 To List1.ListCount - 1
List2.AddItem List1.List(i)
Next
List1.Clear
End Sub
NOTA: No se ha programado el Boton para pasar los elementos seleccionados del List2 al
List1
Para que se muestre el Check en la Lista se debe poner en la propiedad STYLE =1
CheckBoX
21.- ARREGLOS
Un array permite referirse a una serie de elementos del mismo tipo con un mismo nombre,
y hace referencia un único elemento de la serie utilizando uno o más índices, como un
vector o una matriz en Álgebra.
Visual Basic 6.0 permite definir arrays de variables de una o más dimensiones (hasta 60) y
de cualquier tipo de datos (tipos fundamentales y definidos por el usuario). Pero además
Visual Basic introduce una nueva clase de arrays, arrays de controles, esto es, (arrays de
botones, de etiquetas, de paneles, etc.) que permiten una programación más breve y clara.
En este apartado sólo se tratarán los arrays de variables.
Todos los elementos de un array deben ser del mismo tipo y están alamacenados de forma
contigua en la memoria. Por supuesto, si el array es de tipo Variant cada elemento puede
contener un dato de tipo diferente, e incluso puede contener otro array.Entre los arrays de
variables cabe distinguir dos tipos fundamentales, dependiendo de que número de
elementos sea constante o pueda variar durante la ejecución del programa.
Arrays estáticos, cuya dimensión es siempre la misma.
Arrays dinámicos, cuya dimensión se puede modificar durante la ejecución del
programa.
Arrays estáticos
La declaración de un array estático dependerá de su ámbito.
• La declaración de un array público se hace en la sección de declaraciones de un módulo
utilizando la sentencia Public.
• La declaración de un array a nivel del módulo o del formulario se hace en la sección de
declaraciones del módulo o del formulario utilizando la sentencia Dim o Private.
• Para declarar un array local a un procedimiento, se utiliza la sentencia Dim, Private o
Static
dentro del propio procedimiento.
A continuación se presentan algunos ejemplos:
Dim vector(19) As Double
Este ejemplo declara un array de una dimensión, llamado vector, con veinte elementos,
vector(0), vector(1), ... , vector(19), cada uno de los cuales permite almacenar un Double.
Salvo que se indique otra cosa, los índices se empiezan a contar en cero.
Dim matriz(3, 1 To 6) As Integer
Este ejemplo declara un array de dos dimensiones, llamado matriz, con 4x6 elementos,
matriz(0,1), ... matriz(3,6), de tipo entero.
Public cadena(1 To 12) As String
El ejemplo anterior declara un array de una dimensión, cadena, con doce elementos,
caract(1), ... , caract(12), cada uno de los cuáles permite almacenar una cadena de
caracteres.
La declaración de los arrays estáticos es bastante cómoda. Se declaran una vez. Sin
embargo tienen el inconveniente que en la mayoría de los casos están sobredimensionados
y utilizan más memoria de la que realmente necesitan. Esto implica que se está
malgastando memoria. Para solucionar este problema se utilizan los arrays dinámicos.
Arrays dinámicos
El espacio necesario para un array estático se asigna al iniciarse el programa y permanece
fijo durante su ejecución. El espacio para un array dinámico se asigna durante la ejecución
del programa. Un array dinámico, puede ser redimensionado en cualquier momento de la
ejecución. La forma mejor de redimensionar los arrays es mediante variables.
Para crear un array dinámico primero hay que declararlo como si fuera una array estático,
pero sin darle dimensión. Es decir, se deja la lista -entre paréntesis- vacía sin ponerle
ningún número.Esto se hace con la sentencia Public si se quiere que sea global, con Dim o
Private si se quiere a nivel de módulo o con Static, Dim o Private si se quiere que sea local.
Para asignar el número actual de elementos del array se utiliza la sentencia ReDim. La
sentencia ReDim puede aparecer solamente en un procedimiento y permite cambiar el
número de elementos del array y sus límites inferior y superior, pero no el número de
dimensiones. Esto quiere decir que, por ejemplo, no se puede trasformar un vector en una
matriz.A continuación se presenta un ejemplo de cómo se declaran arrays dinámicos en
Visual Basic. Si se declara el array Matriz a nivel del formulario,
Dim Matriz( ) As Integer
más tarde, un procedimiento Calculo puede asignar espacio para el array, como se indica a
continuación:
Sub Calculo( )
...
ReDim Matriz(F, C)
...
End Sub
Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el array se
pierden (si son Variant se ponen a Empty; si son numéricos a cero y si son cadenas de
caracteres a la cadena vacía). Cuando interese cambiar el tamaño del array conservando los
valores del array, hay que ejecutar ReDim con la palabra clave Preserve. Por ejemplo,
supóngase un array A de dos dimensiones. La sentencia,
ReDim Preserve A(D1, UBound(A, 2) + 2)
incrementa el tamaño del array en dos columnas más. Cuando se utiliza la palabra Preserve
no puede cambiarse el índice inferior del array (sí el superior). La función UBound del
ejemplo devuelve el valor más alto de la segunda dimensión.
Ejemplo: Se crea una caja de texto y le ponemos de nombre TxtNum luego hacemos clic
derecho copiar y luego lo pegamos y VB nos respondera con una ventana advirtiendo que
ya existe un Control con ese nombre y nos preguntara si queremos crear un matriz de
controles a lo cual se respondera SI.
Con esta se creara otra caja de texto llamado tambien TxtNum(1) pero tendra el indice 1 y
el anterior se llamara TxtNum(0), si creamos mas controles con este nombre el indice sera
2,3,4...etc.
General-Declaraciones
Dim vector(19) As String, cad$
Dim cont%, ACIERTO%, COLOR%, COLORORI, TW%, TH%
Sub visibilidad(ByVal sw As Boolean) 'Muestar u oculta los textos dependiendo de SW
For i = 0 To 19
txtfrase(i).Visible = sw
Next
End Sub
Sub limpia()
For i = 0 To 19
txtfrase(i).Text = "*"
Next
End Sub
Private Sub CmdJugar_Click()
Image1.Picture = Nothing 'Para que no se muestre nada en el Image
Call visibilidad(False)
Call limpia
Randomize
num = CInt(Rnd() * 19)
cad = vector(num)
For i = 1 To Len(cad)
txtfrase(i - 1) = Mid(cad, i, 1)
Next
Txtletra.Enabled = True
CmdOk.Enabled = True
lblmen2.Visible = False
LblMen = "La frase tiene " & Len(cad) & " palabras"
lblmen2 = "La frase es " & UCase(cad)
cont = 1
ACIERTO = 0
COLOR = 1
Txtletra.SetFocus
End Sub
Private Sub CmdOk_Click()
ESTA = False
For i = 0 To 19
C = txtfrase(i)
If UCase(Trim(txtfrase(i))) = UCase(Trim(Txtletra)) And Not txtfrase(i).Visible Then
txtfrase(i).Visible = True
ESTA = True
ACIERTO = ACIERTO + 1
End If
Next
If Not ESTA Then
ruta = App.Path & "\AHORCADO" & cont & ".JPG"
Image1.Picture = LoadPicture(ruta)
cont = cont + 1
If cont > 6 Then 'Solo hay 6 oportunidades de adivinar
MsgBox "Lo sentimos perdiste el juego", vbCritical, "Mensaje"
Call visibilidad(True)
lblmen2.Visible = True
Txtletra.Enabled = False
CmdOk.Enabled = False
Exit Sub
End If
End If
Txtletra = ""
Txtletra.SetFocus
If ACIERTO >= Len(cad) Then
MsgBox "Bien lo hiciste", vbInformation, "Mensaje"
lblmen2.Visible = True
Txtletra.Enabled = False
CmdOk.Enabled = False
Timer1.Enabled = True
End If
End Sub
Private Sub Form_Load()
Call visibilidad(False)
Call limpia
COLOR = 1
vector(0) = "LA CASA ROJA"
vector(1) = "LA MALDICION NEGRA"
y asi se llena los 20 elementos (del 0 al 19)
vector(18) = "LA PANTERA"
vector(19) = "LA AUSTRIACA"
COLORORI = Me.BackColor 'Se guarda el color del Formulario
TW = Me.Width 'Se guarda el ancho del formulario
TH = Me.Height 'Se guarda el alto del formulario
End Sub
Private Sub Timer1_Timer()
If COLOR > 30 Then
Me.BackColor = COLORORI
Me.Width = TW
Me.Height = TH
Timer1.Enabled = False
Else
R = CInt(Rnd() * 255)
G = CInt(Rnd() * 255)
B = CInt(Rnd() * 255)
Me.BackColor = RGB(R, G, B)
Me.Width = CInt(Rnd * TW)
Me.Height = CInt(Rnd * TH)
COLOR = COLOR + 1
End If
End Sub
Private Sub Txtletra_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
CmdOk.SetFocus
End If
End Sub
Arreglo de Controles.-
Colocar un control
timer con propiedad:
Interval=60
Enabled=false
Lbmeta
Control Image
Nombre Carro dar el mismo nombre a los dos
End If
End Sub
Propiedades
Rows.- Cantidad de Filas que tendra el Grid (Ejemplo: MsflexGrid1.Rows = 4)
Cos.- Cantidad de columnas que tendra el Grid (Ejemplo: MsflexGrid1.Cols = 4)
TextMatrix(Fila,Columna) .- Establece el texto de una celda se le pasa como parámetro la
fila y la columna de la celda a la cual se quiere acceder (Ejemplo :
MsFlexGrid1.TextMatrix(1,2) = “Hola”)
RowHeight(Fila) .- Establece el alto de la fila (Ejem : MSFlexGrid1.RowHeight(0)=200)
ColWidth(Col)Establece el ancho de una columna(Ejem MSFlexGrid1.ColWidtht(0)=200)
FixedRows,FixedCols .- Establece la cantidad de filas y columnas fijas respectivamente
(Ejem : MSFlexGrid1.FixedCols=0)
Row .- Establece la fila a la cual se va a acceder (Ejem : MSFlexGrid1.Row = 1)
Col .- Establece la columna a la cual se va a acceder (Ejem : MSFlexGrid1.Row = 1)
NOTA:Las propiedades a continucion se utilizaran después de haberse ubicado primero en
una fila y columna
Text .- Establece el texo de una celda es similar a TextMatrix (Ejem : MSFlexGrid1.Text =
“Hola”)
CellBackColor,CellForeColor .- Establece color de fondo y de letra respectivamente.
Ejemplo (MsFlexGrid1.CellBackColor = VBRed)
Ejemplo:
Diseñar un formulario que tendra un FlexGrid llamado TABLA al cargra se debe llenar el
formulario con las ventas de los 12 meses del año al final al hacer clic en el boton promedio
se debe calcular el promedio de las ventas(Las ventas se generaran aletoriamente asi como
tambien se debera modificar las celdas de las ventas)
Private Sub Command1_Click()’Boton para hallar el promedio
Dim suma#
suma = 0
For fil = 1 To 12
suma = suma + CDbl(Tabla.TextMatrix(fil, 1))
Next
Label1 = "Total ventas es: " & suma
End Sub
Private Sub Form_Load()
Tabla.Rows = 13
Tabla.Cols = 3
Tabla.FixedCols = 0
‘Primero los titulos
Tabla.TextMatrix(0, 0) = "Mes"
Tabla.TextMatrix(0, 1) = "Ventas"
Tabla.TextMatrix(0, 2) = "Nivel"
For fil = 1 To 12
Tabla.TextMatrix(fil, 0) = MonthName(fil) ‘MonthName saca el nombre del mes
Tabla.TextMatrix(fil, 1) = CInt(Rnd * 1000)
Tabla.TextMatrix(fil, 2) = IIf(Val(Tabla.TextMatrix(fil, 1)) > 500, "Alto", "Bajo")
Next
End Sub
‘’’Si la venta es mayor a 500 en la otra columna debe salir el mensaje “Alto” sino “Bajo”
Aplicacion. Se deposita cierta cantidad de dinero en un banco, este deposito puede ser
en dolares o soles; mostrar una tabla de Interses cada 30 dias , según la tasa de interes
para soles es 5% y dólar 2% mensual.
Pulsar ctrl.+T para activar a) Microsoft FlexdGrid Control 6.0 y Microsoft Form 2.0 Object
Library (que contiene el control SpinButton)
El diseño es como se muestra en la figura, la codificación es el Siguiente:
Practica 4
1.- Llene un Listbox con los distritos de Lima y al hacer click en un boton Buscar debera
ingresar un Distrito en un InputBox si existe en el ListBox se debera marcar el distrito
ingresado si en caso no se encuentra se debera mostrar un mensaje que diga que el mensaje
no existe ademas de un mensaje que diga ¿Si desea continuar? si responde si volvera al
mismo proceso hasta que ingrese No.
2.- Ingrese en un texto de tipo MultiLine una frase y en varios ListBox debera salir las
Letras Mayúsculas,Minúsculas,Vocales y Consonantes(osea habra 4 Listbox) indicando los
totales al final de cada listbox
5.- En un arreglo llene cadenas mediante InputBox, Luego en una caja de texto ingrese una
letra y busquela si lo encuentra saldra un mensaje.(Utilize redim)
6.-Genere 100 numeros aleatorios y guardelos en un arreglo luego elimine los perfectos y
los primos una vez hecho esto ordene el arreglo de forma ascendente(Utilize el metodo de
la burbuja) de ahí lo pasa a un ListBox
7.- Genere una matriz de 10x10 con numeros aleatorios y diga al final cuantos pares e
impares hay.(Muestre la matriz en un grid)
8.- Genere una matriz de 5x5 con numeros aleatorios luego diga cual es el mayor,el menor,
la suma de su diagonal principal, la suma de su diagonal secundaria y de su periferia.
(Muestre la matriz en un grid el mayor se sombreara de color rojo y el menor de azul)
9.- Genere una matriz de 3x3 y llenela con cadenas mediante inputbox y diga cual es
elemento que tiene mayor cantidad de caracteres. (Muestre la matriz en un grid)
10.- Usando arreglos de controles inserte 20 botones luego genere 20 numeros aleatorios
sin que se repitan y muéstrenlo en el caption de los botones.
De ahí mediante un control timer haga que cada 1 segundo salga un numero aleatorio y
busque el numero en los botones y si lo encuentra el boton debe desactivarse
donde el codigo se autogenera a partir del 1001 y la edad se mostrara en base a la fecha
de nacimiento.
Cuando se hace clic en el boton Grabar se guarda los datos en los vectores
(codigo,nombre,fecha y sexo)
- Modificar y Eliminar .- sera idéntico al Ingresar con la diferencia que ahí el codigo
se ingresa y si existe salen los datos de ese codigo y debe haber un boton grabar que
grabara las modificaciones de ese codigo o un boton Eliminar que eliminara ese
elemento
- Listado . Debe salir todos los elementos de los arreglos
- Ordenar se escogera en un combobox por que campo se quiere
ordenar(codigo,nombre,fecha o sexo)
Sub limpia()
Dim obj As Object
For Each obj In Me.Controls
If TypeOf obj Is TextBox Then
obj.Text = ""
End If
Next
End Sub
Para llamar a un procedimiento se utiliza la palabra reservada Call en este caso call Limpia
El procedimiento LIMPIA blanquea las cajas de texto
Ahora haremos algo mas interesante Haremos un procedimiento que limpie todas las cajas
de texto de todos los formularios.
Entonces creamos el procedimiento en el formulario.
Funciones
1.- Ingrese un numero y visualize “Es Perfecto” o “No es Perfecto” dependiendo de la
condicion
2.- Ingrese una cadena y visualícelo en Mayúscula sin usar UCASE
3.- Ingrese una cadena y visualícelo en Minuscula sin usar LCASE
4.- Ingrese 7 numeros y calcule el menor de ellos
5.- Ingrese 7 numeros y calcule el mayor de ellos
6.- Ingrese un numero y mediante options escoga una base(2,4,6,8) al hacer clic en un
boton se mostrara el numero convertido a la base que se selecciono
7.- Ingrese la fecha de nacimiento de una persona y muestre la edad exacta es decir Años,
mese y dias
8.- Ingrese un numero y muestre los numeros primos anteriores a este en un label
9.- Ingrese una cadena y visualícelo en forma invertida sin usar StrReverse
10.- Ingrese una cadena y luego encriptelo.
11.- Ingrese un numero y muéstrelo en letras ejemplo: 123 seria “Ciento veintitrés”(Utilize
funcion recursiva)
Procedimientos
12.- Genere un procedimiento que limpie todas las cajas de textos de todos los formularios.
13.- Diseñe un formulario que simule una calculadora para esto utilize arreglo de controles
14.- Diseñe un formulario que simule el juego d eun bingo utilize 2 msflexgrid yy llenelos
aleatoriamentecomo si fuera una cartilla se debe validar que la primera Columna tenga
numeros del 1 al 20 la segunda del 20 al 40 y asi sucesivamente, ademas los números no se
deben repetir
Una vez hecho esto debera hacer que cada 1 segundo salga un numero aleatorio y buscarlo
en le grid si se encuentra debe sombrear la celda de un color diferente al final debe salir que
cartilla fue la ganadora
24.- Registros.-
Se pueden combinar variables de varios tipos diferentes para crear tipos definidos por el
usuario (conocidos como structs en el lenguaje de programación C). Los tipos definidos por
el usuario son útiles si se quiere crear una única variable que registre varias unidades de
información relacionadas.
Ejemplo :
Type Alumno
Cod as integer
Nom as String * 15
End Type
Esto quiere decir que tenemos una variable llamada alumno en la cual podemos guardar 2
datos alumno.cod = 100, alumno.nom=”Juana”.
Podemos crear tambien arreglos de registros. Solo tendríamos que poner
Dim Alu(1 to 10) as alumno
Para acceder a los elemntos seria : Alu(1).Cod=100,Alu(1).Nom =”Pedro”.
Aplicación.- Registrar los datos de varios empleados en un registro , los datos de cada
empleado son ; codigo(4c), nombre(25 C), cargo(10 C) y sueldo( real simple).
Consideraciones.-
a) El codigo se genera a partir de 0001
b) Los botones de desplazamiento es para navegar en los registros ya ingresados
c) En la pagina de vacaciones se elegir el codigo del empleado mediante un combo,
mostrando automáticamente los datos del empleado, se ingresara el numero de dias
de vacaciones calculadando el dia de retorno(azul si es dia de la semana) y rojo (si
es sabado o domingo) y su pago.
Array de
Control
Opc(0)
Opc(1)
Opc(2)
Para cargo
LNRO
Los botones
de
desplazamie
nto
Cmdpri,
Cmdant,
Cmdnext
Cmdult
Paso 1.- Agregar Modulo
Type Empleado
Cod As String * 4
Nom As String * 25
Sbas As Double
Car As String * 10
End Type
Public Vreg(1 To 50) As Empleado Muestra (CR)
Public Nr As Integer CmdAnula.Enabled = True
Declaracion General CmdModi.Enabled = True
Dim tcar As String * 15 End If
Dim CR As Integer End Sub
‘Variable para desplazamiento de registros Private Sub Combo1_Click()
Private Sub CmdAnt_Click() Dim I%
If Nr > 1 Then I = Combo1.ListIndex + 1
limpia If I > 0 Then
CR = CR - 1 Lnom.Caption = Vreg(I).Nom
If CR = 0 Then Lsbas.Caption = Vreg(I).Sbas
MsgBox ("Estas en el Primer registro") Lcar.Caption = Vreg(I).Car
CR = 1 End If
Beep End Sub
End If Private Sub Optc_Click(Index As Integer)
Muestra (CR) tcar = Optc(Index).Caption
CmdAnula.Enabled = True Cmdgraba.SetFocus
CmdModi.Enabled = True End Sub
End If Public Sub limpia()
End Sub Dim obj As Object
Private Sub CmdNext_Click() For Each obj In Me.Controls
If Nr > 1 Then If TypeOf obj Is TextBox Then obj = ""
limpia If TypeOf obj Is OptionButton Then
CR = CR + 1 obj.Value = False
If CR = Nr Then Next
MsgBox ("Estas en el ultimo") Text2.SetFocus
CR = Nr - 1 End Sub
End If Private Sub Text2_Change()
Muestra (CR) Cmdgraba.Enabled = Len(Text2) > 0
End If If Len(Text2) > 20 Then
End Sub Text3.SetFocus
Private Sub CmdPri_Click() End If
limpia End Sub
CR = 1 Public Sub header()
Muestra (CR) With Grid1
CmdAnula.Enabled = True .TextMatrix(0, 0) = "Codigo"
CmdModi.Enabled = True .TextMatrix(0, 1) = "Nombres"
End Sub .TextMatrix(0, 2) = "Cargo"
Private Sub Cmdult_Click() .TextMatrix(0, 3) = "Sueldo"
If Nr > 1 Then End With
limpia End Sub
CR = Nr - 1
Public Sub Muestra(Ind As Integer)
Text1.Text = Vreg(Ind).Cod
Text2.Text = Vreg(Ind).Nom
Text3.Text = Str(Vreg(Ind).Sbas)
Select Case Left(Vreg(Ind).Car, 1)
Case "A": Optc(0) = 1
Case "S": Optc(1) = 1 Private Sub Tdias_KeyPress(KeyAscii As
Private Sub CmdAnula_Click() Integer)
Dim I%, b% Dim fecha, X As Variant
b = Nr - 1 Dim diasem As String * 15
For I = CR To b - 1 Dim sueldo, vaca As Single
Vreg(I) = Vreg(I + 1) Dim c#
Next I If KeyAscii = 13 Then
Nr = Nr - 1 fecha = Now + Val(Tdias.Text)
If Nr > 1 Then ' x = CDate(fecha)
Listado Select Case Weekday(fecha)
Muestra (CR) Case 1: diasem = "Domingo"
End If Case 2: diasem = "lunes"
End Sub Case 3: diasem = "Martes"
Private Sub CmdGraba_Click() Case 4: diasem = "Miercoles"
Vreg(Nr).Cod = Text1.Text Case 5: diasem = "jueves"
Vreg(Nr).Nom = Text2.Text Case 6: diasem = "viernes"
Vreg(Nr).Sbas = Val(Text3.Text) Case 7: diasem = "Sabado"
Vreg(Nr).Car = tcar End Select
Combo1.AddItem Vreg(Nr).Cod Lfecha.Caption = Format$(fecha,
Listado "dd/mm/yy")
limpia c = Str$(Val(Lsbas.Caption) *
Nr = Nr + 1 Val(Tdias.Text) / 30)
Text1.Text = Format(Nr, "0000") LVac.Caption = Format$(c, "###,###.#0")
Lnro.Caption = Str(Nr) Ldia.Caption = diasem
Cmdgraba.Enabled = 0 If Weekday(fecha) = 1 Then
Text2.SetFocus Ldia.ForeColor = QBColor(4)
End Sub Else
Private Sub CmdNuevo_Click() Ldia.ForeColor = QBColor(1)
limpia End If
Lnro.Caption = Str(Nr) End If
Text1.Text = Format(Nr, "0000") End Sub
CmdAnula.Enabled = False
CmdModi.Enabled = False Public Sub Listado()
End Sub Grid1.Rows = Nr + 1
Private Sub CmdSalir_Click() Grid1.Cols = 4
End Grid1.Row = 0
End Sub Call header
Private Sub Form_Activate() For I = 1 To Nr
Nr = 1: CR = 1 With Grid1
Lnro.Caption = Str(Nr) .TextMatrix(I, 0) = Vreg(I).Cod
limpia .TextMatrix(I, 1) = Vreg(I).Nom
Text1.Text = Format(Nr, "0000") .TextMatrix(I, 2) = Vreg(I).Car
Lfec.Caption = "Fecha :" & Format(Now, .TextMatrix(I, 3) = Vreg(I).Sbas
"dd/mm/yy") End With
Text2.SetFocus Next I
End Sub End Sub
Case "O": Optc(2) = 1
End SelectLnro.Caption = Str(Ind)
End Sub
Visual Basic I 72 Idat
Visual Basic I 73 Idat
Consideraciones:
2.- Se tiene un Registro de almacén cuyos campos son: Código de Producto, Descripción,
Precio de costo y stock.
Se pide realizar un programa para permitir:
a) Ingresar nuevos Productos
b) Venta de Productos donde al elegir el código de producto, mostrara automáticamente
todos sus datos dando opción a ingresar la cantidad a comprar calculando el total a pagar
respectivamente, también se debe contemplar en caso de vender una cantidad mas del
stock disponible mostrando un error
c) Cada vez que se efectué una venta el stock del producto vendido deberá ser actualizado
d) En la lista de productos, puede estar ordenado por: Descripción, código y stock.
Ejemplo:
Visual Basic I 75 Idat
Vamos a diseñar un formulario el cual tendra como finalidad registrar el codigo,nombre y sexo
de un alumno para eso vamos a utilizar variables de tipo registro
Conforme se va añadiendo los datos se mostraran en el Grid(MsflexGrid llamado TABLA)
Ademas validaremos que la ingresar los datos sean datos validos para eso crearemos
procedimientos y funciones
Otra cosa que debemos de tener en cuenta es que el boton Nuevo y Grabar(CMDNUEVO) es el
mismo y mediante programación haremos que su apariencia cambie asi como tambien el boton
Cancelar y Salir(CMDSALIR)
Ademas contamos con un nuevo control llamado Microsoft Tabbed Dialog Control 6.0
(Proyecto-Componentes)
Para tener 2 pestañas escogemos la propiedad TABS y ponemos 2 Para cambiar el caption de
cada TAB se escoge la pestaña y nos vamos a la propiedad CAPTION
En el Modulo debemos hacer lo sgte.:
Type Alumno 'Aqui se declara la estructura se llama alumno
cod As Integer
nom As String * 30
sexo As Boolean
End Type
Public r() As Alumno 'Aqui la variable R que sera el arreglo como ven es dinamico
Sub main()
ReDim r(0)
FrmMant.Show
'Noten aqui que hemos creado un sub llamado Main y es ese el objeto inicial del proyecto
'Inicializamos la variable R y llamamos al formulario
'No olvidar que en el proyecto debemos escoger como objeto inicial SUB MAIN
End Sub
NOTA: Sub main viene a ser como un procedimiento inicial que podemos crear y el VB lo
reconocera dando la opcion de ponerlo como objeto Inicial se utiliza mas que nada para
inicializar valores variables, etc. Y de ahí se debe llamar al formulario el cual queremos
ejecutar.
En el Formulario:
GeneraL
Dim Si_Nuevo%
Sub ActivaControles(ByVal Modo As Boolean) 'Para activar los botones y texto(FRAME1)
Frame1.Enabled = Modo
Visual Basic I 76 Idat
CmdModificar.Caption = "Modificar"
CmdModificar.Picture = LoadPicture(App.Path & "\edit.bmp")
Dim p%
If Si_Nuevo = 1 Then
Call ActivaControles(True)
Call Limpia
txtcod.SetFocus
Si_Nuevo = 2
Else
If valida Then
p = IIf(Si_Nuevo = 2, UBound(r), Tabla.Row - 1)
'Si se va a grabar un nuevo dato la posicion sera el ultimo elemento de R
'Si se va a modificar se debe escoger el elemento seleccionado del Grid
Call llena(p)
If Si_Nuevo = 2 Then
ReDim Preserve r(p + 1)
Tabla.Rows = Tabla.Rows + 1
End If
Si_Nuevo = 1
Call ActivaControles(False)
End If
End If
End Sub
Private Sub CmdSalir_Click()
If Si_Nuevo > 1 Then
Si_Nuevo = 1
Call ActivaControles(False)
Else
End
End If
End Sub
Private Sub Form_Load()
Call ActivaControles(False)
Si_Nuevo = 1
Tabla.TextMatrix(0, 0) = "Codigo"
Tabla.TextMatrix(0, 1) = "Nombre"
Tabla.TextMatrix(0, 2) = "Sexo"
End Sub
Private Sub Tabla_RowColChange() 'Muestra los datos del grid a los textos
txtcod = Tabla.TextMatrix(Tabla.Row, 0)
txtnom = Tabla.TextMatrix(Tabla.Row, 1)
If Tabla.TextMatrix(Tabla.Row, 2) = "M" Then
Option1.Value = True
Else
Option2.Value = True
End If
End Sub
Nota: en la pestaña Consulta se debe escoger un sexo y deben salir los alumnos de ese Sexo.
Visual Basic I 78 Idat
por que un MDI? Por que es el indicado yaque un MDI es un formulario que contendra a los
demas formularios siempre y cuando a los demas formularios se le ponga TRUE en la propiedad
MDICHILD
Luego escogemos Imágenes y hacemos clic en Insertar Imágenes y escogemos la imagen que
queremos insertar y asi seleccionamos la cantidad de imágenes que queremos
Visual Basic I 80 Idat
Para que hacer esto???? Simplemente para jalar las imágenes de este imagelist al toolbar
Una vez hecho esto seleccionamos el toolbar clic derecho propiedades
al finalizar nos quedara el formulario MDI con la barra de herramienta que hemos creado.
Ahora se quiere que por cada Boton salga un menu algo asi:
Para hacer esto hacemos clic derecho al toolbar propoiedades y escogemos el boton 1 y hacemos
clic en la opcion INSERTAR BUTTON MENU y en text ponemos lo que queremos que diga la
opcion del submenu
Visual Basic I 82 Idat
Ahora para que salga la opcion de submenu se debe escoger en STYLE la opcion
5(TBRDROPDOWN) esto es importante si no se hace no se vera el resultado. Y listo.
Ahora vamos a trabajar con el STATUSBAR asi que lo seleccionamos y hacemos clic derecho –
propiedades-paneles
en text ponemos lo que queremos que salga en el panel si queremos insertar otro panel hacemos
clic en INSERTAR PANEL si queremos insertar una imagen hacemos clic en EXAMINAR .
Si queremos que en algun panel nos salga si la tecla MAYÚSCULA esta activada o si el teclado
Numerico esta activado debemos escoger en la propiedad STYLE lo que queremos
Por ejemplo(caps-mayusculas,num-teclado numerico, ins-la tecla insert,date-saca la fecha
actual,etc.)
Visual Basic I 83 Idat
Si queremos agrandar el tamaño del panel en la propiedad MINIMUN WIDTH (que esta por
defecto 1440.00) debemos poner un numero mayor.
NOTA .- si en STYLE escogimos por ejemplo sbrCaps en el panel saldra la palabra MAYUS si
sale medio transparente significa que la tecla mayúscula esta desactivada y si sale de color negro
quiere decir que esta activado.
Asi mismo si queremos escribir algún texto la propiedad STYLE debe estar en sbrTEXT
El resultado final sera el siguiente:
Ahora veamos como vamos a programar para que cuando se haga clic en el toolbar llame al
formulario correspondiente: (Se debe programar en el evento ButtonMenuClick)
Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu)
'buttonmenu.parent.index es para saber el indice del boton
'donde se encuentra el menu escogido osea (pregunta1,pregunta2,pregunta3,pregunta4)
N = ButtonMenu.Parent.Index ‘N tomara los valores 1,2,3 o 4 dependiendo que boton se
‘selecciono
Select Case op
Case 1: Form1.Show ‘se escogioPregunta1-opcion1
Case 2: Form2.Show ‘se escogioPregunta1-opcion2
Case 3: Form3.Show ‘se escogioPregunta1-opcion3
End Select
Case 2: ' Se escogio Pregunta2
Case 3: ' Se escogio Pregunta3
Case 4: ' Se escogio Pregunta4
End Select
End Sub
Y listo.
Ahora hagamos que cuando se llame a los demas formularios en la barra de estado del formulario
principal salga un texto que indique que formulario esta activo
Entonces debemos programar en cada formulario por ejemplo en el formulario1
Private Sub Form_Load()
MDIForm1.StatusBar1.Panels(2).Text = "Estas en el formulario 1"
‘Esto sera el panel 2 del MDI
End Sub
Donde MDIFORM1 es el nombre del formulario MDI, STATUSBAR1 es el nombre de la barra
de estado que se creo en el MDI luego escogemos en que panel quiero que me salga el texto los
paneles empiezan de 1 y el resultado cuando se llame al formulario1 sera el siguiente.
Pantalla Inicial:
Para la pantalla inicial debemos utilizar un control llamado PROGRESSBAR y
SHOCKWAVEFLASH el progress viene junto al toolbar y statusbar simplemente lo jalamos y
para el ShockWaveFlash debemos ir a Proyecto-Componentes
Y escogemos ShockWaveFlash
Visual Basic I 85 Idat
FrmPrincipal.Show
Unload Me
Else
Label1 = "Cargando configuracion al " & ProgressBar1.Value & "%"
ProgressBar1.Value = ProgressBar1.Value + 1
End If
FILEDATATIME Devuelve una fecha que indica la fecha y hora en que un archivo fue creado o
modificado por última vez.
Sintaxis Variable = FileDateTime(nombreRuta)
El argumento con nombre nombreRuta es una expresión de cadena que especifica un nombre de
archivo. Se puede incluir el directorio o carpeta y la unidad de disco.
NOTA:Si queremos ver otras propiedades debemos declarar uan variable de tipo
FileSystemObject para eso debemos irnos a Proyectos-Referencias- Microsoft Scripting Runtime
de ahí declaramos una variable asi: dim xvar as new FileSystemObject al poner xvar. Nos saldra
un menu con todas las propiedades que existen para manejar archivos.
Ejemplo: Diseñar un formulario al cual se le debe ingresar el nombre de un archivo y este se debe
eliminar del PC
General
Dim Fso As New FileSystemObject ‘Debemos primero irnos a referencias –Microsoft ‘Scripting
Runtime no se olviden
Dim cont%
Tal como indica su nombre, estos controles son listas. Repase el control ListBox para recordar
sus propiedades.
DriveListBox
Este control permite elegir una unidad de disco válida en tiempo de ejecución. Utilice este control
para mostrar una lista de todas las unidades válidas del sistema de un usuario.
Aparte de las propiedades geométricas de todos los controles, el DirListBox presentas las
siguientes propiedades particulares :
Path
Devuelve o establece la ruta de acceso actual. No está disponible en tiempo de diseño.
donde
FileListBox
Como se puede apreciar, cuando el número de ficheros supera el número que puede presentar,
aparecen automáticamente las flechas de scroll verticales.
Path
Visual Basic I 91 Idat
ListCount
ListIndex
Devuelve un número con el índice del elemento seleccionado. Como todas las listas, devuelve -1
si no hay ningún elemento seleccionado. El primer elemento de una lista tiene el índice = 0.
Filename
List (n)
Variable = List1.List (5) Variable = nombre del fichero que ocupa el 5º lugar en la
lista.
Pattern
Devuelve o establece un valor que indica los nombres de archivo mostrados en un
control FileListBox en tiempo de ejecución.
caracteres comodín, también puede especificar varios modelos, separándolos con caracteres
punto y coma (;). Por ejemplo, con *.EXE; *.BAT se obtendría una lista con todos los archivos
ejecutables y todos los archivos por lotes de MS-DOS.
FUENTES
Para mostrar el cuadro de diálogo correspondiente a Tipos de Letra ( Fonts ), debe ejecutarse la
instrucción:
CD1.ShowFont
COLOR
CD1.ShowColor
Variablecolor = CD1.Color
Visual Basic acepta para especificar un color, tres procedimientos: Mediante el número de color,
mediante la sentencia RGB ( rojo, verde, azul ) o mediante la función QBColor.
Por número
El número que representa el color en VB está formado por la suma de la componente roja, la
componente verde y la componente azul. Podríamos verlo muy bien en numeración Hexadecimal:
Color = Hex XX YY ZZ
Donde ZZ es un número Hexadecimal que representa la cantidad del color rojo. El mínimo
estaría en 0 (H00) y el máximo en 255 (HFF)
YY representaría la cantidad de color verde y XX la de color azul, ambos con los mismos límites
explicados para el rojo.
Se puede expresar el color, poniendo simplemente RGB (rojo, verde, azul), donde rojo es un
Visual Basic I 95 Idat
número entre 0 y 255 que indica la cantidad de color rojo que se aporta al color, verde un número
comprendido entre 0 y 255 indicando la cantidad de verde, y lo mismo para azul.
Esta es la forma mas sencilla de poner la propiedad color, y con la que mejor controlaremos el
mismo.
Esta función se ha puesto en Visual Basic para compatibilidad con los colores que se usan en
Quick-Basic y Qbasic. Mediante esta función se obtienen solamente 16 colores.
Sintaxis Objeto.QBColor(color)
0 Negro 8 Gris
1 Azul 9 Azul claro
2 Verde 10 Verde claro
3 Aguamarina 11 Aguamarina claro
4 Rojo 12 Rojo claro
5 Fucsia 13 Fucsia claro
6 Amarillo 14 Amarillo claro
7 Blanco 15 Blanco brillante
IMPRESORAS
CD2.ShowPrinter
Posiblemente las opciones mas usadas del cuadro de diálogo. Para presentar el cuadro de diálogo
correspondiente a Abrir Archivo, debe ejecutar la instrucción:
CD1.ShowOpen
Si lo que necesita es abrir el cuadro de diálogo para guardar un fichero, debe ejecutar la
instrucción :
CD1.ShowSave
Nombrefichero= CD1.filename
El nombre del fichero, Nombrefichero en la sentencia anterior, viene con su path, es decir,
nombre y dirección completa, por lo que puede emplearse directamente la salida del
CommonDialog para abrir un fichero.
La Propiedad Action
Valor Descripción
0 Ninguna acción.
1 Muestra el cuadro de diálogo Abrir.
2 Muestra el cuadro de diálogo Guardar como.
3 Muestra el cuadro de diálogo Color.
4 Muestra el cuadro de diálogo Fuente.
5 Muestra el cuadro de diálogo Impresora
6 Ejecuta WINHELP.EXE.
La Barra de Menú puede tener tantas palabras como se desee, y sobre cada palabra, puede
desplegarse un Menú desplegable con mas palabras. Sobre cada una de estas puede a su vez
desplegarse otro conjunto de palabras, etc. con lo que se puede conseguir una cantidad de
palabras tan grande como necesitemos.
Visual Basic I 98 Idat
Para crear un menú debe usarse el Editor de Menú, que se encuentra en la Barra de Menú de
VB en Herramientas | Editor de menús. Le aparecerá el siguiente cuadro. (En principio
vacío)
Existen otras propiedades aparte del Caption y Name que se introducen directamente en las
casillas al efecto.
HelpContextID Igual que esta propiedad en el resto de los controles, permite introducir un
número de contexto para la ayuda de Windows.
Enabled. Habilitado. Si se quita la marca de esa casilla, esa palabra aparecerá por defecto
deshabilitada..
Visible. Como su nombre indica, que sea visible o no lo sea. Puede cambiarse en
tiempo de ejecución.
WindowList Indica si esa palabra es la que va a mostrar todos los formularios abiertos en una
aplicación de documentos múltiples (MDI). Al hacer click sobre esta palabra, se desplegará un
submenú con todos los Caption de los Formularios hijo abiertos en ese momento
Otras propiedades
Shortcut Atajo. Esta propiedad admite varias combinaciones de teclas para acceder al
procedimiento click de esa palabra sin necesidad de usar el ratón.
El menú editado con los datos de la figura anterior tendrá esta forma en tiempo de ejecución :
Visual Basic I 99 Idat
OBJETO CONNECTION.-
Un objeto Connection representa el enlace o la conexión a algún manejador de Base de Datos.
Para hacer un enlace a un Manejador de Base de Datos debemos declarar una variable de tipo
connection para eso debemos hacer lo siguiente:
5. Abrir la conexión
cn.open “cadena de conexión” .- donde la cadena de conexión puede variar según a que
manejador de base de datos queremos conectarnos
Para Acces La cadena de conexión sería:
"Provider=Microsoft.Jet.OLEDB.4.0;Datasource=d:\micarpeta\Mibase.mdb”
Donde el proveedor indica que la conexión será con Access y el data source indica la
ubicación y el nombre de la base de datos
Para SQL Server la conexión sería:
"Provider=sqloledb;uid=sa;database=Mibase;server=a1_10”
Donde el proveedor indica que la conexión es a SQL el UID hace referencia al usuario del
SQL ya que SQL server maneja usuarios y el usuario SA es el usuario por defecto,
Database hace referencia a la base de datos a la cual se quiere conectar y server el nombre
de la maquina donde se encuentra la base de Datos.
OBJETO RECORDSET.-
Un objeto Recordset representa los registros de una tabla o una consulta a la cual nosotros
queremos acceder. Para manipular la información de una tabla nosotros debemos declarar una
variable de tipo recordset y esta variable contendrá todos los campos y registros de la tabla o la
consulta a la cual queremos acceder.
Ejemplo:
Visual Basic I 100 Idat
Para utilizar una variable de tipo recordset lo que vamos a hacer es lo siguiente
1. En este caso vamos a trabajar de la mano con la variable de tipo connection entonces lo
primero es declarar,instanciar y abrir una variable de tipo connection
- donde tabla o consulta sql es el nombre de la tabla o la consulta sql al cual queremos
acceder
- cn es el nombre de la variable de tipo connection
- Tipo de cursor hace referencia a como va a trabajar la variable de tipo recordset
- Tipo de Bloqueo hace referencia a como se va a bloquear la tabla cuando un usuario
acceda a la tabla
Los bloqueos deben ser utilizados casi obligatoramente en Recordset que hacen referencia a bases
de datos con alta concurrencia de usuarios. Mediante la utilización de estos bloqueos podremos
controlar el tipo de acceso que le daremos a los demás usuarios cuando alguien ya se encuentre
modificando el Recordset. Los tipos de bloqueos que podremos utilizar son los siguientes:
Ejemplo 1:
rs.Open "Alumnos",cn,adOpenDynamic ,adLockOptimistic .- Aquí se esta abriendo la tabla
alumnos de la base de datos a la cual se conecto la variable cn de tipo de cursor fue
adOpenDynamic y el tipo de bloqueo fue adLockOptimistic
Ejemplo 2:
Rs.Open “Select * from alumnos where sueldo > 100”,cn,2,3
En este ejemplo se esta abriendo la variable rs con una consulta sql
Para acceder a un determinado campo de la variable de tipo recordset se puede hacer de la
siguiente manera:
Ejemplo: vamos a suponer que la variable rs tiene dos campos cod y nom
Rs(0)
Rs.Fields(0)
Rs!cod
harían referencia al campo cod (va 0 por que es el índice del campo todos los índices empiezan
con 0)
Método Descripción
MoveFirst Posiciona el cursor en el primer registro
MoveLast Posiciona el cursor en el último registro
MoveNext Avanza el cursor en un registro
MovePrevious Retrasa el cursor en un registro
Las propiedades relacionadas con el movimiento a través del Recordset son las siguientes:
Propiedad Descripción
AbsolutePosition Nos indica el número del registro en el que nos
encontramos. También lo podemos utilizar para movernos a
una determinada posición. Ej.: rs.AbsolutePosition = 5
BOF Es True cuando nos encontramos al principio del Recordset,
antes del primer registro.
EOF Es True cuando nos encontramos al final del Recordset,
después del último registro.
RecordCount Nos señala el número de registros que contiene el objeto
Recordset.
Ahora que hemos visto los aspectos básicos de un Recordset entregaremos al lector una guía con
los principales métodos asociados a este objeto, de forma que se pueda profundizar en el estudio
y utilización del objeto Recordset.
Método Descripción
AddNew Crea un nuevo registro en el Recordset. Sólo será
insertado en la tabla cuando se aplique el método
Update. Ejemplo:
rs.AddNew
rs(0) = "Rodrigo"
rs(1) = "Rohland"
rs.Update
CancelUpdate Cancela un proceso de actualización, ya sea de
creación o de modificación de registros.
Clone Crea una copia del objeto Recordset. Ejemplo:
Set rs2 = rs.Clone
Close Cierra el objeto Recordset utilizado.
Delete Elimina del Recordset el registro que estemos
utilizando en ese momento.
GetRows Crea un arreglo con el contenido del Recordset. Si
quieres aprender más sobre este método visita.
Move Permite movernos hacia arriba si le indicamos un
número positivo, o hacia abajo si le indicamos uno
negativo. Ejemplo:
rs.Move -2
MoveFirst Nos lleva al primer registro del Recorset.
Visual Basic I 103 Idat
Otras propiedades
Filter .- Sirve para filtrar la variable de tipo recordset
Rs.Filter “Condicion de filtro”
Ejemplo :
rs.Filter = “sueldo > 100” .- aquí se esta filtrando los datos de la variable Rs donde el sueldo sea
mayor a 100 (la condicion va como cadena)
Find .- Sirve para buscar en base a un criterio, esta funcion hace que el puntero se ubique en la
posición del registro que se ha buscado.
Rs.find “Condicion de Busqueda”
Ejemplo :
Rs.Find "cod='A001'" .- Aquí se esta buscando el registro que tenga como codigo el ‘A001’ si en
caso existe el puntero se ubica en ese registro caso contrario se va al fin de archivo (EOF toma el
avlor de True)
Nam
Considerar el Siguiente formulario
Name :
CmdCone
CmdDescon
CmdMover
End Sub
CODIGO EN EL FORMULARIO
Public Sub limpiar()
Dim x As Object
For Each x In Form1.Controls
If TypeOf x Is TextBox Then
x.Text = ""
x.Enabled = False
End If
Next x
End Sub
CODIGO EN EL MODULO
Igual al Modulo anterior
CODIGO EN EL FORMULARIO
Public Sub Barra_Progreso()
‘Muestra la barra de progreso
Dim i As Integer
For i = 0 To 100
ProgressBar1.Value = i
Next i
End Sub
Visual Basic I 107 Idat
End Sub
End Sub
Private Sub Form_Load()
Call Conectar
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.ActiveConnection = Cn
Rs.CursorType = adOpenDynamic
Rs.LockType = adLockBatchOptimistic
Rs.Open "PRODUCTOS"
‘se puede minimizar la operación de la siguiente manera
'Rs.Open "PRODUCTOS", Cn, adOpenDynamic, adLockBatchOptimistic
Set Rt = New ADODB.Recordset
Rt.Open "CATEGORIAS", Cn, adOpenStatic, adLockReadOnly
Set DataCombo1.RowSource = Rt
DataCombo1.ListField = "COD_CAT"
DataCombo1.BoundColumn = "COD_CAT"
End Sub
*********************************************************************
'Procedimiento que permite Generar el Código
'Un Nuevo registro
Private Sub CmdNuevo_Click()
Dim cod As Integer
If Rs.RecordCount > 0 Then
Rs.MoveLast 'Ir al último registro
cod = Val(Right(Rs!COD_PROD, 3)) + 1
TxtCod_Prod = "P" + Format(cod, "000")
Else
TxtCod_Prod = "P001"
End If
Call Habilitar
TxtCod_Prod.Enabled = False
CmdGuardar.Enabled = True
TxtDes_Prod.SetFocus
End Sub
*********************************************************************
‘Guardar el Registro
Private Sub CmdGuardar_Click()
On Error GoTo GUARDARERROR
Dim Rpta As Integer
Rpta = MsgBox("Seguro de Guardar", 4 + 32, "Guardar")
If Rpta = vbYes Then
Rs.AddNew 'Añadir Registro en Blanco
Call Guardar 'Sustituir datos del formulario a la tabla
Rs.UpdateBatch 'Actualizar el registro
CmdGuardar.Enabled = False
End If
Form_Activate
Exit Sub
GUARDARERROR:
Visual Basic I 109 Idat
*********************************************************************
Private Sub CmdBuscar_Click()
‘Localizar un registro
Dim codbus As String * 4
Rs.MoveFirst
codbus = InputBox("Ing. Código Producto Buscar", "Buscar Producto")
criterio = "COD_PROD='" + UCase(Trim(codbus)) + "'"
Rs.Find criterio
If Rs.EOF Then
MsgBox "CODIGO PRODUCTO NO EXISTE"
Call Limpiar
Else
Call Mostrar
End If
End Sub
*********************************************************************
Private Sub CmdEditar_Click()
'Modificar los datos del campo
Dim Rpta As Integer
Dim codbus As String * 4
Rs.MoveFirst
codbus = InputBox("Ing. Código Modificar", "Modificar Producto")
criterio = "COD_PROD='" + UCase(Trim(codbus)) + "'"
Rs.Find criterio
If Rs.EOF Then
MsgBox "CODIGO PRODUCTO NO EXISTE"
Call Limpiar
Else
Call Mostrar
Call Habilitar
TxtCod_Prod.SetFocus
End If
End Sub
*********************************************************************
Private Sub CmdActualizar_Click()
On Error GoTo ERRORACTUALIZAR
If MsgBox("Seguro de Actualizar", 4 + 32, "Actualizar") = vbYes Then
Call Guardar
Rs.UpdateBatch
MsgBox "Registro Actualizado"
CmdActualizar.Enabled = True
End If
Exit Sub
Visual Basic I 110 Idat
*********************************************************************
Private Sub CmdCerrar_Click()
'Cerrar la conexión con la Base de Datos
Cn.Close
Set Cn = Nothing
End
End Sub
Private Sub
DataCombo2_Click(Area As Integer)
Dim Dato As String
ProgressBar1.Value = 0
If Area > 0 Then
Call Barra_Progreso
Rp.MoveFirst
Dato = "DES_PROD='" + DataCombo2.Text + "'"
Rp.Find Dato
Txtcod = Rp.Fields("cod_prod")
TxtPre = Rp.Fields("pre_prod")
TxtStk = Rp.Fields("stk_prod")
TxtCat = Rp.Fields("COD_CAT")
Visual Basic I 111 Idat
Exit Sub
End If
End Sub
Ejercicio .-
Modificar el ejercicio de registros , pasandolo a archivos
Ejemplo Practico :
Para este ejemplo debemos tener una base de datos en ACCESS llamada BDIDAT que
debe estar en la misma carpeta que el proyecto. y dentro de esta un tabla llamada alumno
con los sgtes campos:codalu, nomalu, sexo, foto(aquí se guarda el nombre de una imagen
osea es una cadena)
Debemos diseñar un formulario el cual debe contener un TabbedDialog el cual tendra 3
pestañas
Registrar.- En esta parte se debera realizar un mantenimiento a la tabla alumno
Contaremos con controles como Txtcod, Txtnom, Option1, Option2, CboFoto y DataGrid1
Visual Basic I 112 Idat
Consulta x Sexo .- se escogera un sexo y al hacer clic en el boton OK sale los alumnos de
ese sexo.(Aquí tenemos los controles OP1, OP2 y cmdok ademas del grid DATAGRID2)
OJO: El control TABBED Dialog solo sirve como contenedor es como un Frame la
diferencia es que tiene pestañas para jalarlo tenemos que ir a Proyecto- Componentes-
Microsoft Tabbed Dialo Controls 6.0
Tambien utilizaremos un datagrid que esun control en forma de cuadricula el cual me va a
permitir mostrar datos de un recordset mediante su propiedad DATASOURCE para jalarlo
nos vamos Proyecto- Componentes-Microsoft DataGrid Controls 6.0
Visual Basic I 113 Idat
La programacion seria:
Primero en un modulo debemos poner:
Public cn$ ‘Cn es publica por lo tanto sera reconocida en todo el proyecto
Sub main()
cn = "Provider=Microsoft.Jet.Oledb.4.0;data Source=” & app.path &”\BDIDAT.mdb”
FrmMant.Show
End Sub
Se debe utilizar siempre un Procedimiento llamado main ya que este permitira inicializar
valores, definir constantes, etc. Y de ahí podemos llamar al formulario inicial, generalmente
el formulario inicial debe ser uno que llame a los demas puede ser un MDI.
Para crearlo solo ponemos SUB MAIN y programamos dentro todo lo que queramos.
Notemos que guardamos la cadena de conexion y llamamos al formulario si estamos dentro
de un Sub main del modulo debemos ponerlo como inicial(Explorador de Proyecto-
Propiedades- Objeto Inicial)
En el formulario:
No olvidar de hacer la referencia a ADO(Proyecto-Referencias)
Dim rs As New ADODB.Recordset
Dim Si_Nuevo%
CmdModificar.Caption = "Modificar"
CmdModificar.Picture = LoadPicture(App.Path & "\edit.bmp")
CmdEliminar.Caption = "Eliminar"
CmdEliminar.Picture = LoadPicture(App.Path & "\delete.bmp")
Sub Limpia()
Visual Basic I 114 Idat
txtcod = ""
txtnom = ""
Option1.Value = True
CboFoto.Text = ""
Image1.Picture = Nothing
End Sub ‘Limpia el formulario
rs.CursorLocation = adUseClient
rs.Open "Alumno", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
Visual Basic I 116 Idat
End Sub
NOTA: En el campo foto se debe grabar el nombre de una imagen con la extensión, la
imagen debe encontrarse en el mismo sitio que el proyecto.