Está en la página 1de 23

Ejercicios con Visual Basic 6:

MonthView y DtPicker : Calendario. Despliega Fecha y Hora Validar un texto a travs del Procedimiento Validate Crear Controles en tiempo de Ejecucin ImageCombo: Despliega Listas incluyendo Imgenes CoolBar: Barra que contiene otros Controles Barra de Progreso Barra de Estado Pestaas que contienen otros Controles ListView vinculada a una ImageList TreeView vinculado a una ImageList Control Chart para despliegue de Grficos Grficos con Chart y una consulta SQL Grficos con Chart y una planilla de Excel Formulario de Datos: Asistente DHTML: Hola Mundo DHTML: Operaciones: Suma, Resta, Multiplicacin y Divisin

Ejercicio N 1: Nuevos Controles.


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. El ejercicio puede bajarse de Aqu.

Ejercicio N 2: 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 El ejercicio puede bajarse de Aqu.

Ejercicio N 3: Crear controles.


Ahora Visual Basic nos permite, crear controles en tiempo de ejecucin sin necesidad de hacerlo dentro de un array, a partir del primero creado en tiempo de diseo. El cdigo es: Private WithEvents cmdmiboton As CommandButton Private Sub cmdmiboton_Click() cmdmiboton.Caption = "Me hiciste Clic!" End Sub Private Sub Label2_Click() Set cmdmiboton = Controls.Add("VB.commandbutton", "Button") With cmdmiboton .Visible = True .Width = 3000 .Caption = "Qu Sorpresa!!" .Top = 3000 .Left = 1000 End With Label2.Enabled = False End Sub Primero hacemos Click en la Label que crea el botn y luego con el Click del botn cambiamos su propiedad Caption. El ejercicio completo lo podemos bajar de Aqu.

Ejercicio N 4: ImageCombo.

Este nuevo control pertenece al grupo de componentes: Microsoft Windows Common Controls 6.0. Y nos permite desplegar imgenes adems de texto en un Combo desplegable.

Private Sub Command1_Click() Static i% 'un contador de numeros enteros Static imgi% 'un indice para las imagenes del control ImageList Dim comboimage As ComboItem 'variable de tipo objeto para 'declarar un comboItem 'Agrega una referencia al objeto comboItem usando el metodo 'Add Set comboimage = ImageCombo1.ComboItems.Add 'agrega un texto ImageCombo1.ComboItems.Add , , "Soy el item N " & CStr(i%) ImageCombo1.Text = "Soy el Item N " & CStr(i%) 'agrega un 'grafico comboimage.Image = imgi% + 1 'controlar que no se exceda de 'la cantidad de images del ImageList If imgi% = ImageList1.ListImages.Count - 1 Then imgi% = 0 Else imgi% = imgi% + 1 End If 'incrementa la variable contadora i% = i% + 1 End Sub Private Sub Form_Activate() ImageCombo1.ImageList = ImageList1 End Sub El ejercicio puede bajarse de Aqu.

Ejercicio N 5: 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. El ejercicio puede bajarse de Aqu.

Ejercicio N 6: 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 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. El ejercicio completo puede bajarse de AQU.

Ejercicio N 7: 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 correspondien te. 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. El ejercicio puede bajarse de AQU.

Ejercicio N 8: Pestaas.
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 Como vemos lo importante es la propiedad Tab y la asignacin del indice del panel de l control que queremos mencionar. El cdigo completo lo pueden bajar de AQU.

Ejercicio N 9: ListView.
Este control nos permite desplegar una lista de archivos al estilo el Explorador de Windows. En este caso los agregamos a traves del ingreso de datos de cajas de texto. Y despliegan un icono al azar seleccionado de un control ImageList, que hemos usado en otros ejercicios. El formulario,

