Está en la página 1de 48

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Primeros pasos en Visual BASIC 6.0


Ejercicios importantes para aprender a programar

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Partes de la Computadora.

Abrimos el programa Visual Basic seleccionamos Nuevo proyecto y comenzamos a trabajar. Este ejercicio muestra un truco muy sencillo pero de 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, gabinete. Esto por cdigo sera muy complejo pero usando el control Label en su modo transparente y con el Caption vaco, 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 sobre el monitor, todava opaca como viene por defecto, luego sobre el gabinete est transparente pero con el Caption , tambin por defecto en este caso : Label2. Y en el teclado donde est posicionado el cursor en cambio est transparente. De acuerdo a la parte que seleccionemos: en una cuarta Label se nos mostrar el texto correspondiente, en el caso del formulario : "Teclado". En este ejercicio tenemos una Image, con su Propiedad Stretch a True, lo que nos permite agrandar un icono al tamao deseado. Y cuatro Labels, tres transparentes para subdividir la Image y una opaca para mostrar la parte seleccionada, y un Botn de Salida. El Cdigo de este ejercicio es el siguiente: Private Sub Command1_Click() End ' Cierre de la aplicacin End Sub Private Sub Label2_Click() 'El evento Click modifica el titulo de 'label1 Label1.caption = "Monitor" End Sub Private Sub Label3_Click()

2
Label1.caption = "Gabinete" End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-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. Tambin a partir de aqu podramos elaborar un Ahorcado. El crucigrama est armado con cuadros de texto o sea controles Text, encerrados dentro de un control frame, este control tiene la nica finalidad de agrupar y contener otros controles, ordenando la interactividad de una manera visual. Otros dos controles Frame agrupan las opciones vertical y horizontal. Conteniendo controles CheckBox que al ser seleccionados hacen la correccin de las letras ingresadas en las cajas de texto. El ingreso de las mismas se hace en tiempo de ejecucin a travs del teclado. A la derecha vemos unos controles Picture vacos que se cargaran con imgenes que muestren por ejemplo una cara sonriente si la palabra es correcta o seria si no lo es, o cualquier otro tipo de imagen .Podemos llamar a esta imagen con la funcin LoadPicture desde cualquier parte de nuestro disco rgido. Y un botn con el icono de Hijitus indica la Salida y cierre del programa. Ac tendremos que crear por cdigo una estructura condicional que controle si la entrada de datos es correcta o no. El cdigo 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 cdigo debe ir todo en un mismo regln y 'chequea si se escribi una de las palabras

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


