aprende a programar con vb 6-0
TRANSCRIPT
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
1
Primeros pasos en Visual BASIC 6.0
Ejercicios importantes para aprender a programar
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
2
Partes de la Computadora.
Abrimos el programa Visual Basic seleccionamos Nuev o proyecto y comenzamos a trabajar. Este ejercicio muestra un truco muy sencillo pero d e gran utilidad. A veces tenemos una imagen total que queremos particionar, en este caso la computadora, que nos permite subdividirla en tres partes : monitor, teclado, gab inete. Esto por código sería muy complejo pero usando el control Label en su modo transparent e y con el Caption vacío, o sea sin etiqueta nos permite subdividir la imagen y que sus partes respondan a el evento Click por separado, provocando una respuesta distinta.
En el formulario podemos ver la Label dibujada sobr e el monitor, todavía opaca como viene por defecto, luego sobre el gabinete está transpare nte pero con el Caption , también por defecto en este caso : Label2. Y en el teclado dond e está posicionado el cursor en cambio está transparente. De acuerdo a la parte que selecc ionemos: en una cuarta Label se nos mostrará el texto correspondiente, en el caso del f ormulario : "Teclado".
En este ejercicio tenemos una Image, con su Propied ad Stretch a True, lo que nos permite agrandar un icono al tamaño deseado. Y cuatro Label s, tres transparentes para subdividir la Image y una opaca para mostrar la parte seleccionad a, y un Botón de Salida.
El Código de este ejercicio es el siguiente:
Private Sub Command1_Click()
End ' Cierre de la aplicación
End Sub
Private Sub Label2_Click() 'El evento Click modific a el titulo de 'label1
Label1.caption = "Monitor"
End Sub
Private Sub Label3_Click()
Label1.caption = "Gabinete"
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
3
Private Sub Label4_Click()
Label1.caption = "Teclado"
End Sub
Crucigrama.
Comenzamos un nuevo proyecto.
Con este ejercicio queremos sugerir una ejemplo de crucigrama que cada uno podrá adaptar a los contenidos requeridos. También a partir de aq uí podríamos elaborar un Ahorcado.
El crucigrama está armado con cuadros de texto o se a controles Text, encerrados dentro de un control frame, este control tiene la única final idad de agrupar y contener otros controles, ordenando la interactividad de una manera visual. O tros dos controles Frame agrupan las opciones vertical y horizontal. Conteniendo control es CheckBox que al ser seleccionados hacen la corrección de las letras ingresadas en las cajas de texto. El ingreso de las mismas se hace en tiempo de ejecución a través del teclado .
A la derecha vemos unos controles Picture vacíos qu e se cargaran con imágenes que muestren por ejemplo una cara sonriente si la palab ra es correcta o seria si no lo es, o cualquier otro tipo de imagen .Podemos llamar a est a imagen con la función LoadPicture desde cualquier parte de nuestro disco rígido. Y un botón con el icono de Hijitus indica la Salida y cierre del programa.
Acá tendremos que crear por código una estructura c ondicional que controle si la entrada de datos es correcta o no.
El código es el siguiente:
Private Sub Command1_Click()
End
End Sub
Private Sub Check1_Click()
If Text1.Text = "L" And Text2.Text = "O" And Text3. Text= "R" And Text4.Text ="O" then ' este código debe ir todo en un mismo reglón y 'chequea s i se escribió una de las palabras
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
4
correctas. Ciudado con los 'nombres de los Controle s porque seguramente Ustedes no tendrán la 'misma numeración que yo. (Otra aclaraci ón cuando usamos el carácter ' 'indicamos que todo lo que sigue es un comentario, por lo tanto la 'computadora no lo ejecuta lo saltea, no es código).
Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face 03.ico) 'carita linda
Else 'Sino
Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea
End Sub
Private Sub Check2_Click()
If Text2.Text = "O" And Text5.Text ="R" And Text9.T ext ="O" then
Image2.Picture = LoadPicture(c:\vb\Icons\Misc\Face0 3.ico) 'carita linda
Else 'Sino
Image2. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea
End Sub
Private Sub Check3_Click()
If Text7.Text = "R" And Text8.Text ="A" And Text9.T ext ="T" And Text4.Text ="O" And Text10.Text ="N" then
Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face 03.ico) 'carita linda Else 'Sino
Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea
End Sub
Sumas.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
5
Este ejercicio elige en forma Aleatoria dos números y los despliega en dos Labels para que el alumno luego, introduzca el valor correcto de la suma de ambos en un TextBox . Si está bien le aparecerá la carita sonriente y sino la de disgusto. Luego volverán a aparecer otros dos números para que siga sumando.
El botón Aplicar permite hacer la corrección median te un Condicional. Algunos de estos temas son comunes a otros ejercicios. Por lo tanto nos centraremos en las funciones nuevas.
La función Rnd nos permite cargar en una variable u n número aleatorio que en este caso definimos como entero Int (de Integer) y de 0 a 10.
Num1 = int( Rnd * 10)
Repetimos el procedimiento para Num2, el segundo su mando de nuestra cuenta. Para que realmente sea aleatorio debemos incorporar la sente ncia Randomize en el Procedimiento Load del Formulario.
Otra función que utilizamos es Val que transforma u na cadena de caracteres, en este caso el contenido de un Text en un valor numérico.
Resultado = Val ( Text1.Text)
Y luego con un condicional y el operador de suma + controlamos si el resultado es correcto:
If resultado = Int(num1) + Int(num2) then...
En el caso de resolver bien la cuenta pasa a cargar otros dos números , iniciando una nueva cuenta. Pero necesitamos una espera en la aplicació n. Esto lo hacemos por código con un bucle que asociado al reloj del sistema crea una pa usa en la aplicación. Para esto creamos un Procedimiento llamado Pausa. Posicionados en la ventana de código , vamos a Tools/ Herramientas, Add Procedure/ Agregar Procedimiento, y en la ventana que se nos abre elegimos un Name para el mismo en este caso = Pausa y luego con los botones de opción seleccionamos: Sub y Private. Damos el Aceptar y se cierra la ventana. Ahora veremos en nuestra ventana de código un nuevo Procedimiento ll amado Pausa. Incluido dentro de los procedimientos del objeto General. Luego lo llamare mos desde otra parte del programa con la sentencia Call.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
6
Para mayor claridad vamos al código:
Option Explicit
Dim num1, num2, resultado As Integer
Private Sub pausa() ' este el procedimiento creado por nosotros
Dim comenzar
Dim controlar
comenzar = Timer
Do Until controlar > = comenzar + 1.5 ' este es el bucle de espera
controlar = Timer
DoEvents ' esta sentencia evita un bucle egoista
Loop
End Sub
Private Sub Command1_Click()
num1 = Int(Rnd * 10) 'elige un número aleatorio
num2 = Int(Rnd * 10) 'elige un número aleatorio
Text1.Text = ""
Label1.Caption = num1
Label2.Caption = num2
Text1.SetFocus ' ubica el foco del cursor en el con trol Text1
Command2.Enabled = False
Image1.Picture = Nothing 'vacía el contenido de la imagen
End Sub
Private Sub Command2_Click()
Command2.Enabled = False
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
7
resultado = Val(Text1.Text)
If resultado = Int(num1) + Int(num2) Then
Image1.Picture = Picture1.Picture
Call pausa ' llama al procedimiento que creamos com o Pausa
Call Command1_Click 'este procedimiento llama a otr a suma
Else
Image1.Picture = Picture2.Picture
End If
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
Private Sub Form_Load()
Randomize
num1 = Int(Rnd * 10)'al cargarse el programa ya apa rece una cuenta
num2 = Int(Rnd * 10)
Text1.Text = ""
Label1.Caption = num1'se vuelcan las variables en l as Labels
Label2.Caption = num2
Command2.Enabled = False'el botón aplicar está desa ctivado
End Sub
Private Sub Text1_Change()
Command2.Enabled = True'al cambiar el texto se acti va Aplicar
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
8
Imprimiendo con Printer.
En este formulario desplegamos datos en cajas de te xto y a través del Boton Imprimir vamos a darle salida a estos datos por la Impresora que el sistema tenga por defecto. Para esto usamos el objeto Printer, que nos permite cont rolar el texto, cambiar su aspecto, tamaño, tipo y color de la fuente y coordenadas. Private Sub Command1_Click()
Printer.Orientation = 1
' La orientación del papel es vertical
Printer.FontSize = 12
'Tamaño de la letra
Printer.Print
'Un renglón en blanco o salto de carro
Printer.Print
Printer.Print
Printer.Print Tab(15); Label1.Caption; Tab(30); Tex t1.Text
'Aquí damos la orden de impresión del caption de la label1 a 15 espacios 'del margen izquerdo y luego a 30 espacios del margen izquierdo el 'contenido del texto.
Printer.Print
Printer.Print
Printer.Print Tab(15); Label2.Caption; Tab(30); Tex t2.Text
Printer.Print
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
9
Printer.Print
Printer.Print Tab(15); Label3.Caption; Tab(30); Tex t3.Text
Printer.Print
Printer.Print
Printer.Print
Printer.Print Tab(15); Label4.Caption; Tab(30); Tex t4.Text
Printer.Print
Printer.Print
Printer.Print Tab(15); Label5.Caption; Tab(30); Tex t5.Text
Printer.Print
Printer.Print
Printer.Print Tab(15); Label6.Caption; Tab(30); Tex t6.Text
Printer.EndDoc
'damos por terminada la impresión
End Sub
Este ejercicio nos permite de una manera simple pod er distribuir la impresión de forma personalizada.
Internet
Este ejercicio nos permite mediante un evento click sobre un botón conectarnos con un sitio web determinado, incorporando el control WebB rowser, este control no es estándar y lo debemos traer de Componentes, Microsoft Internet Control.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
10
Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.yahoo.com"
'WebBrowser1.GoHome
End Sub
La propiedad Navigate del control WebBrowser es el nos permite navegar hacia un sitio web, estando conectados a nuestro servidor, obviame nte, la otra propiedad alternativa GoHome nos conecta con la página predeterminada de Inicio.
Este control nos resulta muy útil cuando queremos q ue los alumnos consulten determinados sitios, antes visitados por nosotros, y así evitamos navegaciones inútiles o peligrosas por sus contenidos.
Un Navegador.
Otro ejercicio usando el control WebBrowser, en est e caso creamos un Navegador muy simple. Con el control Toolbar asociado al ImageLis t creamos una barra de herramientas, esto ya lo hemos visto en otros ejercicios. Por lo tanto nos centraremos en otras propiedades del WebBrowser.
Una caja de texto contiene la URL o dirección del s itio a visitar. Y una barra de estado o StatusBar dividida en tres paneles despliega: un me nsaje, la hora y la fecha respectivamente.
El código es el siguiente:
Private Sub Command1_Click() ' este control está oc ulto
If Text1.Text <> "" Then
WebBrowser1.Navigate Text1.Text
If WebBrowser1.Visible = False Then
WebBrowser1.Visible = True
End If
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
11
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'equivale a la tecla Enter
Command1_Click
End If
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As Co mctlLib.Button)
Select Case Button.Key
Case "back" 'se identifica por la Key
On Error Resume Next
WebBrowser1.GoBack 'Retrocede
Case "forward"
On Error Resume Next
WebBrowser1.GoForward 'Adelanta
Case "home"
Text1.Text = "http://www.geocities.com/SiliconValle y/Garage/6472"
Command1_Click
Case "refresh"
WebBrowser1.Refresh 'actualiza o refrezca
Case "stop"
WebBrowser1.Stop 'detiene la búsqueda
End Select
End Sub
Private Sub WebBrowser1_DownloadBegin()
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
12
StatusBar1.Panels(1).Text = "Cargando Página..."
End Sub
Private Sub WebBrowser1_DownloadComplete()
StatusBar1.Panels(1).Text = "Listo"
End Sub
Dibujar
Con este ejercicio podrán los alumnos dibujar en ti empo de ejecución. Podemos agregarles una paleta de colores similar al Paint.
En caso de imprimir el dibujo es necesario que la p ropiedad del Formulario Autoredraw esté a True para que el formulario se refresque e imprim a el dibujo realizado.
Dim draw As Boolean 'declaramos una variable bulean a
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = True 'estamos dibujando
CurrentX = X' carga en la variable la ubicación en la coordenada X
CurrentY = Y' carga en la variable la ubicación en la coordenada Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If draw Then Line -(X, Y) ' si la variable draw est a a verdadera 'dibuja cada uno de los puntos.
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift A s Integer, X As Single, Y As Single)
draw = False 'la variable draw a falsa detiene el d ibujo
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
13
Relacionar varios formularios. A pedido de varios seguidores de nuestra página vamos a integrar en un solo proyecto varios formula rios. El proyecto se compone de 5 formularios: Presentación, Planetas, Información, E valuación y Créditos.
Retomando un ejercicio simple ya explicado el Nº 7 El Sistema Solar, vamos a agregarle una primera pantalla de presentación con distintos boto nes o labels que nos vinculan a los otros formularios:
La label Planetas nos muestra el formulario del eje rcicio Nº7 con los distintos planetas y el procedimiento Clic de cada label transparente nos v incula a una Base de Datos previamente armada con el Data Jet, el motor para Base de Datos de Visual Basic 5 o con Access, donde tendremos la información referente a cada planeta, en este caso: el nombre del planeta, su distancia al sol en km. y la cantidad de satélites (El proyecto final está incompleto, Uds. pueden completarlo como les resulte más conveniente ).
Al hacer Clic sobre uno de los planetas se nos abre la siguiente pantalla:
El código que nos vincula a la base de datos convoc ada por un control Data que se encuentra invisible en el formulario de Información es el siguiente:
Private Sub Label12_Click() 'Esta label corresponde al planeta 'Júpiter
Label2.Caption = "Júpiter"
Form2.Data1.Recordset.MoveFirst 'mueve el puntero a l comienzo
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
14
Form2.Data1.Recordset.Move 1 ' y luego un lugar al registro 'correspondiente en la Base de datos Planetas
Form2.Picture1.Picture = Form2.ImageList1.ListImage s(2).Picture
Form2.Show
End Sub
Para desplegar la imagen del planeta usamos un cont rol ImageList que tiene cargadas, en este caso solo dos imágenes: la Tierra y Júpiter.
La posición del registro depende del orden que le d ieron a los planetas en los registros de la Base de datos.
Ustedes pueden agregar oros campos que desplieguen más información y labels indicativas de dichos campos.
Luego tenemos el Formulario evaluación que a través de la función InputBox le hace al alumno dos preguntas: Una sobre el nombre del plane ta y otra sobre la cantidad de satélites que posee.
El formulario de evaluación se asemeja al siguiente :
Y el código es:
Private Sub Picture1_Click() 'imagen de Júpiter
planeta = InputBox("¿Qué planeta es este?", "Planet as")
If UCase(planeta) = "JÚPITER" Then
contar = contar + 1
Label2.Caption = contar
End If
satelite = InputBox("¡Cuántos satélites tiene?", "P lanetas")
If satelite = "16" Then
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
15
contar = contar + 1
Label2.Caption = contar
Picture1.Enabled = False
End If
End Sub
También incluimos una variable contar para que nos sume puntos con las respuestas correctas, y las variables planeta y satélite que g uardan las respuestas del InputBox. Esta variables deben ser declaradas en la parte general del formulario.
Para cerrar tenemos el formulario créditos donde se indica el nombre del programador y el botón Salir que cierra la aplicación. La navegación entre un formulario y otro se realiza mediante los métodos Show: Mostrar y Hide: Ocultar. Primero se muestra el formulario vinculado y luego se oculta el que está activo. Eje mplo:
Private Sub Label1_Click()
Form3.Show
Form5.Hide
End Sub
Ustedes pueden vincular distintos formularios con d istintos ejercicios, imágenes, animaciones o videos o simplemente información escr ita.
Combinando sonidos.
El siguiente ejercicio muestra como usar el control multimedia para desplegar sonidos de tipo Midi o Wave e incluso poder superponer un soni do a otro:
Cuando se abre el formulario se ejecuta el archivo Midi y si nosotros hacemos Clic sobre el botón Wave escuchamos los gritos de Tarzan por enci ma de la música de fondo que se sigue ejecutando. Esto nos resulta útil para cierta s aplicaciones donde queremos dejar una música de fondo, o entretenimientos que combinan so nidos.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
16
Private Sub Command2_Click() 'Botón wave
MMControl2.Command = "Prev"
MMControl2.DeviceType = "WaveAudio" 'establece el t ipo de 'sonido
MMControl2.filename = App.Path & "\Tarzan.wav"' mue stra el 'camino
MMControl2.Command = "Open" 'lo abre
MMControl2.Command = "Play" ' lo ejecuta
End Sub
Private Sub Command3_Click() ' Botón Midi
MMControl1.Command = "Prev"
MMControl1.DeviceType = "Sequencer"' tipo de sonido
MMControl1.filename = App.Path & "\Thefinal.mid" 'c amino
MMControl1.Command = "Open" 'lo abre
MMControl1.Command = "Play" lo ejecuta
End Sub
Debemos traer de Componentes el control Multimedia y poner todos sus botones a falsos e invisibles. Luego asociamos por código a cada contr ol el archivo correspondiente, en este caso uno para el archivo Midi y otro para el Wave. Determinamos que tipo de dispositivo es y explicitamos su camino, lo abrimos y luego ejecut amos. No olvidarse el Open primero y luego el Play.
Private Sub Form_Unload(Cancel As Integer)
MMControl1.Command = "Close" 'lo cierra
MMControl2.Command = "Close" 'lo cierra
End Sub
Al descargar el formulario es fundamental cerrarlos para recuperar recursos del sistema.
Vínculos. Este ejercicio lo hemos armado a pedido de un visit ante colombiano, Luis, docente en Informática. Y nos permite vincular una palabra con una imagen específica dentro del contenido desplegado en una Label.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
17
Usamos como truco una label transparente superpuest a sobre la palabra que recibe el evento click y que se vincula a la imagen. El progr ama en ejecución es similar a esta imagen:
Sobre la palabra comida y animal tenemos superpuest a una label con la letra en azul para que muestre la posible interactividad, también camb iamos el puntero del mouse a una manito cuando pasa por sobre las palabras. Y al hac er click cambia el contenido de la Image en su propiedad picture. El código del evento click de la primer label es:
Private Sub Label2_Click()
Image1.Picture = Picture2.Picture
Label4.Caption = "Una rica hamburguesa"
End Sub
Contraseña. Varios visitantes nos han pedido algún ejercicio qu e use una contraseña para entrar a un programa. Aquí va un ejemplo. Vamo s a usar la función InputBox que al abrir una ventana con una caja de texto nos permite ingresar la contraseña.
Si no queremos usar la función podemos reemplazarla por el uso de un pequeño formulario diseñado a nuestro gusto con una caja de texto. El programa se ve así:
Y el código del evento click del Botón Acceso al Si stema es el siguiente:
Dim nombreusuario As String
Dim contraseña As String
nombreusuario = InputBox("Introduzca su Nombre")
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
18
contraseña = InputBox("Introduzca CONTRASEÑA")
If UCase(nombreusuario) = "LAURA" And LCase(contras eña) = "secreto" Then
MsgBox "¡BIENVENIDA LAURA! ¿Preparada para trabajar con tu PC?"
Image1.Visible = True
ElseIf UCase(nombreusuario) = "MIRTA" And LCase(con traseña) = "duende" Then
MsgBox "¿BIENVENIDA MIRTA AL SISTEMA! ¡A trabajar n o te duermas!"
Image1.Visible = True
Else
MsgBox "ACCESO DENEGADO"
End If
Editor de menú.
En este ejercicio vamos a usar el Editor de menú de Visual Basic, que nos permite crear un menú con las características de windows. Para poder activarlo debemos estar en la ventana de formulario u objeto, no en la de código. Mediant e botones de opción vamos a hacer visibles o invisibles los menús que hemos diseñado, en este caso el tema será platos de comida y los menús serán sobre: Platos fríos, calie ntes y postres. El programa ejecutado se vé así:
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
19
Posicionados en la ventana formulario activamos el Editor mediante el ícono y cuando se abre la ventana vamos configurado los distintos item del menú como se ve en la siguiente imagen:
Aquí hay dos propiedades muy importantes, el captio n del menú que será el título que aparezca en el menú y el name del menú, el caption puede estar vacío pero el name no, Y vamos anidando los submenús que queremos incorporar , como lo muestra la imagen, para desplegar un submenú hacemos click en next y en la flecha hacia la derecha para hacer una sangría que indica los subtemas del menú. Cada inte grante del menú responde a un solo evento que es el Click. Para probarlo podemos agreg ar el siguiente código en el evento click de cada menú:
MnuFiambres_Click()
MsgBox "haz hecho click en la opción bandeja de Fia mbres"
End Sub.
Esto no está incluído en el ejercicio, pero puede a gregarle cualqier evento para testear el funcionamiento. En relación al código que hace visi ble u oculta un tipo de menú , agregamos un botón que aplica o ejecuta la opción d e opción seleccionada con el siguiente código en el evento click del botón Aplicar:
Private Sub Command1_Click()
If Option1 Then ' mostrar menú de Entradas
mnuEntradas.Visible = True
mnuCalientes.Visible = False
mnuPostres.Visible = False
ElseIf Option2 Then ' mostrar menú Platos Calientes
mnuEntradas.Visible = False
mnuCalientes.Visible = True mnuPostres.Visible = Fa lse
Else
mnuEntradas.Visible = False
mnuCalientes.Visible = False
mnuPostres.Visible = True
End If
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
20
este código relaciona mediante un condicional el me nú que debe mostrarse y oculta los restantes. En el procedimiento Load del formulario incluimos el siguiente código, que oculta los menús:
Private Sub Form_Load()
mnuEntradas.Visible = False
mnuCalientes.Visible = False
mnuPostres.Visible = False
End Sub
Encuesta Graciosa.
Este ejercicio lo podemos hacer y llevar, su arranq ue al trabajo y preguntarle a nuestros colegas, o compañeros si Está conforme con el sueld o que gana. Como damos por supuesto que la mayoría va a contestarnos que No, h icimos un pequeño chiste , ya que al querer hacer Click en el Botón de No, este se nos e scapará.
El código es el siguiente:
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
MsgBox "Sufre el mismo mal que millones de Argentin os!!"
End Sub
Private Sub Command2_MouseMove(Button As Integer, S hift As Integer, X As Single, Y As Single)
Command2.Move CInt(Rnd * (Width - Command2.Width)), CInt(Rnd * (Height - Command2.Height))
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
21
End Sub
Con el Botón Si: salimos del programa y al querer h acer click en el botón: No, se mueve aleatoriamente a una nueva posición entre las medid as de ancho y alto del formulario.
Temperaturas.
En este ejercicio, simplemente entramos en tiempo d e ejecución una temperatura para cada día de la semana y luego haciendo click en los boto nes: Alta, Media y Baja , devuelve los valores en otras cajas de texto. El código es el si guiente:
Option Explicit
Dim alta As Single
Dim dia As Integer
Dim baja As Single
Dim media As Single
Private Sub Command1_Click() ' mostrar el valor más alto de los textbox() en el text Alta
alta = Text1(0).Text
For dia = 1 To 6
If Text1(dia).Text > alta Then
alta = Text1(dia).Text
End If
Next dia
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
22
Text2.Text = alta
End Sub
Private Sub Command2_Click() 'calcular la más baja y lo muestra en el Text1(0).Text
For dia = 1 To 6
If Text1(dia).Text < baja Then
baja = Text1(dia).Text
End If
Next dia
Text3.Text = baja
End Sub
Private Sub
Command3_Click() 'calcula la media de los contenido s de text1()
Dim total As Single
Dim promedio As Single
total = 0
For dia = 0 To 6
total = total + Text1(dia)
Next dia
promedio = total / 7
Text4.Text = Format(promedio, "##.##") 'formato con dos decimales
End Sub
Private Sub Command4_Click()
For dia = 0 To 6
Text1(dia).Text = ""
Next dia
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
23
Text1(0).SetFocus
End Sub
Private Sub Command5_Click()
End
End Sub
Usando estructuras de repetición For Next, calculam os los valores de alta y baja, luego para la media sacamos por división el promedio.
Texto y RTF.
En este Ejercicio vamos a ver como hacemos para dir ectamente desplegar un texto ya copiado y grabado en un archivo con extensión TXT, que podemos tipear en cualquier editor como el NotePad, por ejemplo y otro texto con forma to RTF (Rich Text File, o sea archivo de texto enriquecido) . Este formato puede grabarse en el Word, vamos a grabar como... y allí seleccionamos RTF.
Se llama texto enriquecido porque permite incluir d istintos tipos de letras, colores y tamaños o sea más variantes en su formato. Y el con trol que vamos a usar para desplegar este texto con formato RTF es el RichTextBox 8es un control no estándar, por lo tanto debemos traerlo de Componentes), para el texto comú n o sea con formato TXT, usaremos un TextBox de la caja de herramientas estandar. El formulario tendrá el siguiente aspecto:
Tenemos dos controles para desplegar el texto: un T ext1 y un RichTextBox1, y dos botones en cuyos eventos Click se desplegarán por código lo s archivos mencionados en los controles de texto. Primero debemos crear un archiv o en el NotePad o en el Word y grabarlo como TXT y otro con variaciónes en el tipo, color y tamaño de la letra y grabarlo como rtf. Luego abrimos visual y en creamos un nuevo proyecto grabandolo en el mismo directorio y carpeta que tenemos los archivos: txt y rtf. El cód igo de cada botón es el siguiente:
Option Explicit 'Esta expresión nos fuerza a declar ar las variables.
Private Sub Command1_Click() 'Este boton es el que carga el 'archivo TXT
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
24
Dim pepe As String 'Declaramos una variable para id entificar el 'archivo
Dim renglon As String 'Esta variable guardará el ta maño de 'cada renglón del archivo
renglon = Chr(13) & Chr(10) ' corta a otra línea
Text1.Text = "" Open App.Path & "\rtf.txt"
For Input As #1' Abre (Open) y da 'entrada (Input) el archivo 'ubicado en el mismo directorio y carpeta en que está la 'aplicación. App.path sign ifica en la ruta actual de la'aplicación. 'Sino hay que indicar cual es el Path.
While Not EOF(1) ' esto realiza un bucle o sea repi te la acción 'hasta que se llegue al final del archivo 1 (End of File)
Line Input #1, pepe$ ' le da entrada a la linea 1 d el archivo Text1.Text = Text1.Text & pepe & renglon 'concatena con & el 'texto del archivo y el tamaño del reglón.
Wend 'repite las ordenes en tanto la condición es v erdadera, en 'este caso hasta tanto no termine el texto del archivo.
Close #1 ' cierra el archivo al terminar de cargarl o.
End Sub
Private Sub Command2_Click()
RichTextBox1.LoadFile (App.Path & "\rtf.rtf") 'como podemos 'ver con el Control RichTextBox es más sencillo el manejo de 'archivos, con la sentencia LoadFile se carga el archivo 'indicando el camino para encontrarlo.
Rompecabezas. En este ejercicio armaremos un rompecabezas con las partes del esqueleto de un gato.
Los procedimientos usados ya son conocidos: Dragear y soltar, uso de un Control PictureClip y de arrays de Imagenes para cargar las partes del rompecabezas.La imagen de la aplicación se parece a la siguiente:
Option Explicit
Private Sub Command1_Click()'el boton Salir cierra el programa
End
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
25
End Sub
Private Sub Command2_Click() 'este boton corrige si estan bien 'colocadas las imagenes. Debe escribirse todo el código 'seguido o cortarlo usando el under _
If Picture1.Picture = Image1(2).Picture And Picture 2.Picture = Image1(1).Picture And Picture3.Picture = Image1(5).Picture And Picture4.P icture = Image1(0).Picture And Picture5.Picture = Image1(4) And Picture6.Picture = Image1(3).Picture Then
Picture1.Visible = False
Picture2.Visible = False
Picture3.Visible = False
Picture4.Visible = False
Picture5.Visible = False
Picture6.Visible =
False Image2.Visible = True 'carga otra imagen ocul ta que 'muestra un gato completo
Else 'sino es correcto vacía las imagenes para rein iciar el 'armado del rompecabezas.
Picture1.Picture = Nothing
Picture2.Picture = Nothing
Picture3.Picture = Nothing
Picture4.Picture = Nothing
Picture5.Picture = Nothing
Picture6.Picture = Nothing
End If
End Sub
Private Sub Form_Activate()' al cargarse el form y pasar a estar 'activo carga las celdas o partes en que dividimos la imagen con 'el PictureCl ip.
Image1(0).Picture = PictureClip1.GraphicCell(3) Ima ge1(1).Picture = PictureClip1.GraphicCell(1) Image1(2).Picture = Pic tureClip1.GraphicCell(0) Image1(3).Picture = PictureClip1.GraphicCell(5) Ima ge1(4).Picture = PictureClip1.GraphicCell(4) Image1(5).Picture = Pic tureClip1.GraphicCell(2)
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
26
Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Picture1.Picture = Source
End Sub
Private Sub Picture2_DragDrop(Source As Control, X As Single, Y As Single)
'carga las imagenes de origen al soltarlas
Picture2.Picture = Source
End Sub Private Sub Picture3_DragDrop(Source As Con trol, X As Single, Y As Single)
Picture3.Picture = Source
End Sub
Private Sub
Picture4_DragDrop(Source As Control, X As Single, Y As Single)
Picture4.Picture = Source
End Sub
Private Sub Picture5_DragDrop(Source As Control, X As Single, Y As Single)
Picture5.Picture = Source
End Sub
Private Sub
Picture6_DragDrop(Source As Control, X As Single, Y As Single)
Picture6.Picture = Source
End Sub
Uso del Scrollbar.
Usaremos en este ejercicio dos Scrollbar horizontal es para modificar el valor de la propiedad QBColor que muestra 16 colores, con valor es de 0 a 15, estos valores estarán asociados a la ubicación de la pestaña del Scroll y se mostrarán en dos cajas de texto.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
27
De acuerdo a su valor este determinará el color del fondo del formulario, y del tipo de un terce control Text. La aplicación se así:
Aquí también debemos prestar atención a la propieda d Value, Y a los procedimientos Change y Scroll, que testean cuando se modifica el valor de la barra horizontal. También debemos determinar los valores de las propiedades M in y Max en este caso, a 0 la primera y 15 la segunda y dejamos el LargeChange o sea el lar go del cambio, a 1. El código es el siguiente:
Option Explicit
HScroll1_Change()
Text1.Text = HScroll1.Value
Text3.BackColor = QBColor(HScroll1.Value)
End Sub
Private Sub
HScroll1_Scroll()
Text1.Text = HScroll1.Value
Text3.BackColor = QBColor(HScroll1.Value)
End Sub
Private Sub
HScroll2_Change()
Text2.Text = HScroll2.Value
Text3.ForeColor = QBColor(HScroll2.Value)
End Sub
Private Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
28
HScroll2_Scroll()
Text2.Text = HScroll2.Value
Text3.ForeColor = QBColor(HScroll2.Value)
End Sub
Barra de Porcentaje.
Este ejercicio nos permite hacer una Barra de progr eso al estilo windows, donde nos muestra el porcentaje cubierto.El formulario tiene el siguiente aspecto:
Los controles que usamos son un Botón que activa el proceso y una picture que va cambiando su color a medida que el porcentaje aumen ta.El código es el siguiente:
Private Sub Command1_Click()
Picture1.ForeColor = RGB(0, 0, 255) 'color azul
For i = 0 To 100 'un bucle que llama al procedimien to 'actualizaprogress
actualizaprogress Picture1, i
Call pausa 'procedimiento de espera
Next i
End Sub
Private Sub actualizaprogress(pb As Control, ByVal percent)
Dim num$ ' porcentaje
'el autoredraw de la picture debe estar a = true
pb.Cls
pb.ScaleWidth = 100
pb.DrawMode = 10
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
29
num$ = Format(percent, "##") + "%" 'calcula el porc entaje
pb.FontSize = 18
pb.CurrentX = 50 - pb.TextWidth(num$) / 2
pb.CurrentY = (pb.ScaleHeight - pb.TextHeight(num$) ) / 2
pb.Print num$ 'imprime en la picture el porcentaje
pb.Line (0, 0)-(percent, pb.ScaleHeight), , BF 'dib uja el 'rectangulo
pb.Refresh 'actualiza la picture
End Sub
Private Sub pausa() 'procedimiento que detiene la a plicación 'un segundo
Dim controlar
Dim comenzar
comenzar = Timer
Do Until controlar >= comenzar + 0.2
controlar = Timer
DoEvents
Loop
End Sub
Slider
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
30
Este es un control slider común donde codificamos l os procedimientos Click y Change. Usamos la función Format para darle forma al valor en centímetros. El código es el siguiente:
Option Explicit
Private Sub Slider1_Change()
Label1.Caption = "Medida en Centímetros = " & Forma t(Slider1.Value, "#.00")
End Sub
Private Sub Slider1_Scroll()
Label1.Caption = "Medida en Centímetros = " & Forma t(Slider1.Value, "#.00")
End Sub
Media Player MP3
En este ejercicio vamos a ejecutar archivos MP3 usa ndo el control Media Player. Que debemos traer de componentes, y por supuesto tenerl o instalado en nuestro sistema a una de sus últimas versiones.
Los controles que usamos son: un Media palyer, los tres controles tipicos para manipular archivos : DriveListBox, el DirListBox y el FileLis tBox, dos botones y dos labels con un timer que daran cuenta del tiempo total y parcial d el archivo. El código es:
Option Explicit Dim Min As Integer Dim Sec As Integer Dim Nombrearchivo As String Dim Abrirarchivo As Boolean
Private Sub Command2_Click()'Boton salir End End Sub
Private Sub Command4_Click()'Boton Abrir y cerrar e l archivo MP3
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
31
With MediaPlayer1 If Not Abrirarchivo Then .FileName = Nombrearchivo .AutoStart = False Command4.Caption = "Cerrar" Else .FileName = "" Command4.Caption = "Abrir" End If End With End Sub
Private Sub Dir1_Change()'selecciona el directorio File1.FileName = Dir1.Path End Sub
Private Sub File1_Click()'selecciona el archivo MP3 If Right(Dir1.Path, 1) = "\" Then Nombrearchivo = Dir1.Path & File1.FileName Else Nombrearchivo = Dir1.Path & "\" & File1.FileName End If End Sub
Private Sub MediaPlayer1_OpenStateChange(ByVal OldS tate As Long, ByVal NewState As Long)'mide el tiempo total de duración del archivo Min = MediaPlayer1.Duration \ 60 Sec = MediaPlayer1.Duration - (Min * 60) Label7.Caption = "Tiempo Total: " & Format(Min, "0# ") & ":" & Format(Sec, "0#") Abrirarchivo = CBool(NewState) End Sub
Private Sub Timer1_Timer()'con el timer actualiza l a label de tiempo 'transcurrido Min = MediaPlayer1.CurrentPosition \ 60 Sec = MediaPlayer1.CurrentPosition - (Min * 60) If Min > 0 Or Sec > 0 Then Label8.Caption = "Tiempo transcurrido: " & Format(M in, "0#") & ":" & Format(Sec, "0#") Else Label8.Caption = "Tiempo transcurrido: 00:00" End If End Sub
Para que muestre solo los archivos MP3 en la propie dad Pattern del FileListBox: ingresamos "*.MP3"
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
32
Clave de Seguridad
Hay muchas maneras de incluir en un ejercicio ciert o control de seguridad a través de una clave, o password, en esta aplicación se hace utili zando la propiedad tag del control Text, donde se ingresa. El código es: Private Sub cmdAceptar_Click() Static Intentos As Integer Dim Espera As Long If UCase(txtPassword.Text) = txtPassword.Tag Then CandadoCerrado.Picture = CandadoAbierto.Picture Image1.Visible = False Refresh Espera = Timer 'Espera 2 seg, muestra el formulario principal While Espera + 2 > Timer Wend 'Descarga esta forma Unload frmClave Form2.Show Else Intentos = Intentos + 1 If Intentos = 3 Then MsgBox "Lo siento...Demasiados intentos", vbCritica l, "Acceso Negado" txtPassword.SetFocus End Else MsgBox "Presione OK e intente otra vez", vbInformat ion, "Clave Incorrecta" txtPassword.SelStart = 0 txtPassword.SelLength = Len(txtPassword) txtPassword.SetFocus End If End If End Sub
Private Sub cmdSalir_Click() End End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
33
Servicio
Este ejercicio utiliza Botones de Opción y fue real izado a partir del pedido de un alumno por mail. También integra: labels, caja de textos, boto nes y calcula el total del valor del pedido de acuerdo a la opción seleccionada y la cantidad. Su código es el siguiente: 'Declaración de las variables para el precio de cada una. Dim Hamburguesa As Single Dim HotDog As Single Dim Sandwich As Single Dim Gaseosa As Single Dim Refresco As Single Dim PapasFritas As Single 'Declaración de variables para la cantidad de cada una. Dim CantidadHamburguesa As Integer Dim CantidadHotDog As Integer Dim CantidadSandwich As Integer Dim CantidadGaseosa As Integer Dim CantidadRefresco As Integer Dim CantidadPapasFritas As Integer
Private Sub cmdCalcular_Click() 'Multiplicando la cantidad por el precio y sumando para hallar el total. Total = (CantidadHamburguesa * Hamburguesa) + (Cant idadHotDog * HotDog) + _ (CantidadSandwich * Sandwich) + (CantidadGaseosa * Gaseosa) + _ (CantidadRefresco * Refresco) + (CantidadPapasFrita s * PapasFritas) lblTotal.Caption = "$ " & Total End Sub
Private Sub cmdSalir_Click() End End Sub
Private Sub Form_Load() 'Inicializar las variables 'Precio de los productos Hamburguesa = 20.5
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
34
HotDog = 19.25 Sandwich = 17.5 PapasFritas = 4.5 Refresco = 4 Gaseosa = 5 End Sub
Private Sub optOtroPedido_Click() 'Limpiar el label lblTotal. lblTotal.Caption = ""
'Inicializar las variables. CantidadHamburguesa = 0 CantidadGaseosa = 0 CantidadPapasFritas = 0 CantidadHotDog = 0 CantidadSandwich = 0 CantidadRefresco = 0
'Habilitar todas las cajas de texto para poder entr ar datos en todas. txtHamburguesa.Enabled = True txtHotDog.Enabled = True txtSandwich.Enabled = True txtGaseosa.Enabled = True txtRefresco.Enabled = True txtPapasFritas.Enabled = True
'Limpiar todas las cajas de texto. txtHamburguesa.Text = "" txtHotDog.Text = "" txtSandwich.Text = "" txtGaseosa.Text = "" txtRefresco.Text = "" txtPapasFritas.Text = "" End Sub
Private Sub optPedido1_Click() 'Hamburguesas,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal. lblTotal.Caption = ""
If optPedido1.Value Then 'si esta chequeado. 'Inicializar las variables. CantidadHamburguesa = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHotDog = 0 CantidadSandwich = 0 CantidadRefresco = 0 'Inicializar la caja de texto. txtHamburguesa.Text = CantidadHamburguesa txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
35
'Habilitar las cajas de texto. txtHamburguesa.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHotDog.Enabled = False txtSandwich.Enabled = False txtRefresco.Enabled = False 'Limpiar las otras cajas de texto. txtHotDog.Text = "" txtSandwich.Text = "" txtRefresco.Text = "" End If End Sub
Private Sub optPedido2_Click() 'HotDog,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal. lblTotal.Caption = ""
If optPedido2.Value Then 'Inicializar las variables. CantidadHotDog = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHamburguesa = 0 CantidadSandwich = 0 CantidadRefresco = 0 'Inicializar la caja de texto. txtHotDog.Text = CantidadHotDog txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas 'Habilitar las cajas de texto. txtHotDog.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHamburguesa.Enabled = False txtSandwich.Text = False txtRefresco.Text = False 'Limpiar las otras cajas de texto. txtHamburguesa.Text = "" txtSandwich.Text = "" txtRefresco.Text = "" End If End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
36
Private Sub optPedido3_Click() 'Sanwich,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal lblTotal.Caption = ""
If optPedido3.Value Then 'Inicializar las variables CantidadSandwich = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHamburguesa = 0 CantidadHotDog = 0 CantidadRefresco = 0 'Inicializar la caja de texto txtSandwich.Text = CantidadSandwich txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas 'Habilitar las cajas de texto txtSandwich.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHotDog.Enabled = False txtHamburguesa.Enabled = False txtRefresco.Enabled = False 'Limpiar las otras cajas de texto. txtHotDog.Text = "" txtHamburguesa.Text = "" txtRefresco.Text = "" End If End Sub
Private Sub txtHamburguesa_Change() 'Limpiando el lblTotal. lblTotal.Caption = "" End Sub
Private Sub txtHamburguesa_GotFocus() txtHamburguesa.SelStart = 0 txtHamburguesa.SelLength = Len(txtHamburguesa.Text) End Sub
Private Sub txtHamburguesa_LostFocus() If txtHamburguesa.Text = "" Then CantidadHamburguesa = 0 Exit Sub End If If IsNumeric(txtHamburguesa.Text) Then 'Si es numér ico. If txtHamburguesa.Text > 0 Then 'Si es positivo. CantidadHamburguesa = txtHamburguesa.Text 'Entonces asigna el valor a la variable.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
37
Else MsgBox "Entre un valor positivo", vbCritical txtHamburguesa.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtHamburguesa.SetFocus End If End Sub
Private Sub txtGaseosa_Change() lblTotal.Caption = "" End Sub
Private Sub txtGaseosa_GotFocus() 'Para seleccionar el texto(igual en todos). txtGaseosa.SelStart = 0 txtGaseosa.SelLength = Len(txtGaseosa.Text) End Sub
Private Sub txtGaseosa_LostFocus() If txtGaseosa.Text = "" Then CantidadGaseosa = 0 Exit Sub End If If IsNumeric(txtGaseosa.Text) Then 'Si es numérico. If txtGaseosa.Text > 0 Then 'Si es positivo. CantidadGaseosa = txtGaseosa.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtGaseosa.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtGaseosa.SetFocus End If End Sub
Private Sub txtHotDog_Change() lblTotal.Caption = "" End Sub
Private Sub txtHotDog_GotFocus() txtHotDog.SelStart = 0 txtHotDog.SelLength = Len(txtHotDog.Text) End Sub
Private Sub txtHotDog_LostFocus() If txtHotDog.Text = "" Then CantidadHotDog = 0 Exit Sub End If If IsNumeric(txtHotDog.Text) Then 'Si es numérico. If txtHotDog.Text > 0 Then 'Si es positivo.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
38
CantidadHotDog = txtHotDog.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtHotDog.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtHotDog.SetFocus End If End Sub
Private Sub txtPapasFritas_Change() lblTotal.Caption = "" End Sub
Private Sub txtPapasFritas_GotFocus() txtPapasFritas.SelStart = 0 txtPapasFritas.SelLength = Len(txtPapasFritas.Text) End Sub
Private Sub txtPapasFritas_LostFocus() If txtPapasFritas.Text = "" Then CantidadPapasFritas = 0 Exit Sub End If If IsNumeric(txtPapasFritas.Text) Then 'Si es numér ico. If txtPapasFritas.Text > 0 Then 'Si es positivo. CantidadPapasFritas = txtPapasFritas.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtPapasFritas.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtPapasFritas.SetFocus End If End Sub
Private Sub txtRefresco_Change() lblTotal.Caption = "" End Sub
Private Sub txtRefresco_GotFocus() txtRefresco.SelStart = 0 txtRefresco.SelLength = Len(txtRefresco.Text) End Sub
Private Sub txtRefresco_LostFocus() If txtRefresco.Text = "" Then CantidadRefresco = 0 Exit Sub End If If IsNumeric(txtRefresco.Text) Then 'Si es numérico . If txtRefresco.Text > 0 Then 'Si es positivo.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
39
CantidadRefresco = txtRefresco.Text 'Entonces asign a el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtRefresco.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtRefresco.SetFocus End If End Sub
Private Sub txtSandwich_Change() lblTotal.Caption = "" End Sub
Private Sub txtSandwich_GotFocus() txtSandwich.SelStart = 0 txtSandwich.SelLength = Len(txtSandwich.Text) End Sub
Private Sub txtSandwich_LostFocus() If txtSandwich.Text = "" Then CantidadSandwich = 0 Exit Sub End If If IsNumeric(txtSandwich.Text) Then 'Si es numérico . If txtSandwich.Text > 0 Then 'Si es positivo. CantidadSandwich = txtSandwich.Text 'Entonces asign a el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtSandwich.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtSandwich.SetFocus End If End Sub
Función Mod
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
40
Este ejercicio usa las funciónes Mod y Format que n os permiten dar formato al valor del tiempo que muestra el cronómetro. Usamos una Label y tres botones para las acciones. El código es: Dim I As Long 'Contador. Dim Tiempo As String 'Tiempo total transcurrido.
Private Sub cmdDetener_Click() Timer1.Interval = 0 End Sub
Private Sub cmdIniciar_Click() I = 0 'Inicializar el contador. Timer1.Interval = 0 'Detener el cronometro lblCronometro.Caption = "" 'Limpiar la etiqueta Timer1.Interval = 1 'Iniciar el cronometro End Sub
Private Sub cmdSalir_Click() End End Sub
Private Sub Timer1_Timer() I = I + 1 Tiempo = Format(Int(I / 36000) Mod 24, "00") & ":" & _ Format(Int(I / 600) Mod 60, "00") & ":" & _ Format(Int(I / 10) Mod 60, "00") & ":" & _ Format(I Mod 10, "00") lblCronometro.Caption = Tiempo End Sub
Calendario.
Estos dos controles: el MonthView y el DTPicker son controles especiales que trae la versión 6 y que podemos traer de Componentes, selec cionando Microsoft Windows Common Controls - 2 6.0, y como vemos nos despliega n hora y fecha y un calendario que podemos recorrer.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
41
Validar un texto.
El control caja de Texto tiene ahora en esta versió n 6 un nuevo procedimiento que nos permite controlar la información que se ingresa, y una vez validada recién pasar al campo de texto siguiente.
Prueben tratar de pasar a la caja de texto siguient e sin ingresar ningún dato con la tecla Tab y verán que no lo permite.
El código es:
Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text <> "MIRTA" Then
MsgBox "Debes tipear MIRTA en el primer texto para pasar al segundo.", vbInformation, "Instrucciones"
Cancel = True
End If
End Sub
Private Sub Text2_Validate(Cancel As Boolean)
If Text2.Text <> "CONSUDEC" Then
MsgBox "Debes tipear CONSUDEC en el segundo texto p ara pasar al tercero.", vbInformation, "Instrucciones"
Cancel = True
End If
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
42
Coolbar.
Este control pertenece al grupo Microsoft Windows C ommon Controls 3 6.0, y permite desplegar una barra que contenga otros controles.
En este caso al hacer Click en el icono del Reloj d espliega la hora. Estos controles que se insertan dentro de la Coolbar pueden mantenerse flo tantes o fijos.
El código es:
Private Sub Command1_Click()
Label1.Caption = Time
End Sub
Private Sub Form_Activate()
List1.AddItem "Chocolates"
List1.AddItem "Caramelos"
List1.AddItem "Chupetines"
List1.AddItem "Galletitas"
End Sub
En el caso de la Lista le agregamos distintos Items a través del Método AddItem en tiempo de ejecución.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
43
Barra de progreso.
Este ejercicio nos muestra el uso de una barra de p rogreso que podemos usar mientras se realiza la carga de un archivo o en otro momento de espera hasta que se complete una tarea.
El código es el siguiente:
Option Explicit
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load() 'Inicializamos el timer par a que este apagado Timer1.Enabled = False
End Sub
Private Sub cmdComenzar_Click() 'Inicializamos la b arra de progreso, y comenzamos el Timer
Progreso.Value = 0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer() 'Si el progreso todavía no termina, seguir aumentando Value hasta 100
With Progreso
If .Value < .Max Then
.Value = .Value + 1
Else 'Termino
MsgBox "Proceso Terminado", , "Barra de Progreso" ' Deshabilitamos el Timer Timer1.Enabled = False
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
44
End If
End With
End Sub
Aquí usamos with para referirnos al control y no te ner que repetir su nombre. Esto es muy útil cuando debemos modificar los valores de varias propiedades por código de un mismo control.
Barra de estado.
Un ejemplo de como modificar en tiempo de ejecución la Barra de estado. En el formulario tenemos una caja de texto donde ingresamos el texto a desplegar y luego en el click de un botón lo asignamos al panel de la barra correspondi ente.
El código correspondiente es:
Private Sub cmdAceptar_Click()
StatusBar1.Panels("Texto").Text = txtPanel
End Sub
Como vemos es muy sencillo, para asignarle un valor al panel correspondiente debemos identificarlo con el nombre del mismo, determinado en la ventana propiedades, para tener acceso al mismo debemos hacer click con el boton de recho sobre el control y alli podemos configurar los distintos paneles.
Pestañas.
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
45
Es común usar el control TabStrip para mostrar apli caciones con pestañas, sin embargo es mucho más potente el control Tabbed Dialog ya que c ada panel puede contener otros controles, esto facilita el diseño y su codificació n.
En el formulario dibujamos un control SStab traido de componentes y luego en su primer pestaña dibujamos varias labels que nos vincularan con las otras pestañas, donde se mostrará en una texto y en la otrs una imagen. El c ódigo es el siguiente:
Option Explicit
Private Sub Form_Load()
SSTab1.Tab = 0 'esto hace que se muestre el primer panel
End Sub
Private Sub
Label1_Click()
Text1.Text = "Aqui podemos cargar un texto con form ato richtextbox, sobre el Tema 1."
SSTab1.Tab = 1
End Sub
Private Sub Label4_Click()
Picture1.Picture = Picture2
SSTab1.Tab = 2
End Sub
Private Sub Label5_Click()
Text1.Text = "Aqui podemos cargar un texto con form ato richtextbox, sobre el Tema 2."
SSTab1.Tab = 1
End Sub
Private Sub Label6_Click()
Picture1.Picture = Picture3
SSTab1.Tab = 2
End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
46
Como vemos lo importante es la propiedad Tab y la a signación del indice del panel de l control que queremos mencionar.
Promedio de Notas
Este ejercicio nos permite ingresar una cantidad de valores, por ejemplo las notas de un alumno, y luego obtener su promedio. En el formular io usamos cuatro botones, dos cajas de texto, y un ListBox, un frame y tres Labels. El cód igo es el siguiente: Option Explicit Dim Nota() As Single Dim N As Integer 'Número total de notas.
Private Sub cmdBorrarNota_Click() Dim i As Integer, NotaInd As Integer NotaInd = List1.ListIndex + 1 'Asigna el orden del elemento de la lista a una variable. If List1.ListIndex = -1 Then 'Si no esta checheada la lista. MsgBox "Haga click en la lista para borrar la nota" Exit Sub Else List1.RemoveItem (List1.ListIndex) 'Borra de la Lis ta la Nota Text1.Text = "" 'Limpia el texto. 'Eliminar la nota de indice (List1.ListIndex+1) y c orrer las notas For i = NotaInd To N - 1 Nota(i) = Nota(i + 1) Next i N = N - 1 'actualizando número de notas por ser bor rada una. If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajusta ndo la dimensión del arreglo notas Text2.Text = "" End If End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
47
Private Sub cmdEntrarNota_Click() If Text1.Text = "" Then 'Si no se han introducido n ota. MsgBox "No se ha introducido una nota" Text1.SetFocus Exit Sub End If N = N + 1 'Inicializa el conteo de las notas entrad as. ReDim Preserve Nota(1 To N) 'Redimesiona el arreglo . Nota(N) = Text1.Text 'Asigna el valor al arreglo. List1.AddItem (Nota(N)) 'Añade la nota a la lista. cmdEntrarNota.Enabled = False End Sub
Private Sub cmdPromedio_Click() Dim Suma As Single Dim Promedio As Single Dim J As Integer If N = 0 Then 'Si el número de notas es cero. MsgBox "No existen valores para promediar" Exit Sub End If Suma = 0 For J = 1 To N 'Suma todas las notas Suma = Suma + Nota(J) Next J Promedio = Suma / N Text2.Text = Promedio End Sub
Private Sub cmdSalir_Click() End End Sub
Private Sub Form_Activate() Text1.SetFocus
End Sub
Private Sub Text1_Change() cmdEntrarNota.Enabled = True Text2.Text = "" End Sub
Private Sub Text1_Click() cmdEntrarNota.Enabled = True End Sub
Private Sub Text1_GotFocus() 'Para Selelccionar el texto al hacer click en él. Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub
Tutoriales Programación Kazak_anjes
Rif: V-12789240-3
Ing. Sistemas Anjes Cordanov | [email protected]
48
Private Sub Text1_LostFocus() If IsNumeric(Text1.Text) Then 'Chequea si el valor es numérico. If Text1.Text <= 0 Then 'Chequea si es mayor que ce ro. MsgBox "Valor incorrecto,debe ser mayor que cero", vbCritical Text1.SetFocus 'Situa el foco en el TexBox Text1. End If Else 'Si no es numérico el dato. MsgBox "El valor debe ser mayor que cero", vbCritic al Text1.SetFocus 'Situa el foco en el TexBox Text1. End If End Sub