permite a traves del uso de botones de opcion seleccionar que modalidad queremos que tengan los iconos. El cdigo es el siguiente: Option Explicit Function NroAzar(Min As Integer, Max As Integer) As Integer NroAzar = Int((Max - Min + 1) * Rnd + Min) End Function Private Sub cmdAgregar_Click() Dim Nuevo As ListItem Dim IndiceIcono As Integer 'Elegir un icono al azar para el elemento IndiceIcono = NroAzar(1, ilIconos.ListImages.Count) 'Agregar el nuevo elemento, y asignarle el icono elegido Set Nuevo = lvwPersonas.ListItems.Add(, , txtNombre, IndiceIcono, IndiceIcono) Nuevo.SubItems(1) = txtEdad Nuevo.SubItems(2) = txtSexo Nuevo.SubItems(3) = txtTelefono End Sub Private Sub cmdEliminar_Click() lvwPersonas.ListItems.Remove lvwPersonas.SelectedItem.Index End Sub Private Sub cmdSalir_Click() End End Sub Private Sub optVista_Click(Index As Integer) 'Cambiamos el tipo de vista en View lvwPersonas.View = Index End Sub Elegimos un Icono al azar de un ImageList el texto lo ingresamos a traves de las Cajas de Texto. Tenemos dos botones con la opcion de Agregar y de Borrar, los ingresos. Y Botones de Opcion para seleccionar la propiedad View de la Lista acorde al Indice del option Button. los iconos que se muestran en los encabezados fueron asignados al ingresar el Nombre de las columnas y asociando la propiedad Icon Index a los Iconos de la ImageList ilColumnas. o sea que tenemos dos controles ImageList. El codigo completo puede bajarse de AQU.

Ejercicio N 10: TreeView.


Este ejercicio muestra un tipico arbol de archivos de windows con su raz principal y sus derivados. Acompaado de Iconos tomados tambin de un control ImageList. El mtodo Add, agrega un Nodo al arbol de Archivos. El cdigo es: Option Explicit Private Sub Arbol_Click() lblActual = Arbol.SelectedItem.Text End Sub Private Sub cmdSalir_Click() End End Sub Private Sub Form_Load() Dim i As Integer Arbol.Nodes.Add , , "Raiz", "Nodo raiz", 1 For i = 1 To 3 Arbol.Nodes.Add "Raiz", tvwChild, "Hijo " & i, "Hijo " & i, (i + 1) Next i Arbol.Nodes.Add "Hijo 1", tvwChild, "Nieto 1", "Nieto 1", 5 Arbol.Nodes.Add "Nieto 1", tvwNext, "Nieto 2", "Nieto 2", 6 Arbol.Nodes.Add "Nieto 1", tvwPrevious, "Nieto 0", "Nieto 0", 7 End Sub El ejercicio completo puede bajarse de Aqu.

Ejercicio N 11: Control Chart.

El control Miscrosoft Chart nos permite desplegar grficos asociados a determinados datos que podemos cargar de otros archivos como puede ser una planilla de Excel o una Base de datos, o determinarlos por cdigo. El control lo traemos de Componentes. Y al dibujarlo en el formulario vamos a ver que contiene de manera predeterminada un grfico con datos apcrifos para mostarnos su diseo. Como organiza los datos: El control MSChart requiere que todos los datos se organicen en filas y columnas. Adems requiere saber cuntos puntos de datos habr en cada fila y columna que debe graficar. Por lo general se cuenta con una columna de datos con mltiples filas (algo parecido a un alista de nmeros). Por ejemplo: si se desean graficar las ventas de una empresa durante los ltimos doce meses, contar con una sola columna(un ao) y doce filas(una por cada mes). Si desea comparar los dos ltimos aos, tendr dos columnas (una por cada ao) y doce filas(una por cada mes). Para poder organizar los datos usamos las propieddaes ColumnCount y RowCount. En el ejemplo mencionado: ColumnCount= 1 RowCount= 12 ChartType= 1 (vtChChartType2dBar) Para agregar datos en tiempo de diseo: capturamos 12 cifras en tiempo de diseo para poder apreciar el grfico. establecemos la propiedad AutoIncremente a True y en la propiedad Data asignamos el valor 1, 2 o 3 para incrementar. Hagan la prueba, de esa manera carga datos de manera automtica. Vamos a hacer un primer ejercicio viendo las propiedades y siguiendo un poco el ejemplo anterior:

Option Explicit Dim data(1 To 5, 1 To 3) As String Dim i As Integer Dim m As Integer