correctas. Ciudado con los 'nombres de los Controles porque seguramente Ustedes no tendrn la 'misma numeracin que yo. (Otra aclaracin cuando usamos el carcter ' 'indicamos que todo lo que sigue es un comentario, por lo tanto la 'computadora no lo ejecuta lo saltea, no es cdigo). Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub Private Sub Check2_Click() If Text2.Text = "O" And Text5.Text ="R" And Text9.Text ="O" then Image2.Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image2. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub Private Sub Check3_Click() If Text7.Text = "R" And Text8.Text ="A" And Text9.Text ="T" And Text4.Text ="O" And Text10.Text ="N" then Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub

Sumas.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Este ejercicio elige en forma Aleatoria dos nmeros 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 volvern a aparecer otros dos nmeros para que siga sumando.

El botn Aplicar permite hacer la correccin mediante un Condicional. Algunos de estos temas son comunes a otros ejercicios. Por lo tanto nos centraremos en las funciones nuevas. La funcin Rnd nos permite cargar en una variable un nmero 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 sumando de nuestra cuenta. Para que realmente sea aleatorio debemos incorporar la sentencia Randomize en el Procedimiento Load del Formulario. Otra funcin que utilizamos es Val que transforma una cadena de caracteres, en este caso el contenido de un Text en un valor numrico. 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 nmeros , iniciando una nueva cuenta. Pero necesitamos una espera en la aplicacin. Esto lo hacemos por cdigo con un bucle que asociado al reloj del sistema crea una pausa en la aplicacin. Para esto creamos un Procedimiento llamado Pausa. Posicionados en la ventana de cdigo , 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 opcin seleccionamos: Sub y Private. Damos el Aceptar y se cierra la ventana. Ahora veremos en nuestra ventana de cdigo un nuevo Procedimiento llamado Pausa. Incluido dentro de los procedimientos del objeto General. Luego lo llamaremos desde otra parte del programa con la sentencia Call.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Para mayor claridad vamos al cdigo: 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 nmero aleatorio num2 = Int(Rnd * 10) 'elige un nmero aleatorio Text1.Text = "" Label1.Caption = num1 Label2.Caption = num2 Text1.SetFocus ' ubica el foco del cursor en el control Text1 Command2.Enabled = False Image1.Picture = Nothing 'vaca el contenido de la imagen End Sub

6
Private Sub Command2_Click() Command2.Enabled = False

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


resultado = Val(Text1.Text) If resultado = Int(num1) + Int(num2) Then Image1.Picture = Picture1.Picture Call pausa ' llama al procedimiento que creamos como Pausa Call Command1_Click 'este procedimiento llama a otra 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 aparece una cuenta num2 = Int(Rnd * 10) Text1.Text = "" Label1.Caption = num1'se vuelcan las variables en las Labels Label2.Caption = num2 Command2.Enabled = False'el botn aplicar est desactivado End Sub Private Sub Text1_Change() Command2.Enabled = True'al cambiar el texto se activa Aplicar

7
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Imprimiendo con Printer.

En este formulario desplegamos datos en cajas de texto y a travs 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 controlar el texto, cambiar su aspecto, tamao, tipo y color de la fuente y coordenadas. Private Sub Command1_Click() Printer.Orientation = 1 ' La orientacin del papel es vertical Printer.FontSize = 12 'Tamao de la letra Printer.Print 'Un rengln en blanco o salto de carro Printer.Print Printer.Print Printer.Print Tab(15); Label1.Caption; Tab(30); Text1.Text 'Aqu damos la orden de impresin 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

8
Printer.Print Tab(15); Label2.Caption; Tab(30); Text2.Text Printer.Print

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Printer.Print Printer.Print Tab(15); Label3.Caption; Tab(30); Text3.Text Printer.Print Printer.Print Printer.Print Printer.Print Tab(15); Label4.Caption; Tab(30); Text4.Text Printer.Print Printer.Print Printer.Print Tab(15); Label5.Caption; Tab(30); Text5.Text Printer.Print Printer.Print Printer.Print Tab(15); Label6.Caption; Tab(30); Text6.Text Printer.EndDoc 'damos por terminada la impresin End Sub Este ejercicio nos permite de una manera simple poder distribuir la impresin de forma personalizada.

Internet

Este ejercicio nos permite mediante un evento click sobre un botn conectarnos con un sitio web determinado, incorporando el control WebBrowser, este control no es estndar y lo debemos traer de Componentes, Microsoft Internet Control.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

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, obviamente, la otra propiedad alternativa GoHome nos conecta con la pgina predeterminada de Inicio. Este control nos resulta muy til cuando queremos que los alumnos consulten determinados sitios, antes visitados por nosotros, y as evitamos navegaciones intiles o peligrosas por sus contenidos.

Un Navegador.

Otro ejercicio usando el control WebBrowser, en este caso creamos un Navegador muy simple. Con el control Toolbar asociado al ImageList 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 direccin del sitio a visitar. Y una barra de estado o StatusBar dividida en tres paneles despliega: un mensaje, la hora y la fecha respectivamente. El cdigo es el siguiente: Private Sub Command1_Click() ' este control est oculto If Text1.Text <> "" Then WebBrowser1.Navigate Text1.Text If WebBrowser1.Visible = False Then WebBrowser1.Visible = True End If

10

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 ComctlLib.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/SiliconValley/Garage/6472" Command1_Click Case "refresh" WebBrowser1.Refresh 'actualiza o refrezca Case "stop" WebBrowser1.Stop 'detiene la bsqueda End Select

11
End Sub Private Sub WebBrowser1_DownloadBegin()

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


StatusBar1.Panels(1).Text = "Cargando Pgina..." End Sub Private Sub WebBrowser1_DownloadComplete() StatusBar1.Panels(1).Text = "Listo" End Sub

Dibujar

Con este ejercicio podrn los alumnos dibujar en tiempo de ejecucin. Podemos agregarles una paleta de colores similar al Paint. En caso de imprimir el dibujo es necesario que la propiedad del Formulario Autoredraw est a True para que el formulario se refresque e imprima el dibujo realizado. Dim draw As Boolean 'declaramos una variable buleana 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 ubicacin en la coordenada X CurrentY = Y' carga en la variable la ubicacin 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 esta a verdadera 'dibuja cada uno de los puntos. End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) draw = False 'la variable draw a falsa detiene el dibujo End Sub

12

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Relacionar varios formularios.

A pedido de varios seguidores de nuestra pgina vamos a integrar en un solo proyecto varios formularios. El proyecto se compone de 5 formularios: Presentacin, Planetas, Informacin, Evaluacin y Crditos.

Retomando un ejercicio simple ya explicado el N 7 El Sistema Solar, vamos a agregarle una primera pantalla de presentacin con distintos botones o labels que nos vinculan a los otros formularios: La label Planetas nos muestra el formulario del ejercicio N7 con los distintos planetas y el procedimiento Clic de cada label transparente nos vincula 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 informacin referente a cada planeta, en este caso: el nombre del planeta, su distancia al sol en km. y la cantidad de satlites (El proyecto final est incompleto, Uds. pueden completarlo como les resulte ms conveniente).

Al hacer Clic sobre uno de los planetas se nos abre la siguiente pantalla: El cdigo que nos vincula a la base de datos convocada por un control Data que se encuentra invisible en el formulario de Informacin es el siguiente: Private Sub Label12_Click() 'Esta label corresponde al planeta 'Jpiter Label2.Caption = "Jpiter" Form2.Data1.Recordset.MoveFirst 'mueve el puntero al comienzo

13

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Form2.Data1.Recordset.Move 1 ' y luego un lugar al registro 'correspondiente en la Base de datos Planetas Form2.Picture1.Picture = Form2.ImageList1.ListImages(2).Picture Form2.Show End Sub Para desplegar la imagen del planeta usamos un control ImageList que tiene cargadas, en este caso solo dos imgenes: la Tierra y Jpiter. La posicin del registro depende del orden que le dieron a los planetas en los registros de la Base de datos. Ustedes pueden agregar oros campos que desplieguen ms informacin y labels indicativas de dichos campos. Luego tenemos el Formulario evaluacin que a travs de la funcin InputBox le hace al alumno dos preguntas: Una sobre el nombre del planeta y otra sobre la cantidad de satlites que posee.

El formulario de evaluacin se asemeja al siguiente: Y el cdigo es: Private Sub Picture1_Click() 'imagen de Jpiter planeta = InputBox("Qu planeta es este?", "Planetas") If UCase(planeta) = "JPITER" Then contar = contar + 1 Label2.Caption = contar End If

14
satelite = InputBox("Cuntos satlites tiene?", "Planetas") If satelite = "16" Then

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


contar = contar + 1 Label2.Caption = contar Picture1.Enabled = False End If End Sub Tambin incluimos una variable contar para que nos sume puntos con las respuestas correctas, y las variables planeta y satlite que guardan las respuestas del InputBox. Esta variables deben ser declaradas en la parte general del formulario. Para cerrar tenemos el formulario crditos donde se indica el nombre del programador y el botn Salir que cierra la aplicacin. La navegacin entre un formulario y otro se realiza mediante los mtodos Show: Mostrar y Hide: Ocultar. Primero se muestra el formulario vinculado y luego se oculta el que est activo. Ejemplo: Private Sub Label1_Click() Form3.Show Form5.Hide End Sub Ustedes pueden vincular distintos formularios con distintos ejercicios, imgenes, animaciones o videos o simplemente informacin escrita.

Combinando sonidos.

El siguiente ejercicio muestra como usar el control multimedia para desplegar sonidos de tipo Midi o Wave e incluso poder superponer un sonido a otro: Cuando se abre el formulario se ejecuta el archivo Midi y si nosotros hacemos Clic sobre el botn Wave escuchamos los gritos de Tarzan por encima de la msica de fondo que se sigue ejecutando. Esto nos resulta til para ciertas aplicaciones donde queremos dejar una msica de fondo, o entretenimientos que combinan sonidos.

15

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Private Sub Command2_Click() 'Botn wave MMControl2.Command = "Prev" MMControl2.DeviceType = "WaveAudio" 'establece el tipo de 'sonido MMControl2.filename = App.Path & "\Tarzan.wav"' muestra el 'camino MMControl2.Command = "Open" 'lo abre MMControl2.Command = "Play" ' lo ejecuta End Sub Private Sub Command3_Click() ' Botn Midi MMControl1.Command = "Prev" MMControl1.DeviceType = "Sequencer"' tipo de sonido MMControl1.filename = App.Path & "\Thefinal.mid" 'camino 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 cdigo a cada control 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 ejecutamos. 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.

Vnculos.
Este ejercicio lo hemos armado a pedido de un visitante colombiano, Luis, docente en Informtica. Y nos permite vincular una palabra con una imagen especfica dentro del contenido desplegado en una Label.

16

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Usamos como truco una label transparente superpuesta sobre la palabra que recibe el evento click y que se vincula a la imagen. El programa en ejecucin es similar a esta imagen: Sobre la palabra comida y animal tenemos superpuesta una label con la letra en azul para que muestre la posible interactividad, tambin cambiamos el puntero del mouse a una manito cuando pasa por sobre las palabras. Y al hacer click cambia el contenido de la Image en su propiedad picture. El cdigo del evento click de la primer label es: Private Sub Label2_Click() Image1.Picture = Picture2.Picture Label4.Caption = "Una rica hamburguesa" End Sub

Contrasea. Varios visitantes nos han pedido algn ejercicio que use una contrasea para entrar a un programa. Aqu va un ejemplo. Vamos a usar la funcin InputBox que al abrir una ventana con una caja de texto nos permite ingresar la contrasea.

Si no queremos usar la funcin podemos reemplazarla por el uso de un pequeo formulario diseado a nuestro gusto con una caja de texto. El programa se ve as: Y el cdigo del evento click del Botn Acceso al Sistema es el siguiente: Dim nombreusuario As String

17
Dim contrasea As String nombreusuario = InputBox("Introduzca su Nombre")

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


contrasea = InputBox("Introduzca CONTRASEA") If UCase(nombreusuario) = "LAURA" And LCase(contrasea) = "secreto" Then MsgBox "BIENVENIDA LAURA! Preparada para trabajar con tu PC?" Image1.Visible = True ElseIf UCase(nombreusuario) = "MIRTA" And LCase(contrasea) = "duende" Then MsgBox "BIENVENIDA MIRTA AL SISTEMA! A trabajar no 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 caractersticas de windows. Para poder activarlo debemos estar en la ventana de formulario u objeto, no en la de cdigo. Mediante botones de opcin vamos a hacer visibles o invisibles los mens que hemos diseado, en este caso el tema ser platos de comida y los mens sern sobre: Platos fros, calientes y postres. El programa ejecutado se v as:

18

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

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 caption del men que ser el ttulo que aparezca en el men y el name del men, el caption puede estar vaco pero el name no, Y vamos anidando los submens 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 sangra que indica los subtemas del men. Cada integrante del men responde a un solo evento que es el Click. Para probarlo podemos agregar el siguiente cdigo en el evento click de cada men: MnuFiambres_Click() MsgBox "haz hecho click en la opcin bandeja de Fiambres" End Sub. Esto no est includo en el ejercicio, pero puede agregarle cualqier evento para testear el funcionamiento. En relacin al cdigo que hace visible u oculta un tipo de men , agregamos un botn que aplica o ejecuta la opcin de opcin seleccionada con el siguiente cdigo en el evento click del botn 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 = False Else mnuEntradas.Visible = False mnuCalientes.Visible = False mnuPostres.Visible = True End If End Sub

19

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


este cdigo relaciona mediante un condicional el men que debe mostrarse y oculta los restantes. En el procedimiento Load del formulario incluimos el siguiente cdigo, que oculta los mens: 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 arranque al trabajo y preguntarle a nuestros colegas, o compaeros si Est conforme con el sueldo que gana. Como damos por supuesto que la mayora va a contestarnos que No, hicimos un pequeo chiste , ya que al querer hacer Click en el Botn de No, este se nos escapar. El cdigo es el siguiente: Private Sub Command1_Click() End End Sub Private Sub Command2_Click() MsgBox "Sufre el mismo mal que millones de Argentinos!!" End Sub Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command2.Move CInt(Rnd * (Width - Command2.Width)), CInt(Rnd * (Height Command2.Height))

20

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


End Sub Con el Botn Si: salimos del programa y al querer hacer click en el botn: No, se mueve aleatoriamente a una nueva posicin entre las medidas de ancho y alto del formulario.

Temperaturas.

En este ejercicio, simplemente entramos en tiempo de ejecucin una temperatura para cada da de la semana y luego haciendo click en los botones: Alta, Media y Baja , devuelve los valores en otras cajas de texto. El cdigo es el siguiente: 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 ms 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

21

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Text2.Text = alta End Sub Private Sub Command2_Click() 'calcular la ms 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 contenidos 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

22
Text1(dia).Text = "" Next dia

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Text1(0).SetFocus End Sub Private Sub Command5_Click() End End Sub Usando estructuras de repeticin For Next, calculamos los valores de alta y baja, luego para la media sacamos por divisin el promedio.

Texto y RTF.
En este Ejercicio vamos a ver como hacemos para directamente desplegar un texto ya copiado y grabado en un archivo con extensin TXT, que podemos tipear en cualquier editor como el NotePad, por ejemplo y otro texto con formato 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 distintos tipos de letras, colores y tamaos o sea ms variantes en su formato. Y el control que vamos a usar para desplegar este texto con formato RTF es el RichTextBox 8es un control no estndar, por lo tanto debemos traerlo de Componentes), para el texto comn 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 Text1 y un RichTextBox1, y dos botones en cuyos eventos Click se desplegarn por cdigo los archivos mencionados en los controles de texto. Primero debemos crear un archivo en el NotePad o en el Word y grabarlo como TXT y otro con variacines en el tipo, color y tamao 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 cdigo de cada botn es el siguiente:

