Ejercicio Nº 1: Validar un texto.
El control caja de Texto tiene ahora en esta 6 un nuevo procedimiento que nos permite controlar la información que se ingresa, y u validada recién pasar al campo de texto sig
Prueben tratar de pasar a la caja de texto siguiente sin ingresar ningún dato con la tecla Tab y verán que no 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 s egundo texto para pasar al tercero.", vbInformation, "Instruccion Cancel = True End If End Sub El ejercicio puede bajarse de Aquí.
Ejercicio Nº 2: Crear controles.
Ahora Visual Basic nos permite, crear cont tiempo de ejecución sin necesidad de hace dentro de un array, a partir del primero crea tiempo de diseño.
El código es: Private WithEvents cmdmiboton As CommandButton Private Sub cmdmiboton_Click() cmdmiboton.Caption cmdmiboton.Caption = "¡Me hiciste Clic!" End Sub Private Sub Label2_Click() Set cmdmiboton = Controls.Add("VB.comman Controls.Add("VB.commandbutton", dbutton", "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 botón y luego con el Click del botón cambiamos su propied Caption. El ejercicio completo lo podemos bajar de Aquí.
Ejercicio Nº 3: ImageCombo.
Este nuevo control pertenece al grupo de componentes: Microsoft Windows Commo Controls 6.0. Y nos permite desplegar imág además 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 ImageCombo1.ComboItems.Add , , "Soy el item Nº " & CStr(i%) ImageCombo1.Text ImageCombo1.Text = "Soy el Item Nº " & CStr(i%) 'agrega un 'grafico comboimage.Image comboimage.Image = imgi% + 1 'controlar que no se exceda ex ceda de 'la cantidad c antidad 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 ImageCombo1.ImageList = ImageList1 End Sub El ejercicio puede bajarse de Aquí.
Ejercicio Nº 4: Coolbar Coolbar..
Este control pertenece al grupo Microsoft Common Controls 3 6.0, y permite despleg 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 d Coolbar pueden mantenerse flotantes 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. El ejercicio puede bajarse de Aquí.
Ejercicio Nº 5: Barra de progreso. Este ejercicio nos muestra el uso de una ba progreso que podemos usar mientras se re carga de un archivo o en otro momento de 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 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() 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", 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 deb modificar los valores de varias propiedades por código de un mismo control. El ejercicio completo puede bajarse de AQUÍ.
Ejercicio Nº 6: Barra de estado. Un ejemplo de como modificar en tiempo d ejecución la Barra de estado. En el formula tenemos una caja de texto te xto donde ingresam texto a desplegar y luego en el click de un asignamos al panel de la barra correspondi El código correspondiente es:
Private Sub cmdAceptar_Click() StatusBar1.Panels("Texto").T StatusBar1.Panels("Texto").Text ext = txtPanel End Sub Como vemos es muy sencillo, para asignarle un valor al panel correspondiente debemos identificarlo con nombre del mismo, determinado en la ventana propiedades, para tener acceso acces o al mismo debemos hacer cli el boton derecho sobre el control y alli podemos configurar los distintos paneles. El ejercicio puede bajarse de AQUÍ.
Ejercicio Nº 7: Pestañas.
Es común usar el control TabStrip TabStrip para mo aplicaciones con pestañas, sin embargo es más potente el control Tabbed Dialog ya qu panel puede contener otros controles, esto el diseño y su codificación.
En el formulario dibujamos un control SStab traido de componentes y luego en su primer pestaña dibujam varias labels que nos vincularan con las otras pestañas, donde se mostrará en una texto y en la otrs una im El código es el siguiente: Option Explicit Private Sub Form_Load() SSTab1.T SSTab1.Tab ab = 0 'esto hace que se muestre el primer panel End Sub Private Sub Label1_Click() Text1.Text = "Aqui podemos cargar un texto te xto 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 te xto 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 asignación del indice del panel de l control que querem mencionar. El código completo lo pueden bajar de AQUÍ AQUÍ..
Ejercicio Nº 8: ListView.
Este control nos permite desplegar una list archivos al estilo el Explorador de Window este caso los agregamos a traves del ingre datos de cajas de texto. Y despliegan un ic azar seleccionado de un control ImageList, hemos usado en otros ejercicios. El formul f ormul permite a traves del uso de botones de opci seleccionar que modalidad queremos que t los iconos.
El código es el siguiente: Option Explicit Function NroAzar(Min As Integer, 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.Coun ilIconos.ListImages.Count) t) '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 txtTelefono End Sub Private Sub cmdEliminar_Click() lvwPersonas.ListItems.Remove lvwPersonas.ListItems.Remo ve lvwPersonas.SelectedItem.In lvwPersonas.SelectedItem.Index dex 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 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 Tenemos d botones con la opcion de Agregar y de Borrar, los ingresos. Y Botones de Opcion para seleccionar la propi View de la Lista acorde al Indice del option Button. los iconos que se muestran en los encabezados e ncabezados fueron asignados al ingresar el Nombre de las columnas y asociando la propiedad Icon Index a los Iconos de la Im ilColumnas. o sea que tenemos dos controles ImageList. El codigo completo puede bajarse de AQUÍ.
Ejercicio Nº 9: TreeView.
Este ejercicio muestra un tipico arbol de ar de windows con su raíz principal y sus deri Acompañado de Iconos tomados también d control ImageList. El método Add, agrega u al arbol de Archivos.
El código es: Option Explicit Private Sub Arbol_Click() lblActual = Arbol.SelectedItem.Text 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 Arbol.Nodes.Add "Nieto 1", tvwNext, t vwNext, "Nieto 2", " 6 Arbol.Nodes.Add Arbol.Nodes.Add "Nieto 1", tvwPrevious, "Nieto 0", "Nieto 0", 7 End Sub El ejercicio completo puede bajarse de Aquí.
Ejercicio Nº 10: Control Chart.
El control Miscrosoft Chart nos permite des gráficos asociados a determinados datos q podemos cargar de otros archivos como pu una planilla de Excel o una Base de datos, determinarlos por código.
El control lo traemos de Componentes. Y al dibujarlo en el formulario vamos a ver que contiene de manera predeterminada un gráfico con datos apócrifos para mostarnos su diseño. Como organiza los datos: El control MSChart requiere que todos los datos se organicen en filas y columna Además requiere saber cuántos puntos de datos habrá en cada fila y columna que debe graficar. Por lo gen cuenta con una columna de datos con múltiples filas (algo parecido a un alista de números). Por ejemplo: s desean graficar las ventas de una empresa durante los últimos doce meses, contará con una sola columna y doce filas(una por cada mes). Si desea comparar los dos últimos años, tendrá dos columnas (una por cad doce filas(una por cada mes). Para poder organizar los datos usamos las propieddaes ColumnCount y Row En el ejemplo mencionado: ColumnCount= ColumnCount= 1 RowCount= 12 ChartType= 1 (vtChChartType2dBar) Para agregar datos en tiempo de diseño: capturamos 12 cifras en tiempo de diseño para poder apreciar el g establecemos la propiedad AutoIncremente a True True y en la propiedad Data asignamos el valor 1, 2 o 3 para incrementar. incrementar. Hagan la prueba, de esa manera carga datos de manera automática. Vamos Vamos a hacer un primer p rimer 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 MSChart1.RowCount = 3 'asigna la cantidad de columnas de color MSChart1.ColumnCount 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 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 MSChart1.ColumnLabel = "Azul" 'Le agrego un texto al pie del grafico MSChart1.FootnoteT MSChart1.FootnoteText ext = "Este es el pie del gráfico." 'Le agrego un Título. MSChart1.TitleText MSChart1.TitleText = "Gráfico MSChart" 'Puedo cambiar el tipo de letra del titulo y del Pie de grafico With MSChart1.Title.VtFont MSChart1.Title.VtFont .Name = "Arial" .Style = VtFontStyleBold .Effect = VtFontEffectUnderline .Size = 14 .VtColor.Set .VtColor.Set 0, 0, 255 End With With MSChart1.Footnote.VtFont MSChart1.Footnote.VtFont .Name = "arial" .Style = VtFontStyleBold
.Effect = VtFontEffectUnderline .Size = 10 .VtColor.Set .VtColor.Set 125, 150, 155 End With 'Con la propiedad ChartType podemos podemos cambiar el tipo de grafico. 'Por ejemplo: vtChChartType3dBar: vtChChartType3dBar: es un grafico de Barras en e n 3D. 'Tambien '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º 11: Gráficos con Chart.
En este ejercicio vamos a abrir una tabla y de una consulta SQL vamos a graficar los d la misma. La tabla que usamos se llama books6.mdb y esta incluida en el codigo de ejercicios del Control Chart.
En este ejercicio vamos a usar un menu que consta de Archivo: Grabar, Imprimir y Salir.Un Salir.Un menu Edicion q al portapapeles y Un menu de Gráficos que despliega distintos tipos de graficos , uno de ellos a traves de l de datos y otros por código. 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() mnuArchivoGuardar_Click() Dim strArchivoGuardar As String strArchivoGuardar strArchivoGuardar = App.Path & "\" & App.EXEName & ".bmp" MSChart1.EditCopy SavePicture Clipboard.GetData, strArchivoGuardar strArchivoGuardar MsgBox "El gráfico ha sido guardado en " & strArchivoGuardar, vbInformation, vbInformation, "Guardar Gráfico" End Sub Private Sub mnuArchivoImprimir_Click() mnuArchivoImprimir_Click() MSChart1.EditCopy Printer.PaintPicture Printer.PaintPicture Clipboard.GetData, 0, 0 Printer.NewPage Printer.EndDoc MsgBox "El gráfico ha sido enviado para su impresión.", vbInformation, "Imprimir "Imprimir gráfico" End Sub Private Sub mnuArchivoSalir_Click() Unload Me End Sub Private Sub mnuEdicionCopiar_Click() mnuEdicionCopiar_Click()
MSChart1.EditCopy MsgBox "El gráfico se copiado a la memoria.", vbInformation, "Copia de gráfico" 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 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 Ventas FROM BookSales GROUP BY Title HAVING SUM(Sales) > 0" cnn.Open "provider=" "provider=" & strProveedor & "; Data D ata 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 .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 .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 .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º 12: Control Chart y Excel.
Vamos a usar datos de una planilla de Exce generar un gráfico al cargarse el formulario contiene al control MiSChart. El código es siguiente:
Option Explicit ' Coloque este código en la sección Declaraciones. ' Si utiliza Office 97, asegúrese 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 Workbook ' Declara una variable de objeto. Private Sub Form_Load() ' Establece después la variable con el método 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 primera serie de las ' matriz. Si estos valores son cadenas, se convi ' las etiquetas de las filas. matrizDatos(i, 1) = wkbObj.Worksheets(1) _ .Range("A" & i + 1).Value ' Después 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 códigos de los tres últimos ejercicios e jercicios que usan el Control Chart pueden bajarse deAQUÍ. deAQUÍ.
Ejercicio Nº 13: Formulario de Datos. Visual Basic cuenta con una cantidad importante de Asistentes. Entre ellos el asistente para la creación de Formulario de datos, osea un formulario que va a mostrar datos de una Base de datos. Para incorporar al Asistente vamos a Complementos, Administrador Administrador de complementos y alli se nos abre un ventana desde donde podemos seleccionar cualquiera de los Asistentes.
Seleccionamos VB 6 Data Form Wizard y h doble click, o marcamos en la casilla de sel para qu se cargue. Luego hacemos Aceptar Complementos veremos la opcion de del as incluida. La seleccionamos y se abrirá una ventanacon la introducción al Asistente.
Pasamos a Siguiente, ya que aquí a quí no podemos cargar la configuración de ningún perfil, porque no tenemos ninguna configuración o plantilla grabada.
En esta pantalla seleccionamos qué tipo de de datos vamos a usar, si una de Access o servidor remoto. En este caso elegimos Ac pasamos a la pantalla siguiente.
En esta pantalla si hacemos Click en el bot Examinar podemos elegir la base de datos da tos vamos a usar.
Aquí aparece una lista de opciones, que no permite elegir qué tipo de formulario f ormulario vamos y como vamaos a mostrar los datos. Regist individual: nos mostrará registro por regist Cuadrícula: lo hará en una grilla. Maestro/D relaciona dos tablas.
FlexGrid mostrará: las tablas con sus resúmenes y totales de los datos existentes en la tabla y Chart lo har manera gráfica. Nosotros vamos a elegir a manera de grilla o Cuadrícula.
En esta pantalla seleccionamos la tabla de l de datos. Y de ella los campos que querem mostrar. mostrar. Los seleccionamos y con los boto flecha los vamos pasando a la lista de la de Si queremos ordenar los datos por un cam determinado lo elegimos del combo desple
Aqui hacemos Click en seleccionar selec cionar todos l botones o elegimos solo algunso. estos no permiten navegar la grilla. La pantalla Sigui nos pregunta si queremos guardar esta configuración como una plantilla para futur formularios. Luego hacemos Finalizar.
Al cerrase la ventana del Asistente veremo nuestro proyecto estándar un nuevo formul no usamos el primero o Form1 lo podemos eliminar.
Posicionados en la ventana proyecto con el botón derecho tenemos la opción de eleminarlo. Y grabamos la aplicación con el formulario que creó el asistente. Sino lo usamos como formulario de presentación. Como en la ventana código el asistente, asi stente, ya codificó los botones de navegación y de cierre de la Aplicación. El ejercicio completo podemos bajarlo de Aquí.
Ejercicio Nº 14: DHTML: Operaciones Vamos a dibujar un control image, un botón caja de texto, modificamos sus propiedade través de la ventana propiedades, y luego codificamos en la ventana código, la sintáxi 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