Private Sub Form_Load() Randomize 'Establece la cantidad de filas MSChart1.RowCount = 3 'asigna la cantidad de columnas de color MSChart1.ColumnCount = 3 'Puedo asignar un valor determinado a la columna de color de una fila en este caso la verde. MSChart1.Row = 3 MSChart1.Column = 2 MSChart1.data = 34 'Le cambia el texto a la Primer fila o row MSChart1.Row = 1 MSChart1.RowLabel = "Primera Fila" 'Le cambio el texto a la etiqueta del color azul, teniendo la propiedad ShowLegend a True MSChart1.ShowLegend = True MSChart1.Column = 3 MSChart1.ColumnLabel = "Azul" 'Le agrego un texto al pie del grafico MSChart1.FootnoteText = "Este es el pie del grfico." 'Le agrego un Ttulo. MSChart1.TitleText = "Grfico MSChart" 'Puedo cambiar el tipo de letra del titulo y del Pie de grafico With MSChart1.Title.VtFont .Name = "Arial" .Style = VtFontStyleBold .Effect = VtFontEffectUnderline .Size = 14 .VtColor.Set 0, 0, 255 End With With MSChart1.Footnote.VtFont .Name = "arial" .Style = VtFontStyleBold .Effect = VtFontEffectUnderline .Size = 10 .VtColor.Set 125, 150, 155 End With 'Con la propiedad ChartType podemos cambiar el tipo de grafico. 'Por ejemplo: vtChChartType3dBar: es un grafico de Barras en 3D.

'Tambien podemos crear un array de 2 dimensiones (una tabla) y graficarla. For i = 1 To 5 For m = 1 To 3 data(i, m) = Rnd * 100 Next m Next i MSChart1.ChartData = data End Sub

Ejercicio N 12: Grficos con Chart.


En este ejercicio vamos a abrir una tabla y a traves de una consulta SQL vamos a graficar los datos de la misma. La tabla que usamos se llama books6.mdb y esta incluida en el codigo de los ejercicios del Control Chart. En este ejercicio vamos a usar un menu que consta de Archivo: Grabar, Imprimir y Salir.Un menu Edicion que copia al portapapeles y Un menu de Grficos que despliega distintos tipos de graficos , uno de ellos a traves de la base de datos y otros por cdigo. Option Explicit 'debemos cargar la referencia Microsoft ActiveX data object 2.0 y el MSChart. Private Sub Form_Load() End Sub Private Sub Form_Resize() With MSChart1 .Left = 0 .Top = 0 .Width = Me.ScaleWidth .Height = Me.ScaleHeight

End With End Sub Private Sub mnuArchivoGuardar_Click() Dim strArchivoGuardar As String strArchivoGuardar = App.Path & "\" & App.EXEName & ".bmp" MSChart1.EditCopy SavePicture Clipboard.GetData, strArchivoGuardar MsgBox "El grfico ha sido guardado en " & strArchivoGuardar, vbInformation, "Guardar Grfico" End Sub Private Sub mnuArchivoImprimir_Click() MSChart1.EditCopy Printer.PaintPicture Clipboard.GetData, 0, 0 Printer.NewPage Printer.EndDoc MsgBox "El grfico ha sido enviado para su impresin.", vbInformation, "Imprimir grfico" End Sub Private Sub mnuArchivoSalir_Click() Unload Me End Sub Private Sub mnuEdicionCopiar_Click() MSChart1.EditCopy MsgBox "El grfico se copiado a la memoria.", vbInformation, "Copia de grfico" End Sub Private Sub mnuGraficosBaseDatos_Click() 'abrimos una conexion a datos con el uso de un proveedor OLEDB 'cuidado con la ruta donde esta la base de datos. Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strProveedor As String Dim strOrigenDatos As String Dim strSQL As String strProveedor = "Microsoft.Jet.OLEDB.3.51" strOrigenDatos = App.Path & "\books6.mdb" strSQL = "SELECT Title, SUM(Sales) AS Ventas FROM BookSales GROUP BY Title HAVING SUM(Sales) > 0" cnn.Open "provider=" & strProveedor & "; Data Source=" & strOrigenDatos rst.Open strSQL, cnn, adOpenStatic