23
Option Explicit 'Esta expresin nos fuerza a declarar las variables. Private Sub Command1_Click() 'Este boton es el que carga el 'archivo TXT

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Dim pepe As String 'Declaramos una variable para identificar el 'archivo Dim renglon As String 'Esta variable guardar el tamao de 'cada rengln del archivo renglon = Chr(13) & Chr(10) ' corta a otra lnea 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 'aplicacin. App.path significa en la ruta actual de la'aplicacin. 'Sino hay que indicar cual es el Path. While Not EOF(1) ' esto realiza un bucle o sea repite la accin 'hasta que se llegue al final del archivo 1 (End of File) Line Input #1, pepe$ ' le da entrada a la linea 1 del archivo Text1.Text = Text1.Text & pepe & renglon 'concatena con & el 'texto del archivo y el tamao del regln. Wend 'repite las ordenes en tanto la condicin es verdadera, en 'este caso hasta tanto no termine el texto del archivo. Close #1 ' cierra el archivo al terminar de cargarlo. End Sub Private Sub Command2_Click() RichTextBox1.LoadFile (App.Path & "\rtf.rtf") 'como podemos 'ver con el Control RichTextBox es ms 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 aplicacin se parece a la siguiente: Option Explicit Private Sub Command1_Click()'el boton Salir cierra el programa End

