![]() ![]() ![]() ![]() |
|
|
Autor: Alvaro Canteiro Martínez.
Email: acm@cryogen.com
http://www.cryogen.com/acm
|
PROLOGO
Esta es una guía de Visual Basic, no contiene todo lo que es Visual Basic, pero desde luego que está bastante bien como punto de partida para el que quiera tener una guía rápida acerca de algunos aspectos de Visual Basic.
Tengo intención de ir ampliando esta guía cuando tenga algo de tiempo y según vaya aprendiendo mas aspectos de dicho lenguaje, así que por el momento y como no tengo tiempo para mas, pues habrá que conformarse con lo que hay.
En el mismo paquete que esta guía también vienen una recopilación de prácticas hechas en Visual Basic, espero que os sirvan de algo.
Este documento y las prácticas en Visual Basic que vienen con él son completamente freeware, no obstante si alguien quiere hacerme un donativo, para que me tome unas cervezas a su salud, que me envié un email y ya veremos como solucionar ese problema. J
|
INTRODUCCION
Variable -> Lugar donde se almacenan temporalmente los datos.
Nombre - empezar por letra
- ningún punto (.)
Definición de variables
DIM nombre_variable AS tipo_dato
TIPOS DE DATOS
- Entero (Integer) 32768 a 32767 %(no decimales)
- Largo (Long) - 147483368 a 214 millones & (no decimales)
- Simple (Single) 1.4E-45 a 34E68 !(si decimales)
- Doble (Double) 4.9E-324 a 1.7E308 #(si decimales)
- Carácter (string) 0 a 65.500
- Otras
- Bytes (Byte) - enteros de 0 a 255
- Boolean (true,false) - verdadero o falso
- Fecha (Date) Fecha
- Variant tipo especial
BUCLES Y CONDICIONALES
CASE
Select case n
Case 0
.......................
Case 1
.......................
End Select
Si se desea utilizar una estructura de case else se hace asi:
Select case n
Case 1
...........
Case 2
...........
Case else
...........
End select
FOR
For n = 1 to 20 step 1
...........
Next n
WHILE
While n < 0
..................
wend
LOOP
Do
...............
loop until n = 1
Do while n = 1
...............
loop
IF
If <condicion> then
.............
else
.............
end if
CONTROLADORES
CONTROLADOR RELOJ
Todo lo que se ponga dentro se ejecuta cada tiempo indicado dentro de propiedades.interval.
CONTROLADOR COMBO(lista desplegable)
Con la propiedad .additem se van añadiendo elementos al combo.
CONTROLADOR LISTBOX(lista de elementos)
Este controlador dispone de las siguientes propiedades:
.listcount cuenta el número de elementos
.additem añade elemento
.listindex devuelve el numero de elemento seleccionado
.list(n) devuelve elemento n
.removeitem(n) borra el elemento n
.selected(n) true o false dependiendo de si el elemento esta seleccionado o no lo esta
CONTROLADOR FRAME(agrupamientos)
Sirve para agrupar varios controles de tipo botón y que se activen las posibilidades correspondientes a poder seleccionar uno de los agrupados dentro de este controlador.
CONTROLADOR OPTIONBUTTON
Ejecuta lo que tenga dentro al seleccionar, se agrupa con controlador frame para seleccionar uno de varios.
MULTIPLES BOTONES CON INDEX
Todos apuntan a una misma función la cual tiene un parámetro "index" que indica el botón pulsado. Se crea un botón, se le pone el index a cero (propiedad) y desde el se crean otros con ctrl-c y ctrl-v (copiar y pegar).
MSGBOX
Si se introduce la siguiente instrucción:
Msgbox("...............................")
Saldrá un cuadro conteniendo el texto entre comillas y pedirá pinchar en enter para continuar.
CONTROLADOR HSCROLL/VSCROLL
Son los deslizadores verticales y horizontales.
.max número de elementos máximo
.min número de elementos mínimo
.value valor actual
Tambien se puede poner desde la ventana de propiedades.
COLORES
Se utiliza la función RGB(r,g,b) siendo los parámetros que se le dan la intensidad de color rojo, verde y azul. El valor que devuelve se le pasa a label.backcolor = rgb(.......).
CONTROLADOR DE UNIDAD/SUBDIRECTORIOS/FICHEROS
Una vez creados los controladores drive, dir y filelist se utilizan así:
Dentro de drive dir1.path = drive1.drive
Dentro de dir - dir1.path = dir1.path
Dentro de filelist (nada si es solo visualizar)
Para ver un fichero de imagen seleccionado en filelist:
.pattern = "*.bmp" muestra en filelist solo los bmps
se crea control image
image.stretch centra imagen (=true)
image.picture=load.picture (fichero)
MOVER ELEMENTOS DESDE FILELIST A LISTBOX
En filelist se indica el icono inicial y se activa el drag
.dragicon = loadpicture("fichero.ico")
.drag
En listbox
Procedimiento dragdrop list.additem file1.path & file1
Procedimiento dragover file1.dragicon = loadpicture("fichero2.ico") (indica icono final)
En dragover el parámetro state indica el estado de movimiento.
CONTROLADOR CADENAS
Right(cadena,1) - devuelve primer carácter por la derecha
Left(cadena,1) devuelve primer carácter por la izquierda
Len(cadena) tamaño cadena
PROCEDIMIENTO KEYPRESS DENTRO DE CONTROLADOR TEXT
Se ejecuta cuando se pulsa una tecla.
Keyascii valor ascii de la tecla pulsada
CREA/BORRA BOTONES
Load command1(3) el 3 es el valor index (si lo tiene)
Command1(3).visible = true
.left = n
. up = n
. caption = "............"
unload command1(3) borra el boton creado
FUNCION DE ORDENACION DE TABLAS
Dada una tabla de nombre tabla y cuyo maximo elemento esta en posición 10.
Dim tabla(10)
Function ordena_por_intercambio
Dim mayorpos,m as single
Dim final as single
Final = 10
Mayorpos = 1
Do
For m = 1 to final step 1
If val(tabla(m)) > val(tabla(mayorpos)) then mayorpos = m
Next m
Aux = val(tabla(final(final))
Tabla(final) = val(tabla(mayorpos))
Tabla(mayorpos) = val(aux)
Final = final 1
Mayorpos = 1
Loop until final = 1
End function
PASO POR VALOR O POR REFERENCIA
Private function ----------------- (byval operando) <- valor
----------------- (operando) <- referencia
CONTROLADOR GRID(hoja calculo)
.rows -> número filas
.cols -> número columnas
Escribir un dato en la posicion x,y:
.col = x
.row = y
.text = ...........
CONTROL DATA(manejo de bases de datos)
Propiedad DataBaseName nombre de base de datos
Comment tipo de base de datos
RecordSource establece la tabla de la base de datos a utilizar
El control permite ir avanzando o retrocediendo registros. En un textbox elejido se busca DataField y DataSource dentro de Dato (ordenado por categorías).
En DataSource se pone el control data referenciado y en DataField se seleciona el campo que se mostrara según se mueve el control data.
Propiedad EOFAction (que hacer ante un finde fichero)
MoveLast va al último registro que hay datos
EOF se llega a un registro en blanco
AddNew se genera un registro en blanco para añadir datos
El data control es feo y en vez de eso se van a utilizar otros botones que hagan la misma función.
Data1.Recordset.Movefirst va al primer registro
.Movenext va al siguiente registro
.Moveprevious va al registro anterior
.MoveLast va al último registro
.EOF comprueba si es fin de fichero
.BOF comprueba si es principio de fichero
.AddNew añade un registro y lo edita
.Delete borra el registro actual
Esto da errores cuando se esta al principio y se hace un moveprevious, esto se arregla comprobando con .BOF antes de retroceder (se pregunta si es principio de fichero y si no se mueve).
En el caso de final de fichero seria igual pero con .EOF.
Data1.Recordset.Field(n) -> numero campo
.("Nombre") -> nombre del campo
text1.enabled = true -> permite editar controles text
= false -> no permite editar controles text
DBCOMBO(control combo para bases de datos enlazadas)
.boundcolumn -> campo enlazado en data2
lo que se guarda internamente
.datafield -> campo de enlace desde data1
.datasource -> data1 (origen)
.listfield -> campo a mostrar en data2
lo que se muestra
.rowsource -> data2 (origen del campo a mostrar)
.boundtext -> leer lo que guarda
CONTROL TREEVIEW,IMAGELIST (en microsoft windows common controls 5.0)
Primero se introducen las imágenes.
En propiedades>personalizado>subcarpeta imágenes insertar imagen y seleccionar buscando las que se quieren poner.
Despues se introduce un control treeview y en la propiedad personalizado se pone imagelist el nombre edl controlador imagelist creado anteriormente. Con esto se prepara el control treeview para que en cada nodo muestre las imágenes de imagelist.
Ahora hay que crear el nodo padre, lo primero que hay que definir son los nodos.
DIM <nombre> as node
Primer paso
Definir el nodo padre
DIM NP as node
Segundo paso
Nodo padre
Set NP = T1.Nodes.Add(,,,"Agenda",1,2)
Tercer paso
Nodos hijo
For i = 1 to 10 step 1
Set n2 = t1.nodes.add(np,4,i,4,3)
Next i
T1.Nodes.Clear borrar nodos del treeview
FORMATO DE FECHA
Se crea una variable de tipo fecha:
Fecha = 1/1/99
Luego se utiliza el comando format para extraer datos de la fecha
Format(fecha,"d mmmm")
Para ver las posibilidades de el comando format se busca en la ayuda de Visual Basic.
Para calcular el numero de dias transcurridos entre dos fechas:
Dias = #31/12/1999# ... #1/1/1998#
CONTROL PROGRESSBAR
Se utiliza a modo de barra que va incrementandose para poder ver lo que queda para acabar un proceso.
.Min -> Valor mínimo
.Max -> Valor máximo
.Value -> Valor actual
Se hace en base a utilizar la instrucción:
Progressbar.value = progressbar.value + 1
CONTROL LISTVIEW
Crear un columnheader
DIM col as columnheader
Se añade columnas (tantas como se necesite)
Set col = lv1.columnheaders.add(,,"texto",ancho)
En "texto" se pone lo que se quiere que aparezca en la columna
En "ancho" se pone el valor del ancho de la columna
Para ver la visualiazacion hay 4 formas:
.view = 0
.view = 1
.view = 2
.view = 3 (este es el que se utiliza para ver en columnas)
Para añadir la información:
Crear variable DIM lista as ListItem
Set lista = lv1.listitems.add(,,"texto",1,2)
A continuación se pone lo que se quiere que aparezca en cada dato de la lista
Lista.subitems(1) = ...........
Lista.subitems(2) = ............
En personalizado de listview se pone el control imagelist para que se seleccionen las imágenes para poner en el control listview.
EDITAR REGISTRO
Data1.Recordset.Edit
Data1.Recordset("codigo") = 1
Data1.Recordset("nombre") = "Pepe"
Data1.recordset("Edad") = 23
Data1.Recordset.Update (Graba registro)
Data1.recordset.cancelupdate (Cancela grabación)
AÑADIR REGISTRO
Data1.Recordset.Addnew
( Editar registro )
Data1.Recordset.Update
BORRAR REGISTRO
Data1.recordset.Delete
BUSQUEDAS DE REGISTROS
Se declara la variable para el criterio
Dim criterio as string
Se declara un criterio de busqueda
Criterio = "codigo=" & str(tex1.text) (text1.text es la cadena que se busca)
C2 = "nombre=""" & str(text2.text) & """ nombre = "pepe" (suponiendo que text2.text=pepe)
Se busca el primer registro que cumpla el criterio
Data1.recordset.findfirst criterio
Se ejecutan las instrucciones pertinentes dependiendo de si ha sido encontrado o nó.
If data1.recordset.nomatch then
No encontrado
Else
Encontrado
End If
En este caso "no encontrado" implica las intrucciones que se ejecutarán en caso de que no se encuentre el registro que cumpla el criterio de búsqueda, y "encontrado" implica las instrucciones que se ejecutarán en caso de que se encuentre un registro que cumpla el criterio de búsqueda.
CRITERIO DE BUSQUEDA DE FECHAS
Para buscar en bases Access hay que buscar como mes/dia/año
1 > fecha = format (fecha, "m d yy")
2 -> criterio = "fecha=" & "#" & fecha & "#" & ""
En Visual Basic antes de buscar fechas hay que aplicarles el formato correcto, por eso antes de establecer el criterio, se adapta la fecha al formato que se necesita.
Criterio equivale al criterio de búsqueda.
ACTUALIZAR EL SUBITEM DE UN LISTVIEW
Listview1.selecteditem.subitems(1) = ..............
Esta instrucción sirve para modificar el contenido de un listview.
FORMULARIOS MODALES
Hay dos tipos de apertura de formularios:
Form2.show 1 -> apertura de formulario modal.
Form2.show -> apertura de formulario no modal.
Para descargar un formulario se emplea la instrucción "unload form2".
SQL DESDE VISUAL BASIC
Se hace una consulta desde Access, luego se accede a ella desde Visual Basic como si fuera una tabla más.
Luego desde Visual Basic se pone:
Data1.recordsource = "select ..................."
Todo lo que haya entre comillas (empezando por select) equivale a la instrucción sql.
UNIR UN CONTROL DBGRID A UNA TABLA
En la propiedad datasource se pone el control data deseado y entonces saldrá una tabla con su contenido.
FICHEROS
ALEATORIO
Hay que definir unos registros de tamaño fijo.
Type reg amigo
Nombre as char*80;
Dir as char*80;
End type
put -> put numarchivo numeroregistro variable
BINARIO
Tamaño de registro variable
Open path/fichero for binary as intarchivo
Lectura/escritura
Get nuamrchivo [posicion] variables
Put nuamrchivo [posicion] variables
VB TRATAMIENTO DE ARCHIVOS
Abrir open
Leer get
Escribir put
Cerrar close
Se puede acceder como secuencias, aleatorio o binario.
SECUENCIAL
Leer
Open path/fichero for input/output/append as numarchivo
Antes de abrirlo hay que obtener numero de archivo
Numarchivo = freefile numarchivo = entero
Escribir y leer
Write (con formato)
Print (sin formato)
Write #numarchivo <variable> (input)
Print #numarchivo <variable> (input)
Leer input
Leer sin formato line input
Cerrar
Close (listanumarchivo)
CREACION DE UNA BASE DE DATOS
Pasos:
1 Definir variables para cada componente de la base de datos
Dim bd as database
Dim tbd as table
Dim idx as index
Dim rel as relation
Dim fld as field
Añadir componente DAO
2 Crear la BD Create Database
Set bd = create database(".....")
--- Fin documento ---
|
Copyrigth © Javier Jiménez Muñoz, Colombia, 1.999. Aportes de información, manuales o comentarios de mi Web, envia un email a valeth33@yahoo.es. |
![]() ![]() ![]() |