With MSChart1 .ShowLegend = True .chartType = VtChChartType2dBar 'esta linea carga los datos Set .DataSource = rst End With End Sub Private Sub mnuGraficosIncrAut_Click() Dim intBucle As Integer With MSChart1 .chartType = VtChChartType3dBar .ColumnCount = 12 .RowCount = 12 .AutoIncrement = True For intBucle = 1 To 144 .Data = intBucle Next .AllowDynamicRotation = True .ShowLegend = True End With End Sub Private Sub mnuGraficosMatriz_Click() Dim avarDatos(0 To 3, 1 To 5) As Variant Dim intCol As Integer Dim intFila As Integer 'carga las leyendas y los datos With MSChart1 .chartType = VtChChartType3dBar .ColumnCount = 6 .RowCount = 12 'los bucles generan los datos de la matriz dimensionada como variant For intCol = 1 To 5 For intFila = 1 To 3 If intCol = 1 Then avarDatos(intFila, intCol) = "trim" & CStr(intFila + 1) Else avarDatos(intFila, intCol) = Int((50 - 10 + 1) * Rnd + 10) End If Next Next

.ShowLegend = True End With 'asigna los datos al control chart MSChart1.ChartData = avarDatos End Sub Private Sub mnuGraficosPuntos_Click() Dim intCol As Integer Dim intFila As Integer With MSChart1 .chartType = VtChChartType3dBar .ColumnCount = 6 .RowCount = 12 For intCol = 1 To 6 For intFila = 1 To 12 .Column = intCol .Row = intFila .Data = intCol * intFila Next Next .ShowLegend = True End With End Sub

Ejercicio N 13: Control Chart y Excel.


Vamos a usar datos de una planilla de Excel, para generar un grfico al cargarse el formulario que contiene al control MiSChart. El cdigo es el siguiente: Option Explicit ' Coloque este cdigo en la seccin Declaraciones. ' Si utiliza Office 97, asegrese de establecer una ' referencia a Microsoft Excel 8.0 Object Library. ' Si utiliza Office 95, establezca una referencia a ' Microsoft Excel 5.0 Object Library y declare

' la variable como Worksheet. Dim wkbObj As Workbook ' Declara una variable de objeto. Private Sub Form_Load() ' Establece despus la variable con el mtodo GetObject. Set wkbObj = GetObject _ (App.Path & "\pepe.xls") Dim matrizDatos(1 To 6, 1 To 2) Dim i As Integer For i = 1 To 6 ' Los valores de la columna A llenan la primera serie de las ' matriz. Si estos valores son cadenas, se convierten ' las etiquetas de las filas. matrizDatos(i, 1) = wkbObj.Worksheets(1) _ .Range("A" & i + 1).Value ' Despus los valores de la columna B llenan la segunda. matrizDatos(i, 2) = wkbObj.Worksheets(1) _ .Range("B" & i + 1).Value Next i MSChart1.ChartData = matrizDatos End Sub Los cdigos de los tres ltimos ejercicios que usan el Control Chart pueden bajarse de AQU.

Ejercicio N 14: Formulario de Datos.


Visual Basic cuenta con una cantidad importante de Asistentes. Entre ellos el asistente para la creacin de un Formulario de datos, osea un formulario que va a mostrar datos de una Base de datos. Para incorporar al Asistente vamos a Complementos, Administrador de complementos y alli se nos abre una ventana desde donde podemos seleccionar cualquiera de los Asistentes.

Seleccionamo s VB 6 Data Form Wizard y hacemos doble click, o marcamos en la casilla de seleccin, para qu se cargue. Luego hacemos Aceptar y al ir a Complemento s veremos la opcion de del asistente incluida. La seleccionamo s y se abrir una ventanacon la introduccin al Asistente. Pasamos a Siguiente, ya que aqu no podemos cargar la configuracin de ningn perfil, porque no tenemos ninguna configuracin o plantilla grabada.

En esta pantalla seleccionamo s qu tipo de base de datos vamos a usar, si una de Access o de un servidor remoto. En este caso elegimos Access. Y pasamos a la pantalla siguiente.