24

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


End Sub Private Sub Command2_Click() 'este boton corrige si estan bien 'colocadas las imagenes. Debe escribirse todo el cdigo 'seguido o cortarlo usando el under _ If Picture1.Picture = Image1(2).Picture And Picture2.Picture = Image1(1).Picture And Picture3.Picture = Image1(5).Picture And Picture4.Picture = 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 oculta que 'muestra un gato completo Else 'sino es correcto vaca las imagenes para reiniciar 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 PictureClip. Image1(0).Picture = PictureClip1.GraphicCell(3) Image1(1).Picture = PictureClip1.GraphicCell(1) Image1(2).Picture = PictureClip1.GraphicCell(0) Image1(3).Picture = PictureClip1.GraphicCell(5) Image1(4).Picture = PictureClip1.GraphicCell(4) Image1(5).Picture = PictureClip1.GraphicCell(2) End Sub

25

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 Control, 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 horizontales para modificar el valor de la propiedad QBColor que muestra 16 colores, con valores de 0 a 15, estos valores estarn asociados a la ubicacin de la pestaa del Scroll y se mostrarn en dos cajas de texto.

26

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

De acuerdo a su valor este determinar el color del fondo del formulario, y del tipo de un terce control Text. La aplicacin se as: Aqu tambin debemos prestar atencin a la propiedad Value, Y a los procedimientos Change y Scroll, que testean cuando se modifica el valor de la barra horizontal. Tambin debemos determinar los valores de las propiedades Min y Max en este caso, a 0 la primera y 15 la segunda y dejamos el LargeChange o sea el largo del cambio, a 1. El cdigo 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

27

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


HScroll2_Scroll() Text2.Text = HScroll2.Value Text3.ForeColor = QBColor(HScroll2.Value) End Sub

Barra de Porcentaje.

Este ejercicio nos permite hacer una Barra de progreso al estilo windows, donde nos muestra el porcentaje cubierto.El formulario tiene el siguiente aspecto: Los controles que usamos son un Botn que activa el proceso y una picture que va cambiando su color a medida que el porcentaje aumenta.El cdigo 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 procedimiento '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

28

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


num$ = Format(percent, "##") + "%" 'calcula el porcentaje 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 'dibuja el 'rectangulo pb.Refresh 'actualiza la picture End Sub Private Sub pausa() 'procedimiento que detiene la aplicacin 'un segundo Dim controlar Dim comenzar comenzar = Timer Do Until controlar >= comenzar + 0.2 controlar = Timer DoEvents Loop End Sub

Slider

29

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Este es un control slider comn donde codificamos los procedimientos Click y Change. Usamos la funcin Format para darle forma al valor en centmetros. El cdigo es el siguiente: Option Explicit Private Sub Slider1_Change() Label1.Caption = "Medida en Centmetros = " & Format(Slider1.Value, "#.00") End Sub Private Sub Slider1_Scroll() Label1.Caption = "Medida en Centmetros = " & Format(Slider1.Value, "#.00") End Sub