En esta pantalla si hacemos Click en el botn Examinar podemos elegir la base de datos que vamos a usar.

Aqu aparece una lista de opciones, que nos permite elegir qu tipo de formulario vamos a crear y como vamaos a mostrar los datos. Registro individual: nos mostrar registro por registro. Cuadrcula: lo har en una grilla. Maestro/Detall e: relaciona dos tablas. FlexGrid mostrar: las tablas con sus resmenes y totales de los datos existentes en la tabla y Chart lo har de manera grfica. Nosotros vamos a elegir a manera de grilla o Cuadrcula.

En esta pantalla seleccionamo s la tabla de la base de datos. Y de ella los campos que queremos mostrar. Los seleccionamo s y con los botones con flecha los vamos pasando a la lista de la derecha. Si queremos ordenar los datos por un campo determinado lo elegimos del combo desplegable. Aqui hacemos Click en seleccionar todos los botones o elegimos solo algunso. estos nos permiten navegar la grilla. La pantalla Siguiente nos pregunta si queremos guardar esta configuracin como una plantilla para futuros formularios. Luego hacemos Finalizar.

Al cerrase la ventana del Asistente veremos en nuestro proyecto estndar un nuevo formulario, si no usamos el primero o Form1 lo podemos eliminar. Posicionados en la ventana proyecto con el botn derecho tenemos la opcin de eleminarlo. Y grabamos la aplicacin con el formulario que cre el asistente. Sino lo usamos como formulario de presentacin. Como vemos en la ventana cdigo el asistente, ya codific los botones de navegacin y de cierre de la Aplicacin. El ejercicio completo podemos bajarlo de Aqu.

Ejercicio N 15: DHTML: Hola Mundo


Visual Basic en su versin 6 cuenta con un tipo de proyecto que nos permite crear un archivo con extensin html y por lo tanto al ejercutarlo, se abre en el navegador, para esto crea una .dll donde convierte el codigo visual basic a htm. Como vemos en la imagen debemos elegir en proyecto Nuevo: Aplicacin DHTML (Dinamic Html). Tenemos aqu tambin una caja de herramientas y una ventana diseo y otra ventana cdigo aunque con ciertas modificaciones, en el nombre de los objetos y en sus procedimientos. Vamos a hacer el tpico ejemplo de Hola Mundo pero en este editor de cdigo HTML. La aplicacin en tiempo de ejecucin abre una pgina web con las siguientes caractersticas:

Vamos a dibujar un control image, un botn y una caja de texto, modificamos sus propiedades a travs de la ventana propiedades, y luego codificamos en la ventana cdigo, la sintxis es la siguiente: Private Function Button1_onclick() As Boolean Image1.border = 4 TextField1.Value = "Hola mundo" End Function Los procedimientos aqu se llamarn funciones. Y la caja de texto en lugar de Caption tiene una propiedad llamada Value. Y la funcin no es Click sino onClick.

Ejercicio N 16: DHTML: Operaciones


Ahora vamos a hacer una calculadora simple de operaciones matemticas. Abrimos un nuevo proyecto DHTML y dibujamos una tabla con etiquetas y cajas de texto y cinco botones. En tiempo de ejecucin se ve como la imagen de la izquierda. Y la codificacin es la siguiente: Dim numero1 As Integer

Dim numero2 As Integer Private Sub BaseWindow_onload() TextField1.Select End Sub Private Function Button1_onclick() As Boolean numero1 = TextField1.Value numero2 = TextField2.Value TextField3.Value = Val(numero1 + numero2) End Function Private Function Button2_onclick() As Boolean numero1 = TextField1.Value numero2 = TextField2.Value TextField3.Value = Val(numero1 - numero2) End Function Private Function Button3_onclick() As Boolean numero1 = TextField1.Value numero2 = TextField2.Value TextField3.Value = Val(numero1 * numero2) End Function Private Function Button4_onclick() As Boolean numero1 = TextField1.Value numero2 = TextField2.Value TextField3.Value = Val(numero1 / numero2) End Function Private Function Button5_onclick() As Boolean TextField1.Value = "" TextField2.Value = "" TextField3.Value = "" End Function

También podría gustarte