Media Player MP3

En este ejercicio vamos a ejecutar archivos MP3 usando el control Media Player. Que debemos traer de componentes, y por supuesto tenerlo 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 FileListBox, dos botones y dos labels con un timer que daran cuenta del tiempo total y parcial del archivo. El cdigo 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

30

Private Sub Command4_Click()'Boton Abrir y cerrar el archivo MP3

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 OldState As Long, ByVal NewState As Long)'mide el tiempo total de duracin 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 la 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(Min, "0#") & ":" & Format(Sec, "0#") Else Label8.Caption = "Tiempo transcurrido: 00:00" End If End Sub Para que muestre solo los archivos MP3 en la propiedad Pattern del FileListBox: ingresamos "*.MP3"

31

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Clave de Seguridad

Hay muchas maneras de incluir en un ejercicio cierto control de seguridad a travs de una clave, o password, en esta aplicacin se hace utilizando la propiedad tag del control Text, donde se ingresa. El cdigo 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", vbCritical, "Acceso Negado" txtPassword.SetFocus End Else MsgBox "Presione OK e intente otra vez", vbInformation, "Clave Incorrecta" txtPassword.SelStart = 0 txtPassword.SelLength = Len(txtPassword) txtPassword.SetFocus End If End If End Sub Private Sub cmdSalir_Click() End End Sub

32

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Servicio

Este ejercicio utiliza Botones de Opcin y fue realizado a partir del pedido de un alumno por mail. Tambin integra: labels, caja de textos, botones y calcula el total del valor del pedido de acuerdo a la opcin seleccionada y la cantidad. Su cdigo es el siguiente: 'Declaracin 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 'Declaracin 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) + (CantidadHotDog * HotDog) + _ (CantidadSandwich * Sandwich) + (CantidadGaseosa * Gaseosa) + _ (CantidadRefresco * Refresco) + (CantidadPapasFritas * 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

33

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 entrar 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

34

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

'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

35

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 numrico. If txtHamburguesa.Text > 0 Then 'Si es positivo. CantidadHamburguesa = txtHamburguesa.Text 'Entonces asigna el valor a la variable.

36

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Else MsgBox "Entre un valor positivo", vbCritical txtHamburguesa.SetFocus End If Else MsgBox "Entre un valor numrico", 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 numrico. 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 numrico", 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 numrico. If txtHotDog.Text > 0 Then 'Si es positivo.

37

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


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 numrico", 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 numrico. 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 numrico", 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 numrico. If txtRefresco.Text > 0 Then 'Si es positivo.

38

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


CantidadRefresco = txtRefresco.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtRefresco.SetFocus End If Else MsgBox "Entre un valor numrico", 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 numrico. If txtSandwich.Text > 0 Then 'Si es positivo. CantidadSandwich = txtSandwich.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtSandwich.SetFocus End If Else MsgBox "Entre un valor numrico", vbCritical txtSandwich.SetFocus End If End Sub

Funcin Mod

39

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Este ejercicio usa las funcines Mod y Format que nos permiten dar formato al valor del tiempo que muestra el cronmetro. Usamos una Label y tres botones para las acciones. El cdigo 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 versin 6 y que podemos traer de Componentes, seleccionando Microsoft Windows Common Controls - 2 6.0, y como vemos nos despliegan hora y fecha y un calendario que podemos recorrer.

40

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Validar un texto.

El control caja de Texto tiene ahora en esta versin 6 un nuevo procedimiento que nos permite controlar la informacin que se ingresa, y una vez validada recin pasar al campo de texto siguiente. Prueben tratar de pasar a la caja de texto siguiente sin ingresar ningn dato con la tecla Tab y vern que no lo permite. El cdigo 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 para pasar al tercero.", vbInformation, "Instrucciones" Cancel = True End If End Sub

41

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Coolbar.

Este control pertenece al grupo Microsoft Windows Common Controls 3 6.0, y permite desplegar una barra que contenga otros controles. En este caso al hacer Click en el icono del Reloj despliega la hora. Estos controles que se insertan dentro de la Coolbar pueden mantenerse flotantes o fijos. El cdigo 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 travs del Mtodo AddItem en tiempo de ejecucin.

42

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3

Barra de progreso.

Este ejercicio nos muestra el uso de una barra de progreso que podemos usar mientras se realiza la carga de un archivo o en otro momento de espera hasta que se complete una tarea. El cdigo es el siguiente: Option Explicit Private Sub cmdSalir_Click() End End Sub Private Sub Form_Load() 'Inicializamos el timer para que este apagado Timer1.Enabled = False End Sub Private Sub cmdComenzar_Click() 'Inicializamos la barra de progreso, y comenzamos el Timer Progreso.Value = 0 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() 'Si el progreso todava 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

43

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


End If End With End Sub Aqu usamos with para referirnos al control y no tener que repetir su nombre. Esto es muy til cuando debemos modificar los valores de varias propiedades por cdigo de un mismo control.

Barra de estado.

Un ejemplo de como modificar en tiempo de ejecucin 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 botn lo asignamos al panel de la barra correspondiente. El cdigo 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 derecho sobre el control y alli podemos configurar los distintos paneles.

Pestaas.

44

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Es comn usar el control TabStrip para mostrar aplicaciones con pestaas, sin embargo es mucho ms potente el control Tabbed Dialog ya que cada panel puede contener otros controles, esto facilita el diseo y su codificacin. En el formulario dibujamos un control SStab traido de componentes y luego en su primer pestaa dibujamos varias labels que nos vincularan con las otras pestaas, donde se mostrar en una texto y en la otrs una imagen. El cdigo 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 formato 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 formato richtextbox, sobre el Tema 2." SSTab1.Tab = 1 End Sub Private Sub Label6_Click() Picture1.Picture = Picture3 SSTab1.Tab = 2 End Sub

45

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Como vemos lo importante es la propiedad Tab y la asignacin 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 formulario usamos cuatro botones, dos cajas de texto, y un ListBox, un frame y tres Labels. El cdigo es el siguiente: Option Explicit Dim Nota() As Single Dim N As Integer 'Nmero 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 Lista la Nota Text1.Text = "" 'Limpia el texto. 'Eliminar la nota de indice (List1.ListIndex+1) y correr las notas For i = NotaInd To N - 1 Nota(i) = Nota(i + 1) Next i N = N - 1 'actualizando nmero de notas por ser borrada una. If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajustando la dimensin del arreglo notas Text2.Text = "" End If End Sub

46

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Private Sub cmdEntrarNota_Click() If Text1.Text = "" Then 'Si no se han introducido nota. MsgBox "No se ha introducido una nota" Text1.SetFocus Exit Sub End If N = N + 1 'Inicializa el conteo de las notas entradas. ReDim Preserve Nota(1 To N) 'Redimesiona el arreglo. Nota(N) = Text1.Text 'Asigna el valor al arreglo. List1.AddItem (Nota(N)) 'Aade 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 nmero 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

47

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes Rif: V-12789240-3


Private Sub Text1_LostFocus() If IsNumeric(Text1.Text) Then 'Chequea si el valor es numrico. If Text1.Text <= 0 Then 'Chequea si es mayor que cero. MsgBox "Valor incorrecto,debe ser mayor que cero", vbCritical Text1.SetFocus 'Situa el foco en el TexBox Text1. End If Else 'Si no es numrico el dato. MsgBox "El valor debe ser mayor que cero", vbCritical Text1.SetFocus 'Situa el foco en el TexBox Text1. End If End Sub

48

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

También podría gustarte