Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 - Introduccin 2 - Breve historia y alcance del lenguaje 3 - La interface del Visual basic - El IDE 4 - Formularios, propiedades, mtodos y eventos 5 - Primer ejemplo 6 - Sobre los proyectos en Visual Basic
y y y y y y
1 - Introduccin
Bienvenido a la introduccin de este tutorial bsico de visual basic Esta gua esta destinado para aquellos que nunca han entrado en contacto con este lenguaje de programacin. ( para que te des una idea se va a realizar en este captulo algo parecido al Hola mundo), si sos nuevo puede venirte como anillo al dedo, si no, te recomiendo que no pierdas ni un segundo leyendo de gusto y cierres la ventana, jeje. Este tutorial est basado en la versin 6.0 de visual basic, aunque con otras versiones no creo que tengas problemas. Entrando en el tema, con este lenguaje de programacin pods realizar casi cualquier tipo de programa para plataformas windows, esto quiere decir, que pods programar utilitarios para windows, bases de datos, aplicaciones comerciales y de gestin, juegos, etc.. . Sin embargo lo que no pods desarrollar son por ejemplo: aplicaciones que administren bases de datos gigantes, drivers para dispositivos , juegos que utilicen una interfaz grfica compleja, ya que tendras que utilizar otro entorno de desarrollo o lenguaje , como por ejemplo el C, el C++, Delphi , .NET u otros, es decir lenguajes que sean mas rpidos y que tengan soporte para este tipo de proyectos y programas.
Las aplicaciones que se puden desarrollar con visual basic 5 y 6 son aplicaciones de 32 bits solo para plataformas Windows. Mas informacin sobre la historia de visual basic en la Wikipedia
En la imagen superior pods ver la barra de controles. Esta barra contiene los controles estndar de Visual Basic. Se los llama estndar porque que son los controles que por defecto aade Visual Basic cuando creamos un programa desde 0. A los controles no estndar, u otro tipo de controles, por ejemplo los creados por nosotros, los que tengamos instalados en el sistema, y dems que se instalan con el VB, hay que agregarlos a mano, es decir uno mismo, esto se hace desde el Men Componentes o presionando las combinaciones de tecla Ctrl+T.
Cuando se agrega un control no estndar, se aade a la barra y ya lo pods utilizar.. Los controles estndar son los controles bsicos, por ejemplo los Command Button o botones de comando, Control TextBox o caja de texto, Picture Box o caja de imagen. El control FileListBox para ver archivos, y varios otros que se explican en los siguientes captulos.
La imagen anterior, nos muestra los formularios (ventanas) , mdulos de cdigo, y otros tipos de objeto que componen el proyecto que estamos realizando. Desde esta ventana podemos hacer varias operaciones, por ejemplo al seleccionar un formulario, en los botones "Ver Objeto" y "Ver cdigo" en la parte superior, accedemos a la vista de diseo del formulario, mientras que si elegimos Ver cdigo, se abre una ventana que muestra el cdigo de ese formulario seleccionado. Tambin podemos desde esta ventana, Guardar el formulario, eliminarlo y varias otras acciones.
Esta otra ventana acoplable que est debajo de la ventana de Proyecto, se llama Ventana de propiedades de Visual Basic. Desde la Ventana de Propiedades podemos modificar las caractersticas del objeto o control seleccionado actualmente. Por ejemplo si agrego un formulario y lo selecciono, puedo establecerle el color de fondo, el ancho, alto, el nombre que va a tener para poder identificarlo y muchas otras propieades. Lo importante que quede claro es que esta ventana cambia cada ves que seleccionamos un objeto o control diferente, si seleccionamos un botn o Command Button, visualizar las propiedades de ese botn, si seleccionamos un formulario las propiedades de ese formulario, si seleccionamos un TextBox, mostrar ls propiedades de ese textBox , etc..
Esta es la barra de menues y barra de herramientas de Visual Basic. Para no hacerla pesada y describir todas las opciones ya que no tiene sentido describir todo, desde aqu se puede configurar todo el entorno o IDE, elegir el tipo de proyecto que vamos a crear, ( por ejemplo un programa Exe comn , una Dll ActiveX o un Proyecto Ocx), Tambin Compilar el proyecto en un ejecutable, Acceder a la ayuda, (tens que tener instalados los CD del Msdn), Abrir un proyecto, Guardar, El acceso a los distintos modos y opciones de depuracin de errores, y muchas opciones mas.
En esta parte se realizar un ejemplo simple que consistir en una ventana o formulario que contendr un botn, y al presionar este botn nos mostrar o abrir otra ventana con un mensaje, como las que utiliza windows cuando nos informa sobre algo . Este mensaje visualizar un texto con la descripcin"Mi primer programa". Pero antes de realizar este ejercicio veamos un par conceptos bsicos necesarios Formulario
Es la ventana o contenedor donde colocamos y agregamos controles de comando , como un botn, una caja de texto, un control de imagen, etc... Cuando hacemos un programa podemos tener varios formularios. Por ejemplo podemos tener un formulario1 con un botn y al presionar este botn hacer aparecer otro formulario en este caso un formulario2. Propiedades: Cuando hablamos de propiedades nos estamos refiriendo a las caractersticas que puede tener un control u objeto, por ejemplo: los botones llamados commandbutton tienen una propiedad llamada caption. Esta propiedad establece el texto que va a mostrar el botn en el propio botn. Los formularios tambin poseen esta propiedad caption y muchos otros controles tambin la poseen, pero no todos. Otro ejemplo de una propiedad puede ser el color de fondo de un control, el ancho, el alto, el nombre que lleva para poder identificarlos, etc.. . En resumen las propiedades, haciendo una comparacin, seran como para las personas tener 2 brazos, 2 piernas, el color del pelo, el color de los ojos, el nombre de la persona, donde vive, su cdigo postal, etc...
Los Eventos Los controles y objetos poseen Eventos, pero no son todos iguales para todos los controles. Ejemplos de eventos serian: Para un botn: el evento click (cuando lo presionamos), para un formulario: load (este evento se ejecuta cuando se carga el formulario en la memoria), para un textbox o caja de texto: keypress (este evento se dispara cuando presionamos una tecla y el foco est puesto dentro de la caja de texto).
Los Mtodos Los mtodos de un objeto son funciones propias que tiene cada objeto. Por ejemplo los formularios poseen un mtodo llamado show , y lo que hace es cargarlo y hacerlo visible. Para un control combobox este tiene un mtodo llamado additem, y lo que hace es agregar elementos en dicho control. Pero los mtodos al igual que las propiedades y eventos, no estn presentes en todos los
controles de manera igual, es decir algunos objetos y controles pueden compartirlos, pero otros no. Por ejemplo el mtodo Show de los formularios, no lo posee ningn control estndar excepto los formularios.
2 - Ya abierto el VB pods ver que tens un formulario llamado Form1, este es agregado automticamente cuando comenzs un nuevo programa o proyecto, y es el nombre por defecto que se le asigna, obviamente esto se puede cambiar utilizando la propiedad Name queposeen los controles. 3 - Como se dijo nuestro programa va a consistir en un formulario con un botn que al presionarlo muestre un texto diciendo "Mi Primer programa", entonces agreg un botn a nuestro formulario. Para agregarlo lo pods hacer desde la barra de controles, en la parte izquierda del IDE, y busc entre todos ellos un control
llamado Command Button (Botn de comando). Haciendo doble click sobre el control, o dibujandolo sobre el formulario. 4 - Como te dars cuenta, el texto que muestra el botn por defecto es "Command1". Nosotros lo vamos a cambiar por "Mostrar mensaje". Para ello tenemos que cambiarle la propiedad Caption del botn. Entonces seleccion con un click el command1 (serciorate que est seleccionado, cuando al rededor del botn aparece unos puntos azules) y en la ventana de propiedades de los controles que esta ubicada en la parte derecha del IDE, te mostrar las propiedades del control que est seleccionado actualmente. En este caso como est seleccionado el botn solo nos mostrar las propiedades del Command1. Ahora busc en la lista de propiedades la propiedad Caption y vers que dice Command1, borrala y escribe: "Mostrar mensaje". Como pods ver el texto o leyenda del botn a cambiado. NOTA: Nosotros todava no hemos ejecutado nuestro programa por que obviamente lo estamos diseando. A esto se lo denomina trabajar en "Tiempo de diseo". La otra forma de trabajo se denomina "Tiempo de ejecucin", que es cuando nuestro programa est siendo ejecutado o cargado en memoria. Tendras que tener algo por el estilo en tu formulario Form1
5 - Ahora vamos a agregar las instrucciones o lneas de cdigo para que cuando pulss el botn se despliegue un mensaje. Hac Doble click sobre el botn y pods ver que se habre una ventana donde escribir el cdigo. Esta se llama precisamente ventana de Cdigo. Al abrirse la ventana muestra una serie de instrucciones
Sub
Command1_Click()
A esto se lo llama Subrutina o procedimiento de cdigo, y estas subrutinas tienen un comienzo y un fin.
Despus se explica mas adelante que es eso de Private sub, End Sub, procedimientos, funciones...etc Por ahora lo que te tiene que quedar claro es que nosotros vamos a ingresar el cdigo necesario para mostrar, por medio de una ventana, el mensaje "mi primer programa". Entre la declaracin Private sub Command1_click y End sub escribe lo siguiente
Sub primer
Command1_click() programa"
6 - Ac lo que se hizo fue utilizar una funcin llamada MsgBox , que sirve para mostrar mensajes. Ya podemos ejecutar o probar el ejemplo, para ello hay varias opciones y formas: Desde la barra de herramientas y presionas la flecha azul Ir al men Ejecutar > opcin Iniciar La mas sencilla de todas que es presionando la tecla F5.
y y y
En este momento nuestro programa est en ejecucin, para volver a la pantalla de vista de diseo y detener el programa , tenemos que presionar el cono con un cuadrado azul (stop) o ir al men ejecutar y elegir la opcin terminar.
Contenido
1.1 - Mas sobre formularios, mtodos y eventos 1.2 - Ejemplo sobre mtodos y eventos 1.3 - Otro ejemplo sobre mtodos y eventos en los formularios 2 - Los controles estndar de vb
y y y y
Para seguir con el tema de los mtodos y eventos, vamos a hacer un ejemplo simple de ejercicio. Este ejemplo, consistir en un formulario que contendr un botn y , al presionarlo nos mostrar otro formulario.
Pasos a seguir para el ejemplo: 1 - Comenz un nuevo proyecto Exe. Por defecto visual basic te agrega un formulario llamado Form1. este formulario contendr el botn que al presionarlo muestre otro formulario, en este caso un Form2. 2 - Desde la barra de controles agreg un Commandbutton al formulario. Por defecto el texto que muestra es Command1 , nosotros lo cambiaremos por : "Mostrar formulario 2". Ahora selecciona el botn para que te muestre la lista de propiedades del mismo. Por si ya te olvidaste, la ventana de propiedades est a la derecha y te muestra las propiedades del objeto seleccionado actualmente en el entorno de trabajo del vb. Una ves seleccionado el botn, busc la propiedad caption y escrib : mostrar formulario 2 3 - Ahora hay que agregar el otro formulario es decir el Form2 a nuestro proyecto. Como en la barra de controles no tienes la opcin de agregar otros formularios, tendrs que agregarlo desde la barra de men >proyecto> Agregar formulario. Te va a aparecer un cuadro de dilogo y eliges la opcin formulario. Como pods ver se ha agregado otro formulario llamado form2, y la ventana del explorador de proyectos ahora contiene 2 formularios.
4 - Ahora tenemos que introducir el cdigo en el command1 que insertamos en el Form1, para que cuando ejecutemos el programa , al presionar el Command1 nos muestre el form2 que agregamos anteriormente. Para esto tens que volver a ir al Form1, haciendo un click en la ventana de explorador de proyectos (la imagen de arriba) y seleccion el form1. 5 - Para ingresar el cdigo al botn, hac doble click en el mismo e ingres la siguiente instruccin de cdigo: Form2.show. La rutina de cdigo del botn command1 te quedara algo parecido a esto:
Nota: Como seguro te diste cuenta, cuando escribs Form2 y presionas el punto ".", visual basic te muestra una lista con todas las propiedades y mtodos que tiene form2, y as ocurre con todos los objetos que tienen propiedades y mtodos. En este caso el mtodo show mostrar el Form2 en pantalla, es decir el mtodo Show lo que hace es cargar en la memoria un formulario y automticamente lo hace visible. 6 - Corre el programa pulsando la tecla F5 para ver como funciona. Para terminarlo pulsa el cono con la imagen de un cuadrado azul desde la barra de herramientas.
El mtodo Hide oculta el formulario pero sigue permaneciendo en la memoria. Para descargarlo completamente de la memoria ram, tendramos que usar el mtodo Unload. Imagen previa del ejemplo:
Pasos a seguir
1 - Crea un nuevo proyecto exe. 2 - Desde la barra de controles agrega 4 command button. 3 - Ahora selecciona el Command1 y en la propiedad caption borrale el "command1" y escribe "Cargar formulario en memoria (Load)". A hora lo mismo pero en el command2 desde la propiedad caption escrib "Mostrar formulario 2 (Show)". En E el n Command3 "Descargar formulario de el Command4 , "Ocultar la memoria formulario (UnLoad)" (Hide)".
4 - Ya terminando, ubic los botones en el formulario de forma similar, como muestra la imagen anterior. Para mover los botones o cualquier otro objeto dentro de un formulario, solo tens que seleccionar el objeto que quieras, mantener presionado el botn izquierdo del mouse y soltarlo en el lugar que quieras. lo mismo pasa con el tamao de los controles, cuando los seleccionas pods cambiarle el tamao. 5 - Ahora vamos a escribir el cdigo para los botones. Por si ya te olvidaste lo que bamos a hacer, lo que harn estos botones son: El Command1 Cargar en la memoria mediante Load el Formulario pero no lo hace visible. El Command2 hace las 2 cosas al mismo tiempo, es decir lo carga y lo hace visible. El Command3 Descarga completamente el Formulario de memoria
El Command4, mediante Hide lo oculta, aunque est oculto sigue permaneciendo cargado. En el Command1 entonces , hac doble click en dicho botn y tipea: Load Form2 . Para el Command2 que mostrar el Form2: Form2.show. El botn Command3: Unload form2 El Command4: Form2.hide . 6 - El ltimo paso que nos queda para poder correr nuestro programa es ingresar un nuevo formulario, entonces desde el men proyecto eliges la opcin agregar formulario y agregas uno nuevo al proyecto. Ahora puls F5 y prueba el programa. Nota : seguro que te preguntars para que sirve el mtodo Load, si para que aparezca en pantalla el Form2 tengo que usar la instruccinshow. Supongamos que tenemos un programa con varios formularios y que estos tienen muchos controles y es medio "pesado" (me refiero en bytes), entonces a veces conviene cargar dichos formularios en la memoria, para que cuando necesitamos llamarlos o mostrarlos en pantalla, estos se muestren de forma mas rpida. Esta es una de las posibilidades del uso no es la nica.
'Carga Private Load End 'Carga Private Form2.Show End 'Descarga Private Unload End 'lo oculta Private Form2.Hide End Sub
el
form2 Sub
pero
no
muestra Sub
completamente Sub
de
la
memoria
pero
no
descarga Sub
el
Form2
de la memoria command4_click()
Para colocar comentarios en nuestros programas, se antepone la comilla simple o la palabra Rem (esta ltima prcticamente no se utiliza). Es fundamental escribir comentarios sobre los bloques de cdigo que componen las distintas partes del programa, para que cuando echemos una mirada al cdigo sepamos de que se trata. Estos comentario o lneas descriptivas no se ejecutan y no influye en nada a la ejecucin de los procedimientos, solo es informacin que ayuda a entender cada lnea o seccin de un bloque de cdigo.
En esta seccin se describen las variables, constantes, tipos de datos, operadores y estructuras de control
y y y y y y
1 - Introduccin 2 - Las Variables 3 - Los diferentes tipos de datos 4 - Las constantes 5 - Las Estructuras de control 6 - Los Operadores
1 - Introduccin
Todos los lenguajes utilizan este sistema o metodologa para la programacin de aplicaciones, pero varan la forma en que se utilizan, su sintaxis etc... Cuando uno recin empieza a programar, parece muy complicado entender estos temas, pero con la prctica todo se va aclarando. Lo bueno de comprender los fundamentos de la programacin, es que nos permite luego poder programar en casi cualquier lenguaje, por que la forma de programar en general no vara demasiado, lo que cambia en cada uno de ellos es su sintaxis y funciones y cosas propias del lenguaje. Aunque tampoco es tan as, ya que esto no significa que por que uno sea experto por ejemplo programando en lenguaje C, lo sea en Visual Basic y Viceversa.
2 - Las Variables
Las variables, como su nombre lo indica, se utilizan para almacenar valores que tienen la propiedad de variar el contenido. Cuando hablamos de contenido nos referimos a cualquier tipo de datos, por ejemplo un nombre, una fecha, un color, un nmero etc... . A las variables se les asigna un nombre para poder utilizarlas. Por ejemplo puedo crear una variable llamada fecha y esta almacenar una fecha. A los nombres de las variables se los denomina identificadores. Cuando creamos variables, tenemos que tratar de asignarles un nombre que se relacione con el tipo de dato que queremos almacenar. Por ejemplo no tendra mucho sentido crear una variable llamada m y all guardar o almacenar un nombre o un apellido, por que cuando echemos vista al cdigo resultara mas difcil deducir que tipo de dato estoy guardando. Por ejemplo en este ltimo caso sera mucho mas lgico crear una variable llamada nombres y all guardar "Luciano", "Pedro", "Natalia" etc.. En visual basic a las variables conviene declararlas, o sea, avisarle a vb que vamos a utilizar dichas variables. A estas se las declara en el comienzo del cdigo y se les antepone la palabra reservada Dim, luego el nombre que nosotros queramos y seguido el tipo de dato que almacenar, por ejemplo si quiero almacenar en una variable llamada Numero
La palabra Integer le avisa a vsiaual basic que voy a guardar un nmero entero. Despus de declararla le podemos asignar un valor con el operador "=", ejemplo:
numero
As
Integer
Pero hay que tener en cuenta que al declarar una variable, en este caso, de tipo integer, no podramos almacenar en ella una cadena de caracteres como por ejemplo un nombre o cualquier otro tipo de datos que no sea un nmero entero. Si sucedera esto nuestro programa dara un error en tiempo de ejecucin, mostrndonos un feo cartel dicindoos que no coinciden los tipos de datos..
3 - Tipos de datos:
Los tipos de datos, indican el tipo de valor que puede almacenar una variable. Los principales tipos de datos: Nmeros enteros: dentro de los nmeros enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar: Byte: puede almacenar nmeros enteros dentro del rango desde 0 a 255 y Integer: puede almacenar nmeros enteros dentro del rango 32.768 a 32.767 y Long: puede almacenar nmeros enteros dentro del rango 2.147.483.648 hasta 2.147.483.648 . Nmeros decimales: para almacenar nmeros decimales contamos con los siguientes tipos de datos: Single: almacena nmeros decimales en el rango +/- 1e-45 hasta 3e38 y Double: desde +/- 5e-324 hasta 1.8e308
Cadenas de caracteres: las cadenas de caracteres se definen con la palabra String y tienen un rango de hasta 2 billones de caracteres. Tipos de valores lgicos: para almacenar tipos de valores lgicos como verdadero o falso, se utiliza la palabra Boolean y sus 2 posibles valores son True (verdadero) y False (falso). Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de valor, pero ocupan mas memoria. Nota: hay mas tipos de datos, incluso nosotros podemos crear los nuestros.
4 - Constantes:
Las constentes, como las variables, se utilizan para guardar datos y valores para nuestro programa, pero a diferencia de estas ltimas (las variables), el contenido que almacenen no cambia, siempre es constante. A diferencia de las variables que se declaran con la palabra Dim, las Constantes se declaran con la palabra Const. Ejemplo:
Const numero = 53
En la lnea anterior he creado una constante, que la llam numero y va a almacenar un nmero , y este valor, cuando se ejecute mi programa se mantendr invariable.
Un ejemplo:
1 - En la siguiente lnea se declaran 2 tipos de variables de tipo Integer llamadas num1 y num2. Luego se les asigna un valor a cada una y luego las sumamos, y mediante la funcin MsgBox que es una funcin de Visual Basic para mostrar mensajes, mostramos el resultado de esa suma. Coloca un botn (CommandButton) llamado Command1. Hac dobleClick sobre el botn para que se abra la ventana de cdigo de Visual Basic. Dentro del procedimiento Click pega este cdigo:
As As
Integer Integer 10 20
de
las
variables
con
el 30
Al ejecutar el programa, pods ver como se presenta una caja de mensaje con el resultado al sumar las 2 variables num1 y num2 2 - Ahora vamos a declarar y crear 2 variables de tipo String, es decir vamos a almacenar cadenas de caracteres en cada una de ellas. En el ejemplo se crean 2
variables, una llamada nombre y otra apellido. Despus le asignamos un valor, y por ultimo mostramos las variables con un mensaje usando la funcin MsgBox como en el ejemplo anterior. Pero antes hay que aclarar algo importante, las cadenas en visual basic se encierran entre comillas dobles como pods ver en el ejemplo, de lo contrario se va a producir un error.
As As
valor
3 - Ahora un ejemplo que produce un error en tiempo de ejecucin. Creamos 2 variables exactamente igual que en el ejemplo anterior, pero en ves de declarar las variables nombre y apellido como de tipo String lo hacemos como de tipo Integer.
As As valores =
Si probs el ejemplo, visual basic te mostrar un mensaje de error como el siguiente: "no coinciden los tipos de datos":
...ya que las variables estn declaradas como de tipo Integer, y le ests asignando un tipo de dato que no lo acepta. 4 - Un ejemplo que almacena un nmero en una variable de tipo Byte (nmeros de 0 a 255). Primero declaramos la variable y le damos un nombre, por ejemplo si queremos almacenar el nmero 88 hacemos por ejemplo as.
Edad = 88
Para mostrar el valor de la variable Edad en un control TextBox cuando presionamos un botn Command1, sera de esta manera:
Sub la Edad As
'Le asignamos un valor que no sea inferior a 0 ni mayor a 255 Edad = 88 'Lo mostramos Text1 End Sub en el = control llamado Text1 Edad
Si probaras cambiando el valor 88 por ejemplo a 300, ocurrira lo mismo que en el ejemplo anterior, es decir un Error 13 en tiempo de ejecucin "No coinciden los tipos de datos"
5 - Estructuras de control:
Las estructuras de control se utilizan para controlar el flujo del programa en una rutina o funcin. Mediante ellas podemos controlar, mediante una condicin, que se ejecute una determinada lnea o bloque de lneas de cdigo .. o que no se ejecuten.
Esta estructura permite mediante una condicin, que se ejecute o no se ejecute determinada tarea o lnea de cdigo. Por ejemplo supongamos que tenemos en un formulario un control Label con la propiedad Caption con el valor 50
= tiene tiene un un
de de
Esto traducido al espaol significara lo siguiente: Si (If) la propiedad caption del label1 que tengo en el formulario es igual (=) a "50" entonces (Then) que muestre un determinado mensaje, si no (Else) que muestre el otro mensaje. En conclusin lo que hace esta estructura es evaluar una condicin, si se cumple, que se ejecute determinada tarea. si no se cumple, se ejecutar las lneas de cdigo que estn bajo la clusula Else. Luego tenemos que cerrar la estructura con la palabra end if. Tenemos que aclarar que no es obligatorio usar If y else juntos en la misma clusula. Por ejemplo podramos utilizar solo una estructura If sin else. Por ejemplo:
Private Sub Command1_Click() 'Si la propiedad caption del Label1 es "Hola" entonces se termina el programa If Label1.Caption = "Hola" Then End End 'Si no, se prosigue con esta If lnea
MsgBox "No se ejecut el bloque If Anterior porque el Caption del control Label1 no era Hola" End Sub
Coloca un Label1 y un Command1. En la propiedad caption del Label1 escribe "Hola". Al ejecutar el programa y presionar el Command1, se termina el programa con la sentencia End de Visual Basic (End sirve para finalizar completamente la ejecucin de nuestro programa). En cambio si ahora le cambia el caption al Label1 y volvs a ejecutar el proyecto, pods ver que la instruccin End no se ejecuta, si
no que la pasa por alto y sigue con las restantes lneas, en este caso ejecuta la funcin MsgBox con el mensaje.
Estructura While - Wend Esta estructura de control repetir sin detenerse un determinado cdigo mientras se cumpla una condicin. Por ejemplo supongamos que tenemos una variable llamada x que tiene un valor de 100.
ejecutan
todas
x las
lneas
de
= cdigo
que
estn
100 aqu
Esto traducido al espaol significara lo siguiente: Mientras (While) la variable x sea igual a 100, y no cambie su valor, se formar un bucle interminable, hasta que x cambie a cualquier otro valor disto de 100. Si x cambia el valor, por ejemplo a 234 saldra del bucle While - wend y seguira ejecutando el resto del cdigo, si es que hay mas cdigo o instrucciones a ejecutar. Un ejemplo, agrega un Command1 al formulario y un control Text1. Cuando ejecutemos el ejemplo, se deber escribir un nmero dentro del control textBox. Entonces se crear un bucle While, que mostrar en el Caption del formulario, es decir en la barra de ttulo, el intervalo desde 0 hasta el nmero que hayamos ingresado en el Text1. Es decir si ingresamos el nmero 9000, en el caption del formulario se imprimirn los nmero desde 0 hasta 9000. Para hacer esto, dentro del bucle While pondremos una variable llamada Contador, que en cada pasada se incrementar en 1, pero cuando la variable Contador sea igual al nmero que haya en el Text1, se finalizar el bucle y se mostrar un mensaje que finaliz el mismo
As
Sub Integer
'Declaramos <>
la
variable contador
"Termin
el
bucle"
End Sub
Estructura For - next La estructura es utilizada para generar una repeticin de instrucciones o bucle, pero no evala una condicin como en el caso del bucle While, si no que lo hace entre un nmero inicial y un nmero final que le debemos indicar al mismo. Por ejemplo, tenemos un formulario con un Label1 y declaramos una variable de tipo integer llamada "contador" como en el caso anterior
Esto traducido significara lo siguiente: Primero, tenemos una variable llamada "contador". Mediante el bucle For - next podemos controlar la cantidad de veces que queremos repetir un determinado proceso o instruccin. Esta posee un principio y un fin, en este caso el principio sera 0 y el fin 1000, de manera que la variable contador se incrementar en 1 hasta que llegue a 1000, y repetir 1000 veces todas las instrucciones que estn bajo la clusula For-next. En este caso nuestro control Label1 mostrara el contenido de la variable contador Para ver en forma detallada y paso a paso esto, pongamos un ejemplo que lo que hace es repetir 10 veces (desde el 1 hasta el 10 en el intervalo del bucle For) y mostrar un mensaje con el valor de la variable Contador. Una ves que llegue a 10, terminar. Coloc un Command1. Doble Click en el botn para escribir procedimiento que se ejecutar cuando lo presionemos. El cdigo: dentro del
Estructura Select case La estructura Select Case se suele utilizar para evitar el uso de muchas clusulas If y de esta manera no tener que anidarlas. La clasula Select evala una condicin y las clusulas case contienen valores, si el valor que contiene la clusula case es igual a la condicin que se evalu, ejecutar las instrucciones en dicha clusula.
Dim Nombre Select Case MsgBox Case MsgBox Case MsgBox End Select "Se "Se "Se
Nombre = Case
As
ejecut ejecut
la la
clusula clusula
case: case:
" "
& &
Esta estructura es muy prctica. En el ejemplo anterior, la clusula Select case contiene como condicin el valor de la variable llamada Nombre. Esa Variable toma el valor que tenga un control Text1, entonces buscar en todas las clusulas case, y si encuentra una igual a la condicin, ejecutar solo las instrucciones de la clusula case que tenga el mismo valor, por ejemplo si ingresara el nombre "Martn" no se ejecutar ninguna clusula Case. En cambio si ingreso "Jorge" se ejecutar solo las instrucciones que estn en la seccin Case "Jorge" y asi... En el caso anterior solo hemos colocado un valor para cada Case. Si quisieramos colocar mas valores podramos hacerlo de esta forma:
Form_Load() Integer a x x
Case MsgBox 'Se Case 'Esto Case 'Esto End End Sub
"Se
ejecut el ejecuta no
case
5, que 15,
tiene esta
el
se 25,
es decir que podemos listar los valores en los Case separados por comas. En el caso anterior se ejecutar el case 5, 10 ya que la variable x vale 10
Operadores aritmticos Estos operadores nos permiten trabajar con clculos matemticos como la suma (+), resta (-), divisin (/) y multiplicacin (*). Ejemplos:
5 15
ganancia = 500 perdida = 200 total = ganancia - perdida 'la variable total pasara a valer 300 x y z = x / y ' La Variable z vale 5 x y = = 100 20 = = 100 20
Operadores lgicos Se utilizan en expresiones para devolver resultados del tipo True o False, es decir Verdadero o falso. Los mas comunes son el operador And y el operador Or Ejemplos:
If
(x
10)
And cdigo
(nombre dentro de
= este es
Then si la
variable
nombre
mara
Or
(nombre
"pedro")
Then
'el cdigo se ejecutar si por lo menos una variable es correcta 'es decir si por lo menos se cumple una condicin End If
Operadores de comparacin Los operadores de comparacin se utilizan para comparar expresiones de cualquier tipo. Los mas importantes son: El operador de igualdad (=), menor que (<), mayor que (>), distinto a(<>) Ejemplos:
If 'si 'se el
"06/08/1978"
End If if x > 6 then 'si la variable x es mayor que 6 se ejecutar el cdigo que este aqu end if
If pas <> "Estados unidos" Then 'si la variable pas es distinta a "Estados unidos" se ejecutar el cdigo End If While 'mientras 'el Wend la variable c c sea menor bucle o <= igual a 87 se 87 ejecutar While
Por ltimo quedara por ver el operador de concatenacin (&) que se utiliza para unir cadenas de caracteres. Por ejemplo:
= = nombre &
'La variable nombrecompleto pasara a contener la unin de las otras dos variables 'es decir Jose Peralta
En esta cuarta seccin del tutorial bsico se ven las subrutinas de cdigo, procedimientos y funciones
1 - Subrutinas y procedimientos 1.2 - Pasar parmetros a los procedimientos 1.3 - Pasar parmetros por valor y por referencia ( ByVal y ByRef ) 1.4 - Ejemplo de envo de parmetros por valor ( ByVal ) 1.5 - Ejemplo de envo de parmetros por Referencia ( ByRef ) 2 - Las Funciones en visual basic
y y y y y y
1 - Subrutinas de cdigo
Se denomina subrutina a una porcin de cdigo que tiene como principal funcin ejecutar una determinada tarea. Estas tienen un nombre para poder identificarlas y luego poder llamarlas para poder utilizarlas. Las subrutinas tienen un principio y un fin y estas pueden tener distinto tipo de alcance, o sea pueden ser de tipo privadas o pblicas. En el siguiente ejemplo se muestra una subrutina que crea visual basic automticamente cuando en un formulario insertamos un botn llamado Command1 y desde la ventana de eventos seleccionamos el evento click del mismo
Sub
Command1_Click()
Ahora, si colocamos por ejemplo un control TextBox llamado TextPedidos y hacemos doble click sobre el mismo, se crea el procedimiento por defecto para los TextBox, que es el evento Change
Sub
TextPedidos_Change()
En estos 2 ltimos ejemplos tenemos una subrutina o procedimiento de tipo Privado, esto quiere decir que la podemos utilizar solo en el formulario o mdulo donde est declarada o escrita La palabra sub le sigue el nombre de la rutina que la identifica. En este caso Command1_click() y en el otro ejemplo TxtPedidos_Change(). Si quisiramos que estos procedimientos se puedan llamar desde otro formulario, lo que tendramos que hacer es cambiar el alcance del procedimiento, en ves de Private Sub cambiarlo por Public Sub. si hacemos esto, ese procedimiento de cdigo puede ser utilizado desde cualquier parte del proyecto.
Tambin podemos crear nuestros propios Procedimientos y Subrutinas de cdigo para ejecutar una determinada tarea. Para crear un procedimiento de cdigo se debe escribir la palabra Private sub o Public sub (depende el alcance), seguida del nombre del procedimiento (un nombre que queramos) y los parmetros, si es que le enviaremos parmetros (los parmetros son opcionales). Adems el procedimiento debe ser escrito en un lugar vaco de la ventana de cdigo, es decir nno se puede crear un procedimiento dentro de otro Un ejemplo para crear un procedimiento:
Sub = = =
En este ejemplo creamos un procedimiento muy simple que tendr la funcin especfica de borrar el contenido de 3 controles label. Pero ahora te preguntars como hago para que se ejecute el procedimiento que he creado ?. Muy fcil. Solo debemos escribir el nombre del procedimiento en el lugar donde queremos que se ejecute. Por ejemplo supongamos que tenemos un formulario con 3 controles Label (Label1, Label2 y Label3), Tambin un Commandbutton llamado Command1 y en la ventana de cdigo hemos escrito el procedimiento del ejemplo anterior. Si nosotros queremos llamar al procedimiento, que borrar el contenido de los label cuando hagamos click en el Command1 lo haramos as:
Sub
command1_click()
Al presionar el Command1 visual basic detectara el nombre ProcedimientoBorrar, y automticamente saltara al lugar donde creamos el procedimiento y ejecutara las lneas de cdigo que haya en ese procedimiento.
Tambin podemos llamar a un procedimiento utilizando la palabra Call, que quiere decir llamar, seguida del nombre del procedimiento, pero en este caso si utilizamos call y nuestro procedimiento contiene parmetros, debemos pasarlos entre parntesis ( los parmetros de procedimientos y funciones se explican a continuacin) una vez que se ha terminado de ejecutar las instrucciones que estn dentro del bloque del procedimiento, volvera a la lnea siguiente de donde fue llamado el mismo, y ejecutara todas las lneas restantes de cdigo. En este caso no ejecutara nada mas por que no hemos puesto ninguna otra instruccin debajo de ProcedimientoBorrar. La principal ventaja de crear procedimientos de cdigo es que evita tener que escribir varias veces las mismas instrucciones en un programa, el cdigo se hace mucho mas funcional y entendible, se pueden dividir un problema (una rutina), en varios procedimientos y probarlos independientemente, y adems la posibilidad de enviar parmetros a los procedimientos
En este ejemplo pasamos tres parmetros: El primero es un nombre y es un dato de tipo String y por ende debe ir entre comillas. El segundo es un nmero y el tercero tambin un string. , o sea una cadena de caracteres Pero la cosa no queda ac. Si nosotros vamos a pasar parmetros a un procedimiento, cuando creamos el procedimiento debemos establecer que tipo de parmetros va a recibir el mismo. Ejemplo:
Sub
DatosPersonales(nombre As = = =
As
String,
edad
As
End Sub
siguiendo, el ejemplo anterior creamos un procedimiento con tres parmetros. Cada parmetro se declara como se hace con las variables, o sea que debemos darles un nombre a la variable y definir el tipo de dato ( sin utilizar la palabra Dim ) que recibir cuando las llamemos. Ahora podramos por ejemplo, en el evento click de un Command1, llamar al procedimiento y pasarle los parmetros. Coloca un Command1 , 3 controles Label, copia en la ventana de cdigo el procedimiento anterior llamado DatosPersonales, y ahora pega el siguiente cdigo
Al presionar el botn se llamar al procedimiento que habamos creado anteriormente, y le pasar los valores de los parmetros en el orden en que estn establecidos declarados en el procedimiento. Esto quiere decir que el primer parmetro con el valor "Luciano" se almacenar o asignar a la variable nombre , el valor 25 se le asignar a la variable edad y el ltimo valor a la variable ciudad. Despus que las variables ya cargaron el valor las podemos utilizar dentro del procedimiento, como en el ejemplo anterior que le asignamos a un control Label1 el contenido de la variable nombre, al Label2 el contenido de edad y al Label3 el contenido de la variable ciudad. Es muy importante respetar el orden en que pasamos los parmetros en un procedimiento, por que por ejemplo en el caso anterior si hubisemos pasado los parmetros de esta forma:
el segundo parmetro "Luciano" se almacenara en la variable Edad que es de tipo Integer y se producira un error en tiempo de ejecucin por no coincidir los tipos de datos, ya que la variable espera un valor numrico de tipo Integer y nosotros le estamos pasando una cadena de caracteres, un dato de tipo String Otra cosa importante es que cuando creamos, por ejemplo un procedimiento que va a recibir 2 parmetros, cuando lo llamemos, no podemos enviarle solo 1 parmetro,
debemos obligatoriamente pasarle los 2 parmetros que hubisemos declarado en el mismo. Un ejemplo que dara un error en tiempo de ejecucin por no pasar adecuadamente los parmetros sera:
Sub
sumar(a =
As
Integer, a
b +
As
Integer) b
hasta aqu creamos un procedimiento llamado sumar que recibir 2 parmetros de tipo Integer, si nosotros llamamos al procedimiento y le pasamos un solo valor, por ejemplo:
Esto dara un error de compilacin por que el procedimiento espera recibir 2 parmetros ..y nosotros le estamos pasando o enviando solo uno de ellos. Precisamente el cartel de error que te mostrara visual basic sera el siguiente:
Nota: hay una sentencia llamada Optional que SI permite pasar parmetros de forma opcional, por ejemplo:
Private Sub Con_Parametro_Opcional(Nombre As String, _ Optional Email As String) MsgBox Nombre MsgBox Email
End Sub
Ahora si llamas a la rutina anterior, y omites el parmetro Email, esta no dar error, por ejemplo:
Call Con_Parametro_Opcional("Maria")
Nota: Los parmetros opcionales, si o si deben estar declarados al final de la lista de parmetros, por ejemplo esto no se puede hacer:
Funcin IsMissing
Esta funcin se utiliza cuando utilizamos parmetros opcionales en una funcin o procedimiento, y nosotros, dentro del mismo queremos saber y averiguar si se han enviado los parmetros opcionales El uso de IsMissing muy simple. Esta funcin retorna el valor True si NO se ha enviado el parmetro que queremos comprobar, y devuelve False si el parmetro ha sido enviado: por ejemplo , colocar dos CommandButton
Private Sub Mostrar_Dato(Optional Nombre As Variant) ' Si IsMissing devuelve Verdadero, es por que no se env If IsMissing(Nombre) = True Then MsgBox vbInformation Else " NO Se ha enviado el parmetro NOMBRE ",
End Sub 'Ac No se enva el parmetro Private Sub Command1_Click() Mostrar_Dato End Sub 'Ac Si se enva el parmetro Private Sub Command2_Click() Mostrar_Dato "Mara" End Sub
Cdigo de ejemplo
'Se enva la variable por Valor ( ByVal ) Call Sumar(Un_Valor) 'Muestra el valor que es 100, ( no se modific en la funcin Sumar ) MsgBox Un_Valor
End Sub Sub Sumar(ByVal Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub
En el ejemplo anterior hay una Sub llamada Sumar que recibe como parmetro una variable enviada por valor con ByVal ( es decir es una copia de la variable original ). al presionar el Commmand1. Al entrar en la Sub Sumar, el dato se modifica ( Valor = Valor + 100). Cuando finaliza el procedimiento Sumar y retorna a la lnea siguiente de la llamada a la Sub sumar, muestra mediante un MsgBox el valor de la misma, en este caso es 100, y NO 200 que es el cambio que tuvo dentro del procedimiento Sumar ( Valor = Valor + 100 ). Con esto queda visto que en realidad al enviarla como ByVal, se enva una copia de la variable original y cualquier cambio que se produzca, ser solo en el mbito del procedimiento o funcin
'Se enva la variable por Referencia ( ByRef ) con el valor 100 Call Sumar(Un_Valor) 'Muestra el valor que ahora es 200, ( ya que se modific en la Sub Sumar) MsgBox Un_Valor
End Sub Sub Sumar(ByRef Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub
Al probar el cdigo, ahora el Msgox al mostrar el valor de la variable, es de 200, y NO de 100 como en el ejemplo de ByVal. Esto demuestra que al enviar la variable como referencia, si la misma se modifica dentro del procedimiento o funcin, se est modificando la variable REAL, es decir cualquier cambio que se le haga a la misma, se mantendr, ya que se est modificando la variable Real ( no es una copia )
Nota Importante: cuando no se indica a un parmetro de una funcin o Rutina ni ByVal, ni ByRef, se asume que la misma se est enviando como referencia (ByRef). Es decir lo siguiente recibe el parmetro como Referencia
Las funciones son casi exactamente iguales que los procedimientos con respecto a la forma en que se los llama y se los crea o declara en el cdigo, en como se le pasa los parmetros etc.. La diferencia fundamental con respecto a los procedimientos o subrutinas es que estos, luego de ejecutar el cdigo que tengan en su interior, al final retornan un valor, y este valor luego lo podemos utilizar para una determinada tarea. En cambio los procedimientos, solo ejecutan el cdigo que contienen y luego mueren por decirlo de alguna manera.
Private Function Total(Valor1 As Integer, Valor2 As Integer) As Long Total End Function = Valor1 + Valor2
Seguramente notaste que declaramos la funcin llamada Total, y al final de los parmetros dice As Long , esto es por que como dijimos las funciones retornan o devuelven un valor, o sea que en este caso la funcin es de tipo Long, o mejor dicho devolver un valor de tipo Long., y luego ese valor devuelto lo podemos utilizar en otra parte del programa. Las Funciones pueden retornar casi cualquier tipo de datos, como nmeros, cadenas, fechas, arreglos y vectores
En este caso el control Label1 llamara a la funcin Total , la funcin realizara la suma de los valores pasados como parmetros y por ltimo el valor final de la suma se lo asignara al control label1. Nota : En el siguiente link , hay un ejemplo de una funcin que retorna un array de
tipo string
En esta quinta parte del tutorial de Visual Basic se describen las funciones propias del lenguaje que permiten trabajar con cadenas de caracteres, con nmeros, fechas, horas, presentar mensajes en pantalla y muchas otras funciones para formatar datos especficos.
Contenido
1 - Funciones para el tratamiento de cadenas 1.1 - Funcin Lcase y Ucase
y y
y y y y y y y y y y y y y y y y
1.2 - Funcin Trim, LTrim y RTrim 1.3 - Funcin Len 1.4 - Funcin Asc y Chr 1.5 - Funcin InsTr 1.6 - Funcin Left, Right y Mid 1.7 - Funcin Str y Val 2 - Funciones para el tratamiento de nmeros 2.1 - Funcin Round 2.2 - Rnd y Randomize - Nmeros aleatorios 2.3 - Otras funciones 3 - Funciones de formato 4 - Funciones de formato para fechas y hora 4.1 - Funciones para calcular fechas 4.2 - Funciones para obtener la fecha y hora de la PC 6 - Funciones para presentar mensajes - InputBox y MSgbox 7 - Ejemplos
Ejemplo:
cadena = =
As "HOLA
La funcin Ucase funciona de la misma manera que Lcase pero convierte el contenido de una cadena a maysculas. Por ejemplo, si tenemos un control Label1 que contiene un texto que dice: "Porcentaje de sueldos", escribiendo la siguiente lnea:
Label1 = UCase(Label1)
El control Label1 pasara a mostrar o mejor dicho contener en su propiedad caption:"PORCENTAJE DE SUELDOS".
ciudad = LTrim(ciudad)
Si en un TextBox quisieramos borrar todos los espacios vacos de la parte derecha de la cadena:
MiText = RTrim(MiText)
La Funcin Trim elimina todos los espacios vacos de ambos lados de la cadena. Ejemplo:
"
Argentina
"
Como la funcin Len devuelve un nmero debemos asignar ese nmero devuelto en una variable de tipo numrica. Ejemplo:
As
Llamo
TamanoCadena = Len(MiCadena)
El valor de la variable TamanoCadena pasara a valer 18. Hay que tener en cuenta que la funcin Len tambin toma en cuenta los espacios vacos.
Si queremos obtener el cdigo ASCII del caracter "a", que es el nmero 97 podramos hacer lo siguiente:
num
As
Integer
En definitiva la funcin Asc lleva un solo parmetro de tipo String del cual queremos obtener dicho nmero. La Funcin Chr acta a la inversa de la funcin Asc, esto quiere decir, que a partir de un determinado nmero nos devolver el caracter ASCII. Obviamente que en vez de pasarle a la funcin un parmetro String es decir la letra, debemos pasarle un nmero ASCII y nos devolver el carcter asociado. Ejemplo:
letra
As
String
Como esta funcin devuelve un nmero debemos almacenarla en una variable de tipo numrica para utilizarla. Ejemplo:
Dim
posicion
As
Integer
En este ejemplo la funcin encontr la cadena "mate" en la posicin 15, o sea que la variable posicin pasa a valer 15. Si observamos bien, la funcin en el primer parmetro, denominado comienzo, nos pide que le digamos desde que posicin comenzar a buscar. En nuestro ejemplo, este parmetro lo obviamos, esto quiere decir que comenzar desde la posicin 0 de la cadena a buscar. Pero podramos especificar una posicin en particular, por ejemplo desde la 5 , 10 etc..., segn lo que necesitemos hacer.
Otro ejemplo de InsTr : Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos opciones, un botn para buscar la primera frase, y otro que sigue buscando a partir de donde est ubicda la seleccin. Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresar la frase y otro TextBox llamado Text1 que tendr el texto. Este ultimo con la propiedad Multiline en True. Tambin colocar dos CommandButton: Command1 y Command2
Sub buscar_cadena(ByVal Posicion As Integer) Dim p As Integer, Frase As String Frase = txt_Buscar p = InStr(Posicion, Text1, Frase) If p > 0 Then m_Pos = p With Text1 .SelStart = m_Pos - 1 .SelLength = Len(Frase) .SetFocus End With Else MsgBox "No se encontr la frase", vbInformation Text1.SetFocus End If End Sub Private Sub Command1_Click() 'Busca a pratir de la primera pocicin Call buscar_cadena(1) End Sub Private Sub Command2_Click() 'Busca a partir del valor que tenga m_Pos Call buscar_cadena(m_Pos + 1) End Sub Private Sub Form_Load() Command1.Caption = "Buscar"
Nota: tambin hay una funcin similar a Instr llamada InstrRev , y lo que hace es devolver la posicin de la primera concurrencia de una cadena dentro de otra cadena, pero comenzando por el extremo derecho de la misma En este enlace hay un ejemplo que usa la funcin instrRev
Extraer de un path o ruta, solo la extensin del archivo
Estas funciones son utilizadas para extraer partes de una cadena. La funcin Left: tiene 2 parmetros: El primero es la cadena de la cual se extraern caracteres, y el segundo un nmero desde el cual comenzar a extraer caracteres desde la parte izquierda. Ejemplo:
Dim Cadena =
Cadena Left("Ya es la
As madrugada",
String 9)
Funcin Right: Es igual que la funcin Left pero comienza a extraer caracteres desde el lado derecho de la cadena. La funcin Mid: Tiene la misma funcin que las anteriores pero posee tres parmetros. Su sintaxis es:
El parmetro cadena es la cadena a extraer caracteres. El parmetro Inicio es donde comenzar y el parmetro longitud, es la cantidad de caracteres a extraer de la cadena de caracteres Ejemplos:
Dim nombre
nombre Mid("River
perdi
As la
copa",
7,
String 6)
Este Otro ejemplo usa la funcin Mid para realizar un simple efecto tipo mquina de escribir. Colocar en un formulario un CommandButton y el siguiente cdigo fuente en el form.
Option Explicit Sub Pausa(Segundos As Double) Dim inicio As Double ' Devuelve la cantidad de segundos desde que inicio windows inicio = Timer Do While (Timer - inicio) < Segundos ' pausa DoEvents Loop End Sub Private Sub Command1_Click() Dim texto As String texto = "... Hola mundo --->>> " Call MostrarTexto(texto, 0.1, Me) End Sub
Private Sub MostrarTexto(Frase As String, _ Segundos As Double, _ Destino As Object) Dim LenFrase As Integer Dim i As Integer Dim Caracter As String Dim texto As String LenFrase = Len(Frase) Do While i <= LenFrase Destino.Cls DoEvents i = i + 1 ' Obtiene el siguiente caracter Caracter = Mid(Frase, i, 1) ' texto actual texto = texto & Caracter Destino.Print texto ' Imprimi e/ dibuja el texto ' pausa o delay Pausa Segundos DoEvents Loop End Sub Private Sub Form_Load() Me.FontSize = 12 Me.Font.Bold = True Me.ForeColor = vbRed Command1.Caption = " Efecto de texto con mid " End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub
La funcin Val convierte una cadena en un nmero yla funcin Str un nmero en una cadena. Ejemplos:
cadena cadena 'Ahora cadena2 cadena2 'Ahora cadena2 vale "123456" cadena
= = vale = =
Dim
Mimumero
As
Minumero = Round(245.8) '(La funcin devuelve Minumero = Round(245.3) '(La funcin devuelve Minumero = Round(245.5) '(La funcin devuelve 245)
Round posee un parmetro opcional por si queremos incluir los dgitos decimales.
Rnd (nmero)
Pero para poder generar dichos nmeros aleatorios, debemos utilizar previamente la funcin Randomize con la siguiente frmula:
LimiteInferior LimiteSuperior = = -
As As
LimiteSuperior
En el ejemplo anterior, se generarn nmeros aleatorios comprendidos entre el 20 y el 40 Nota: en este enlace pods ver un ejemplo que permite generar nmeros
aleatorios no repetidos
Funciones matemticas
Las principales funciones matemticas provistas por Visual Basic son: Abs: Devuelve el valor absoluto de una expresin numrica. Atn: Devuelve el arco tangente de un nmero. Cos: Devuelve el coseno de un ngulo. Exp: Devuelve el nmero "e" elevado a una potencia. Log: Devuelve el logaritmo natural de un nmero. Sgn: Devuelve un valor indicando el signo de un nmero. Sin: Devuelve el seno de un ngulo. Sqr: Devuelve la raz cuadrada de un nmero.
y y y y y y y y
3 - Funciones de formato
Visual Basic posee varias funciones para darle formato a distintos tipos de datos e informacin. A continuacin se ve algunos ejemplos de las principales funciones: FormatCurrency: Esta funcin nmeros con formato se utiliza para trabajar con en dinero. Ejemplo:
si tenemos un nmero 3 y utilizamos la funcin nos devolvera "$3". y FormatPercent: Esta funcin es utilizada para trabajar con porcentajes. Ejemplo :
si tendramos un nmero 321, nos devolvera: "32,1%" . y y FormatDateTime: Esta funcin trabaja con fechas y horas. FormatNumber: Formatea expresiones nmeros
Resultado = FormatPercent(321) 'devuelve: "32.100,00%" Resultado = FormatCurrency(3) 'devuelve: "$3,00" Resultado = FormatDateTime("6-8-1978") 'La funcin devolvera: "06/08/1978"
NumDigitsAfterDecimal: Parmetro de tipo opcional. Este indicar cuantos nmeros decimales devolver la funcin: Ejemplo
Esta funcin, en el primer parmetro se le debe pasar la fecha u hora a formatear, y el segundo parmetro es el tipo de formato, pueden ser 5 tipos. vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime. Este parmetro es de tipo opcional. al colocar la coma dentro de la funcin , visual basic despliega la lista de constanetas mencionadas, como muestra el grfico:
Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco option Button, cada botn de opcin mostrar los diferentes formatos en el caption del formulario, es decir en la barra de ttulo.
Cdigo en el formulario:
Private Sub Form_Load() Option1.Caption = " vbGeneralDate " Option2.Caption = " vbLongDate " Option3.Caption = " vbShortDate " Option4.Caption = " vbLongTime " Option5.Caption = " vbShortTime " End Sub
Private Sub Option1_Click() Me.Caption = FormatDateTime(Now, vbGeneralDate) End Sub Private Sub Option2_Click() Me.Caption = FormatDateTime(Now, vbLongDate) End Sub Private Sub Option3_Click() Me.Caption = FormatDateTime(Now, vbShortDate) End Sub Private Sub Option4_Click() Me.Caption = FormatDateTime(Now, vbLongTime) End Sub Private Sub Option5_Click() Me.Caption = FormatDateTime(Now, vbShortTime) End Sub
FormatNumber - Ejemplos:
Numero = FormatNumber(Numero,
As 2,
Numero
As = FormatNumber(Numero,
Double 1.958754 2)
Funcin Format:
La funcin Format es mas completa que las anteriores funciones, porque puede manejar mas tipos de datos, y no devuelve solo cadenas, esta tambin puede devolver nmeros y fechas. La funcin Format posee dos parmetros:
En el primero debemos colocar cualquier expresin vlida. El segundo es opcional y a continuacin veremos una descripcin de los formatos de VB: GeneralNumber: Devuelve el nmero sin formato. Currency: Devuelve el nmero en formato moneda, con el smbolo "$" y 2 decimales a las derecha. y Fixed: Devuelve como mnimo un dgito a la izquierda y 2 ala derecha del decimal. y y y Standar: Similar a Fixed pero incluye un separador de miles. Percent: Multiplica el nmero por cien y le agrega el smbolo "%" True/False: Devuelve Verdadero para un valor distinto de 0,y Falso para 0. y On/OFF: Devuelve "Activado" para un valor distinto de 0, y "Desactivado" para 0. La forma de pasar el parmetro es entre comillas. Ejemplo:
y y
Nota: Si ingresamos un nmero decimal, debemos utilizar el "." y no la coma "," ya que la coma determina el comienzo de otro parmetro dentro de la funcin y Visual basic dara error de sintaxis
Ejemplos de los principales Formatos con nombre para el manejo de Fechas y Horas:
Dim
cadena "General
As Date") '
String Devuelve:
cadena = Format("19/08/79", "Long Date") ' Devuelve : "Jueves 19 de Agosto de 1979". cadena = Format("19/8/79", "Medium Date") ' Devuelve: "19-Ago-1979" cadena cadena = = Format("17:08", Format("17:08", "Short "Medium Time") Time") ' ' "05:08" PM"
"05:08
Ejemplos El siguiente ejemplo utiliza la funcin DateDiff para mostrar el itervalo entre dos fechas. El intervalo lo muestra en segundos , minutos, dias, semanas meses y aos, como muestra el siguiente grfico
Option Explicit ' recibe las dos fechas como parmetros ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' Private Sub Calcular(Fecha_Inicial As Date, _ Fecha_Final As Date)
Me.Cls Me.Print "Calcular Fecha_Inicial & _ " ") & vbNewLine Intervalos entre las fechas " &
Me.Print Format(DateDiff("s", Formato) & " segundos" Me.Print Format(DateDiff("n", Formato) & " minutos" Me.Print Format(DateDiff("h", Formato) & " horas" Me.Print Format(DateDiff("y", Formato) & " dias" Me.Print Format(DateDiff("WW", Formato) & " semanas" Me.Print Format(DateDiff("m", Formato) & " meses"
Me.Print Format(DateDiff("yyyy", Formato) & " aos" End Sub Private Sub Command1_Click()
Fecha_Inicial,
Fecha_Final),
' le pasa las dos fechas a la funcin Call Calcular("01/01/2000", Date) End Sub Private Sub Form_Load() Me.AutoRedraw = True Command1.Caption = "calcular intervalos " End Sub
' agrega 10 aos a la fecha actual MsgBox DateAdd("yyyy", 10, Date) ' Agrega cinco meses a la fecha actual MsgBox DateAdd("m", 5, Date) ' resta 1 dias a la fecha actual ( usa el signo -) MsgBox DateAdd("y", -1, Date)
Nota: para restar, usar el signo negativo, como se usa en el ltimo ejemplo. Para poder restar y agregar segundos a una hora, usar en el parmetro intervalo la "S", para minutos usar la "n", para horas la "h", para restar y sumar semanas la "ww"
En el siguiente enlace pods ver algunos otros ejemplos que trabajan con dichas funciones
Funciones para trabajar con fechas en visual basic Calcular edad de una persona usando DateDiff Averiguar con Dateserial, el Primer y ltimo da de un mes
'
Cadena Devuelve
el
da del
As sistema en
este
String formato:
Cadena = Time ' Devuelve la hora del sistema en este formato: "17:32:51" 'Funciones Date = para (La establecer fecha la fecha que u hora de la PC:
queremos
establecer)
Visual Basic posee 2 tipos de funciones para presentar mensajes, ellas son MsgBox e InputBox.
Funcin InputBox:
La funcin InputBox presenta un mensaje al usuario, permitindole ingresar un valor en una caja de texto:
Como se dijo la funcin InputBox presenta un cuadro de dilogo donde el usuario puede ingresar un texto y luego aceptar o cancelar dicho cuadro de dilogo. Los parmetros principales de esta funcin son:
El aspecto mas importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea especfica dependiendo del valor devuelto. Ejemplo:
Dim
retorno
As
String
retorno = InputBox("Ingrese algo en la caja de texto", "Ejemplo") MsgBox "Usted ingres:" & retorno
En el ejemplo anterior, en la variable Retorno se almacenar el valor que haya ingresado el usuario cuando haga Click en el botn de Aceptar. Cuando el usuario presiona Candelar, el InputBox devuelve una cadena vaca. Esto es importante tenerlo en cuenta para realizar una o tal accin Si quiseramos por ejemplo desplegar un InputBox, y que este no se cierre hasta que el usuario si o si haya ingresado un valor, podemos hacerlo de la siguiente forma, utilizando una condicin en un bucle Do Loop
Private Sub Form_Load() Dim Dato As String ' Hasta que no se ingrese un dato, _ el InputBox no se cerrar Do Dato = InputBox("Ingresar algun dato", " Ejemplo ") Loop Until Dato <> "" 'Muestra el valor MsgBox Dato, vbInformation End Sub
Enlace relacionado :
InputBox con PasswordChar
Funcin MsgBox:
La funcin MsgBox, que ya se vi varias veces en distintos ejemplos, es muy fcil de usar y se utiliza para mostrar distintos tipos de mensajes. Ejemplos de mensajes o cajas de texto con la funcin MsgBox que podemos mostrar:
Como se ve en los grficos anteriores, con MsgBox podemos tener variedad a la hora de mostrar un determinado mensaje, utilizando para ello las diferentes constantes que incorpora la funcin. Los parmetros mas importantes son: Title : Es la leyenda que aparecer en el ttulo del mensaje. Texto : Es el Texto que mostrar el mensaje. Botones: En este parmetro se colocan las constantes que determinarn si la caja tiene uno o varios botones y el tipo de mensaje: informativo, de exclamacin de alerta etc... Cuando escribimos la coma dentro de la funcin en el parmetro botones, Visual Basic despliega una lista con las opciones o constantes que podemos utilizar.
y y y
1.3 - Arreglos y estructuras (UDT) 2 - Matrices 2.1 - Ejemplo de matriz de 2 dimensiones 3 - Arreglos y vectores dinmicos 3.1 - Ejemplo para crear un Vector dinmico 4 - Funciones de VB para trabajar con Arreglos - LBound y UBound 4.1 - Ejemplos de Lbound y Ubound 4.2 - Funcin Join, Split y Filter 5 - Los arreglos de controles 5.1 - Ejemplo para crear un arreglo de controles 5.2 - Pasar arreglo de controles como parmetro a un procedimento
1 - Arreglos y vectores
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo de dato, y todas estas bajo un mismo nombre. Por ejemplo imaginemos que tenemos 20 variables de tipo String que almacenan nombres (nombre1, nombre2, etc..). si yo ahora quisiera pasar todas estas cadenas a minsculas tendra que utilizar la funcin Lcase con cada variable: nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2), etc.. En cambio si utilizara un arreglo solucionara mi problema solo a esto
Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada variable, hemos utilizado un arreglo llamado nombres con un nmero de ndice 30 , es decir que almacena 30 datos de tipo String
Como podemos ver en el primer ejemplo hemos declarado un arreglo llamado miArreglo y entre parntesis hemos declarado el rango de capacidad del mismo, es decir la cantidad de datos que podr contener El primer nmero , el 1 , indica el lmite inferior del mismo, y el nmero 15 indica el lmite mximo del arreglo, conformando de esta manera un arreglo que podr almacenar 15 datos de tipo string. En el segundo ejemplo, declaramos un arreglo de 11 elementos de tipo string. Como pods ver hemos indicado solo un nmero que representa el valor mximo del mismo. Cabe aclarar que hemos puesto de ndice el nmero 10, pero en realidad el arreglo contiene 11 elementos ya que cuando NO indicamos el limite inferior , se asume que el mismo comienza desde el 0. Importante: los arreglos se dividen en 2 grupos, los vectores y las matrices. Los vectores son arreglos que contienen una sola dimensin y las matrices 2 o mas dimensiones.
Dim
alumnos(1
To = = =
4)
As
Primero declaramos un arreglo llamado alumnos, de tipo string y que contendr 4 elementos. Luego le asignamos un valor de cadena como a cualquier otra variable de tipo string, pero con la diferencia que para referirnos al elemento utilizamos el n de ndice del mismo. Otro ejemplo
Dim paises(2) As String ' Llena el vector con datos paises(0) = "Argentina" paises(1) = "Per" paises(2) = "Brasil" ' Recorre los elementos del vector For x = 0 To 2 MsgBox "Nombre del pas : " & paises(x) Next x
En este ltimo ejemplo, declaramos y creamos un vector de 3 elementos que contendr el nombre de 3 pases. Luego en un bucle For utilizamos la funcin MsgBox para mostrar los elementos del arreglo, pasndole como parmetro del ndice la variable x del bucle For
Option Explicit
' Estructura de dato para el vector Private Type agenda nombre As String apellido As String cpostal As Integer End Type ' Declaramos el vector Dim personas(1 To 3) As agenda
' Llenamos con datos para el elemento 1 del arreglo personas(1).nombre = "carlos" personas(1).apellido = "Martnez" personas(1).cpostal = 1900 ' Llenamos con datos para el elemento 2 del arreglo personas(2).nombre = "Hctor" personas(2).apellido = "rosales" personas(2).cpostal = 1898 ' Llenamos con datos para el elemento 3 del arreglo personas(3).nombre = "Albert" personas(3).apellido = "Einstein" personas(3).cpostal = 1324 End Sub
Para utilizar una estructura definida por nosotros en vectores o matrices, se hace de la forma habitual, con la diferencia que debemos declarar el arreglo utilizando el tipo de dato Type que hayamos creado, en este caso Dim personas(1 to 3) as agenda
2 - Las matrices
Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensin (2 o mas), a diferencia de los vectores que poseen una sola dimensin. Podemos imaginar una matriz bidimensional ( 2 dimensiones) , como una cuadrcula con filas y columnas, donde las filas representaran las coordenadas x y las columnas las coordenadas y. A una matriz de 3 dimensiones o tridimensional se la puede imaginar con las coordenadas x, y, z, y esta es ideal para representar figuras en el espacio por ejemplo. Las matrices se declaran en el cdigo de manera igual que los vectores, con la diferencia que debemos indicar mas subndices de acuerdo a la cantidad de dimensiones que posea la matriz. por lo general no se suele utilizar matrices de mas de 3 dimensiones..
Si luego quisiera acceder a los datos de la misma basta con referirnos a los subndices Por ejemplo:
personas personas
(1, (2,
1) 1)
= =
"Natalia" "pedro"
personas (1, personas (1, personas (2, personas (4, personas (6, personas (6, personas (6, 8) = "mariana"
7) 8) 2) 1) 2) 5)
= = = = = =
El total de ndices posibles para almacenar datos o valores en el ejemplo anterior es de 48 datos, ya que si multiplicamos 6 x 8 nos da como total 48 valores posibles para utilizar en la matriz bidimensional.
para acceder a los datos sera exactamente de la misma manera pero debemos utilizar un ndice mas. Ejemplo:
cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo cubo
(1, (1, (1, (1, (1, (1, (1, (1, (1, (2, (2, (2, (2, (2, (2, (2, (2, (2, (3, (3, (3, (3, (3, (3, (3,
1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3
, , , , , , , , , , , , , , , , , , , , , , , , ,
1) 2) 3) 1) 2) 3) 1) 2) 3) 1) 2) 3) 1) 2) 3) 1) 2) 3) 1) 2) 3) 1) 2) 3) 1)
= = = = = = = = = = = = = = = = = = = = = = = = =
50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50
2)
50
En el ejemplo anterior, que es un poco extenso, es para que veas todos los posibles valores que puedes almacenar en una matriz de 3 x 3 x 3, y que da como resultado un arreglo de 27 valores posibles.
3 - Vectores dinmicos
Hasta ahora habamos visto solo vectores o arreglos de tamao fijo, pero qu pasa cuando no sabemos el tamao o el largo de un vector y queremos que sea variable ?. Visual basic posee una sentencia o funcin que nos permite cambiar el largo de un vector en tiempo de ejecucin, dndonos as mas flexibilidad, y de esta manera no desperdiciar memoria y recursos de la pc creando vectores mas largos de lo que realmente necesitamos. Esta funcin se llama ReDim y ReDim Preserve , y un ejemplo de como aplicarla sera de la siguiente manera:
En lo siguiente, primero declaramos un vector de la forma como lo hacemos siempre con la diferencia de que en vez de colocar un tamao declaramos el vector solo con los parntesis :
ReDim
alumnos(1
To = = =
4)
As
Ahora para redimensionar el tamao del vector por ejemplo a 7 elementos, utilizamos la funcin ReDim Preserve, para preservar los 4 valores anteriores y le agregamos 3 valores mas:
ReDim
Preserve
alumnos(1 = =
To
7) "Karina" "Ral"
Nota: si utilizamos la sentencia ReDim, o mejor dicho si redimensionamos el vector sin utilizar la sentencia ReDim preserve, los valores que contena el vector anteriormente se perdern Eliminar o vaciar un vector Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:
Erase Nombre_Del_Vector
'Variables Para almacenar los lmites superior e inferior Dim LimiteInferior As Long Dim LimiteSuperior As Long 'Declaramos 3 matrices, de una dimensin, _ de dos dimensiones y de 3
Dim UnVector(1 To 520) As Integer Dim UnaMatriz(20, 5 To 100) As String Dim OtraMatriz(10, 20, 30) As Long ' Devuelve 1 LimiteInferior = LBound(UnVector) ' Devuelve 520 LimiteSuperior = UBound(UnVector) ' Devuelve 0 LimiteInferior = LBound(UnaMatriz, 1) ' Devuelve 20 LimiteSuperior = UBound(UnaMatriz, 1) ' Devuelve 5 LimiteInferior = LBound(UnaMatriz, 2) ' Devuelve 100 LimiteSuperior = UBound(UnaMatriz, 2) ' Devuelve 0 LimiteInferior = LBound(OtraMatriz, 1) ' Devuelve 10 LimiteSuperior = UBound(OtraMatriz, 1) ' Devuelve 0 LimiteInferior = LBound(OtraMatriz, 2) ' Devuelve 20 LimiteSuperior = UBound(OtraMatriz, 2) ' Devuelve 0 LimiteInferior = LBound(OtraMatriz, 3) ' Devuelve 30 LimiteSuperior = UBound(OtraMatriz, 3)
End Sub
Como habrs visto en los ejemplos anteriores, para conocer los limites superiores e inferiores en los vectores, solo se debe pasar como parmetro a las funciones Lbound y Ubound, el nombre del vector con el cual queremos trabajar.
En cambio en las matrices se aade un segundo parmetro en el cual debemos indicar el nmero de la dimensin en la cual queremos recuperar los valores.
Si deseamos recorrer todos los elementos de un vector o una matriz podemos hacerlo mediante un bucle For de la siguiente manera:
Visual basic en su sexta versin incorpora estas 3 funciones para trabajar solo con vectores. Estas funciones estn relacionadas con el tratamiento de las cadenas de caracteres.
Funcin Join Esta funcin se utiliza para unir en una sola variable el conjunto de subcadenas de un vector. Esta funcin tiene solo 2 parmetros y es muy fcil de usar. Ejemplo:
Dim Dim
micadena vector(1 To = =
as 3) As
Nota: En el primer parmetro de la funcin debemos indicar el vector en el cual trabajar, y en el segundo se debe indicar un delimitador de caracter para separar las cadenas. Si no especificamos ninguno, visual basic utilizar por defecto un espacio vaco o en blanco (" ") para separar cada subcadena .
Funcin Split: Esta funcin hace el trabajo inverso de la funcin Join. Split se utiliza para rellenar un vector dinmico que contiene un nmero de subcadenas a partir de una cadena que le pasamos como parmetro a la funcin. Para aclarar un poco un ejemplo
Private Sub Form_Load() 'Una variable para almacenar una cadena Dim Micadena As String 'Vector dinmico Dim Vector() As String 'Le damos un valor a la variable Micadena = "maria/natalia/romina" 'Ejecutamos la funcin Split Vector = Split(Micadena, "/") 'Ahora el vector dinmico pasara a _ contener los siguientes valores: Vector(0) = "mara" Vector(1) = "natalia" Vector(2) = "Romina"
End Sub
Nota: una cosa importante es que en el vector anterior no se ha declarado un rango , ya que la funcin devuelve un vector cuya cantidad de elementos se ignora, es decir no se conoce.
Funcin Filter : La funcin Filter se utiliza para filtrar subcadenas de un vector dependiendo de un determinado criterio de bsqueda. Los parmetros que lleva la funcin son los siguientes: Filter (vector donde buscar, cadena a buscar, valor booleano que indica si incluir o excluir la cadena) Ejemplo:
' Vector Dim Alumnos(1 To 4) As String ' Vector dinmico para almacenar el resultado Dim Resultado() As String Alumnos(1) = "Luciano" Alumnos(2) = "Lucas" Alumnos(3) = "juan" Alumnos(4) = "Natalia" ' Ejecutamos Filter Resultado = Filter(Alumnos, "Lu", True) ' Ahora el vector dinmico "resultado" pasa a contener MsgBox Resultado(0), vbInformation ' Luciano MsgBox Resultado(1), vbInformation ' Lucas
Hasta ac se vi los aspectos de los vectores y matrices como estructuras que nos permiten almacenar datos y resolver problemas lgicos en nuestros programas. Ahora veremos los Arreglos de controles o vectores de controles Un arreglo de controles es un conjunto de controles, todos de la misma clase (todos TextBox, todos Label, etc...) que poseen un mismo nombre y cada uno posee un nmero de ndice que los identifica y los hace nicos con respecto a los dems, y conformando entonces un vector de controles. por ejemplo en vez de tener 3 Command, llamados command1, command2 y command3, puedo crear un arreglo de 3 botones. Estos 3 botones comparten el mismo nombre pero cada botn se distingue del resto por un nmero de ndice, es decir si por ejemplo nuestro botn de comando se llama cmd pasara a tener un cmd(1), un cmd (2) y un cmd(3). En un arreglo de controles todos los controles deben ser del mismo tipo y adems no puede haber un control dentro del arreglo que tenga el mismo nmero de ndice, ya que sera imposible identificarlo en el conjunto, adems VB no lo permitira y nos mostrara un error. Las ventajas principales que tenemos cuando trabajamos con un vector de controles son las siguientes: 1. Todos los controles que forman el arreglo comparten el mismo procedimiento de cdigo, con lo cual si tenemos muchos controles que tienen que ejecutar la misma instruccin no debemos escribir cdigo de ms en cada control. 2. Tener 20 cajas de texto, por ejemplo, consumen mucha mas memoria que utilizar un vector de 20 cajas de texto. 3. Es posible crear controles en tiempo de ejecucin, a partir de un arreglo de controles ya creado. 4. Es mas fcil manipular y establecer las propiedades en un vector de controles refiriendonos al subndice de los mismos.
Nota: cualquier control de visual basic que no tenga un arreglo creado, la propiedad index de los mismos no tendr ningn nmero o valor, ya que esta propiedad est reservada para los controles que formen parte de un vector o arreglo. La otra opcin para crear un arreglo, es ingresar directamente el nmero de ndice en la propiedad index del control del cual queremos crear un arreglo.
Ejemplo:
El ejemplo consiste en crear 10 Arreglos de TextBox y lo que se va a hacer es mediante un bucle poner la propiedad Enabled de los controles en False, es decir los vamos a deshabilitar a todos. Como te dars cuenta, si tuvieses que hacer esto manualmente, es decir deshabilitar cada TextBox individualmente tendras que escribir text1.enabled = False y as para cada uno de los controles. en cambio haciendo un arreglo de controles, recorremos mediante un For todos los controles refiriendonos al ndice y establecindole la propiedad Enabled en False para deshabilitarlos. Create un arreglo de 10 TextBox Para eso coloca un text1 en el formulario. despus copialo y pegalo, vb te va a preguntar si quers hacer un arreglo, decile que si, hasta que tengas 10 o los que quieras. Si te fijs ahora en la ventana de propiedades, cuando seleccionas un textBox en la propiedad index te vas a dar cuenta que poseen un nmero, ese es el ndice que los identifica, y por medio de ese ndice nos vamos a referir en el bucle For El cdigo de este ejemplo bien simple quedara as:
Dim For i
i = =
As 0 To
Integer 9 False
text1(i).Enabled Next
Como pods ver, le pasamos en el parmetro ndice el valor de la variable i para referirnos a ese text1 en particular y asignarle la propiedad Enabled en False
Una tarea habitual es la de poder pasar un arreglo o vector de controles como parmetro a una Sub o function. Por ejemplo supongamos que tenemos un programa que tiene muchos formularios. y varios de esos formularios tienen una funcin que se encarga de limpiar todas los textBox y eliminar el contenido de los mismos Para solucionar esto, y no tener que repetir cdigo, podramos crear en un mdulo de cdigo, una SubRutina para que la puedan utilizar y acceder desde todos los formularios. Para poder pasar un vector como parmetro a una rutina, la variable o argumento en la Subrutina, debe estar declarada como de tipo Object Ejemplo Colocar en un formulario un arreglo de textBox, por ejemplo TextBox1(0), TextBox1(1) y TextBox1(2) Colocar un CommandButton para limpiar el contenido de las cajas de texto
' Recibe el vector como parmetro Sub Limpiar_TextBox(El_TextBox As Object) Dim i As Integer For i = 0 To El_TextBox.Count - 1 El_TextBox(i).Text = vbNullString Next End Sub
->> Contenido
1 - introduccin 2 - Sentencia Open 3 - Archivos secuenciales 4 - Diferentes tipos de acceso ( Append - Input Output ) 5 - Leer datos de un archivo utilizando Line Input 6 - Ejemplo para leer un archivo de texto con Line Input 7 - Leer el contenido de un archivo de texto con la funcin Input 8 - Escribir datos en archivos de texto ( Print y Write ) 9 - Archivos de acceso aleatorios o directos 10 - Grabar datos en archivos de acceso aleatorio ( Instruccin Put )
y y y y y y y y y y
y y y
11 - Leer datos en archivos aleatorios ( instruccin Get ) 12 - Posicionarse en un registro ( Seek ) 13 - Funciones propias de vb para el manejo de ficheros y directorios
y y y y y y y y
14 - Funcin Dir para buscar archivos y carpetas 15 - Funcin FileCopy para copiar 16 - Funcin MkDir para crear directorios 17 - Funcin kill para eliminar 18 - Funcin FileLen 19 - Funcin Name 20 - Funcin GetAttr y SetAttr para atributos 21 - Funcin RmDir para renombrar
1 -introduccin
En esta seccin se ve un repaso bsico de las tres formas de trabajar con diferentes tipos de archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios. Por ltimo en el final de la seccin, se describe como utilizar sentencias y funciones propias de visual basic para trabajar con archivos y directorios del sistema operativo, como por ejemplo la sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para crear carpetas y algunas otras funciones relacionadas.
2 - Sentencia Open
Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo, sobre escribirlos y/o para agregarle datos. Esta sentencia tiene una serie de parmetros que varan de acuerdo a lo que queramos hacer. Por ejemplo :
Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior. cuando decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en la memoria ram para poder manipularlo. En el primer parmetro indicamos el path del archivo en el que queremos trabajar. Luego la palabra "As #1" indica el nmero de archivo que estamos utilizando. Este nmero lo asignamos nosotros y va desde el rango 1 al 511. El "nmero de archivo" se utiliza para poder diferenciar al archivo en el cdigo. Cada archivo que se encuentra abierto no se puede asignar un nmero de archivo igual, ya que nos dara un error en tiempo de ejecucin. Por ejemplo no podramos hacer esto:
Input
As
#1
Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo vamos a utilizar mas, debemos cerrarlo. para ello se utiliza la sentencia Close seguido del nmero de archivo que lo identifica. Por ejemplo:
Close #2
Esto cerrar al archivo abierto que anteriormente le asignamos el nmero de archivo 2. Tambin si tengo 3 archivos abiertos podra hacer lo siguiente:
Si utilizamos la sentencia Close sin ningn parmetro, o mejor dicho ningn nmero de archivo, se cerrarn todos los archivos cargados en memoria por nuestra aplicacin (los que nosotros abrimos con Open). Por lo general, si trabajamos con varios archivos abiertos simultneamente, es aconsejable utilizar la sentencia Close sin ningn parmetro, de este modo cuando termine de ejecutarse el procedimiento se cerrarn todos los archivos abiertos. Hay una funcin en Visual basic llamada FreeFile. Esta funcin lo que hace es darnos un nmero de archivo que est libre y que se pueda usar, para que de este modo no intentamos abrir uno est siendo utilizado, y evitar un error en tiempo de ejecucin. Para usar la funcin es muy fcil, por ejemplo:
Dim NumeroArchivo
NumeroArchivo =
As
Integer FreeFile
3 - Archivos secuenciales
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se
encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los dems datos, de forma secuencial. Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que contengan una estructura de datos no muy compleja. por que por ejemplo, si utilizramos un archivo para almacenar 50000 nombres con sus respectivos datos (apellido, telfono, direccin etc...) , este mecanismo resultara ineficiente, ya que si quisiera recuperar por ejemplo el registro n 3650, para leer este dato tendra que pasar previamente por los 3649 registros anteriores a este, haciendo mas lento el acceso y por lo tanto desperdiciando recursos del sistema.
Append: esta sentencia se utiliza para agregar informacin a un archivo de texto. Ejemplo :
Si el archivo ya contiene datos, se le agregarn al mismo al final del archivo, si no contena datos los agrega igual. Si el archivo no existe, lo crea y le agrega los datos. Input: la sentencia Input se utiliza para leer datos de un archivo de texto, ejemplo:
Este ejemplo abre un archivo para leer los datos del mismo. En las prximas lneas veremos ejemplos de como leer los datos , escribir y guardar. Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo que queremos abrir, no existe, se producir un error en tiempo de ejecucin al intentar abrir un archivo que no existe, por eso debemos verificar la ruta del mismo siempre que est bien escrita en la sentencia Open y evitarnos dolores de cabeza, y simpre aadir algn manejador de error para este caso Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es igual que Append salvo por un gran detalle: Output crea el archivo y le agrega informacin, pero si el archivo exista y contena informacin previa, sobre escribe todos los datos del archivo por los datos nuevos, perdiendo los anteriores datos.
Si accedemos con Output a un archivo que no existe, no se produce un error, si no que se crea dicho archivo. Conclusin : si vamos a aadir datos a un archivo existente (para actualizarlo por ejemplo) hay que utilizar la sentencia Append. si vamos a crear un archivo vaco y nuevo para grabar nuevos datos, hay que utilizar la sentencia Output. si vamos a abrir un archivo para leer datos utilizamos la sentencia Input.
C omo se coment antes , para leer datos de un archivo se utiliza la sentencia Input. pero para leer los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2 sentencias o instrucciones: Line Input e Input. Ejemplo:
As Input As
En el ejemplo anterior aparece una funcin nueva llamada EOF. Esta funcin significa End Of File o fin de archivo. Cuando abrimos un archivo para leer informacin con Input, debemos saber en que momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o Input seguira leyendo lneas donde no existen datos despus del fin del archivo, y por lo tanto se producira un error en tiempo de ejecucin por querer leer un dato que no existe. Mediante la condicin Not Eof(1) leeremos los datos hasta que llegue al final del archivo, y en cada pasada del bucle While se almacenar en la variable mivariable, lnea por lnea los datos del mismo. Es evidente que como est planteado el ejemplo habra que manipular los datos ledos y agregar otras instrucciones, por que en este ejemplo la variable mivariable solo almacenara los datos de la lnea que est leyendo y borrando los datos de las lneas que almacen anteriormente. Mas adelante veremos como solucionar esto.
conclusin : para leer datos de un archivo se utiliza la sentencia Line Input y luego de la coma debemos poner una variable nuestra para almacenar los datos que se van leyendo de la lnea actual
Lo siguiente, lee un archivo de texto lnea por lnea, y carga el contenido en un control ListBox. colocar un control List1, un Command1 y un Text1 para indicar el path del archivo a leer:
Option Explicit
Private Sub Command1_Click() On Error GoTo errSub Dim n_File As Integer Dim Linea As String 'Elimina el contenido del listbox List1.Clear
'Nmero de archivo libre n_File = FreeFile 'Abre el archivo para leer los datos Open text1.Text For Input As n_File 'Recorre linea a linea el mismo y aade las lineas al control List Do While Not EOF(n_File) 'Lee la linea Line Input #n_File, Linea List1.AddItem Linea Loop Exit Sub errSub: 'error MsgBox "Nmero de error: " & Err.Number & vbNewLine & _ "Descripcin del error: " & Err.Description, vbCritical End Sub Private Sub Form_Load() Command1.Caption = " Cargar en Listbox " End Sub
Este otro ejemplo, lo que hace es leer un archivo de texto para contar las lneas del mismo Colocar un command1 en el formulario y pegar el siguiente cdigo fuente
Dim F As Integer Dim Lineas As Long Dim str_Linea As String ' Nmero de archivo libre F = FreeFile ' Abre el archivo de texto Open strTextFile For Input As #F 'Recorre todo el archivo de texto _ linea por linea hasta el final Do 'Lee una lnea Line Input #F, str_Linea ' Incrementa la cantidad de lineas leidas Lineas = Lineas + 1 ' Leer hasta que llegue al fin de archivo Loop While Not EOF(F) ' Cierra el archivo de texto abierto Close #F ' Retorna a la funcin el nmero de lineas del fichero Contar_Lineas = Lineas End Function Private Sub Command1_Click() Dim Path As String Path = InputBox(" Ingrese la ruta de un archivo de texto ", _ " Contar lneas ")
If Path = vbNullString Then Exit Sub MsgBox " Cantidad de lineas: " & Contar_Lineas(Path) End Sub
Luego se asigna a una variable, el contenido que devolver la funcin Input: Contenido = Input(LOF(1), #1) Un ejemplo: Lo siguiente lee el contenido de un archivo txt y lo carga en un textBox multilnea Colocar un TextBox llamado txt_Path ( para especificar la ruta del archivo ). El Textbox que mostrar los datos del fichero, colocarle el nombre txt_Contenido Cdigo en un botn:
'Nmero de archivo libre n_File = FreeFile 'Abre el archivo indicado Open txt_Path For Input As n_File 'Lee todo los datos del archivo y lo almacena en la variable Contenido = Input$(LOF(n_File), #n_File) 'Cierra el archivo abierto Close n_File 'Carga el contenido de la variable en el TextBox txt_Contenido = Contenido Exit Sub Err_Sub: MsgBox Err.Description, vbCritical
Para escribir datos en archivos de texto se utiliza la sentencia Print y Write. Ejemplo:
Dim Dim
nombre edad
As As
String Integer
#1,
"esta
es
una
lnea"
#1,
"esta
es
otra
lnea"
En este ejemplo agregamos datos a un archivo existente llamado miArchivo.txt con la sentencia Print. Primero abrimos el archivo con Open. luego la sentencia Print lleva 2 parmetros. el primero indica el archivo que estamos manipulando (el archivo n1, dentro del cdigo), el segundo parmetro indica los datos que se agregarn en el mismo. En el segundo parmetro podemos poner un dato directamente (una cadena, nmero, etc...),, por ltimo cerramos el archivo.
Escribir datos con la sentencia Write A diferencia de Print, la sentencia Write escribe datos en un archivo separados por comas. Ejemplo:
As
String
"Peres"
nombre = "Carlos" Open App.Path & "\Archivo.txt" For Output As #1 Write #1, nombre, apellido Close #1
Como podemos ver la sentencia Write escribe los datos en el archivo separados por coma. En la primera lnea escribir el contenido de las variables nombre y apellido . Tambin se pueden pasar los datos directamente a Write sin usar variables, por ejemplo:
Nota importante: cuando escribimos datos con la sentencia Print se utiliza la sentencia Line Input para leer los datos del archivo. En cambio cuando escribimos datos separados por comas con la sentencia Write debemos utilizar la sencia Input Para que esta pgina no sea tan extensa, he armado 10 ejercicios que utilizan todo lo visto hasta aqu, o sea el tema relacionado a los archivos secuenciales. Dentro del cdigo se encuentra detallado cada paso y lo pods descargar al final de esta pgina.
Como podemos ver para abrir un archivo de acceso aleatorio se utiliza la palabra Random (aleatorio). Luego debemos indicar el nmero de archivo para identificarlo, y por ltimo una opcin nueva : Len. cada registro en el archivo, que es una estructura de datos Type, tiene que tener una longitud fija. Mediante la funcin Len de visual Basic debemos indicar el tamao de la estructura de datos que vamos a utilizar. para que quede mas claro un ejemplo: Primero definimos una estructura de datos:
t_clientes 20 15 30 Integer
ahora abrimos nuestro archivo, y en el parmetro de la funcin Len le pasamos la variable para que visual basic calcule el tamao de la estructura t_clientes
La estructura de datos debe tener un tamao fijo, no datos variables como en el caso de los archivos secuenciales, de ah que se indicara en el Type en las variables mediante el asterisco en el caso de los String. En cada campo de la estructura de datos debemos indicar el tamao de la variable. En el caso del campo nombre de tipo string le hemos asignado una longitud fija de 20 bytes, en el apellido 15 y en la direccin 30 bytes. La variable o el campo edad que es de tipo integer, no debemos indicar el tamao de la variable, ya que sabemos que un nmero integer ocupa 2 bytes.
En total esta estructura t_clientes tiene una longitud de 67 bytes (30 + 20 + 15 + 2 ). Si no indicramos en la sentencia Open el tamao de la estructura, visual basic, por defecto asumira la estructura de un tamao de 128 bytes, y si nuestra estructura tendra mayor tamao ocurrira un error en tiempo de ejecucin, por lo cual siempre debemos utilizar la funcin len para calcular el tamao de la misma.
As As As
* * *
t_empleados 15 15 30 Integer
= = = "Avenida 9 de julio
Si queremos grabar mas datos, por ejemplo en el registro n 2 del archivo hacemos lo siguiente:
= = "Avenida = 2,
13
como vemos ver la sentencia Put lleva 3 parmetros. El primero indica el numero de archivo abierto en el cual estamos trabajando. en el segundo debemos indicar el nmero de registro en el que se grabarn los datos. Si no ponemos el nmero de registro, los datos se grabarn en el ltimo registro. Por ltimo en el tercer parmetro le pasamos la variable asociada con la estructura de datos.
Para leer los registros o datos de un archivo aleatorio se utiliza la sentencia Get. Esta sentencia es exactamente igual que Put, pero la diferencia es que en vez de grabar los datos los recupera para poder utilizarlos luego en el programa.
Supongamos que tenemos un archivo aleatorio que contiene 452 registros. Ahora queremos recuperar los datos del registro 258. Para posicionarse en un determinado registro hay una sentencia , hay una sentencia llamada Seek. Ejemplo:
#1,
258
si queremos posicionarnos en un registro determinado, pero en vez de leer, queremos grabar datos, hacemos la misma operacin pero con la sentencia Put:
#1,
258
Nota: Desde este enlace pods ver un simple cdigo fuente de una Agenda de
contactos utilizando Archivos Directos - Aleatorios
14 - Funcin Dir
La funcin Dir se utiliza o para buscar archivos y devuelve una cadena que representa el nombre de un archivo o directorio de acuerdo a un determinado patrn de bsqueda. La sintaxis de la funcin es:
En el parmetro ruta debemos indicar el path de un archivo, directorio o unidad. Si el path no existe, la funcin Dir devuelve una cadena vaca. En el parmetro atributos podemos especificar los siguientes: vbnormal : cualquier atributo de archivo. vbreadonly : archivos de solo lectura. vbhidden: archivos ocultos vbsystem : archivos de sistema vbvolume : etiqueta de volumen de una unidad vbdirectory : directorios
y y y y y y Ejemplo:
Archivoabuscar = Dir("c:\autoexec.bat")
Tambin podemos utilizar los comodines * y ? para filtrar bsquedas. En este ejemplo devuelve el primer archivo exe que encuentra, si es que existe.
Archivoabuscar = Dir("c:\windows\*.exe")
El nico inconveniente de esta funcin es que siempre devuelve el primer archivo que encuentra. Para que contine buscando los dems archivos debemos poner la funcin sin parmetros. Ejemplo
archivo = archivo =
As
En el ejemplo anterior buscar todos los archivos exe en el directorio c:\. cuando ya no encuentre mas devolver una cadena vaca y saldr del bucle While.
Private Function Verificar_Existe(path) As Boolean If Len(Trim$(Dir$(path))) Then Verificar_Existe = True Else Verificar_Existe = False End If
MsgBox Verificar_Existe End Function Private Sub Form_Load() Call Verificar_Existe("c:\autoexec.bat") End Sub
El siguiente enlace muestra un ejemplo de como utilizar la funcin Dir para buscar archivos y tambin ordenarlos enforma alfabtica y luego agregar la lista en un control Listbox Este otro enlace muestra como buscar ficheros mediante el Api de windows
15 - Funcin FileCopy
FileCopy nos permite copiar archivos. Esta funcin es muy fcil de usar. ejemplo:
16 - Funcin MkDir
Esta funcin se utiliza para crear directorios, pero crea un directorio por vez, es decir que no crea varios niveles al mismo tiempo. La sintaxis es: MkDir "Ruta directorio" para poder crear un Directorio que contiene varios subdirectorios, podemos hacer lo siguiente: El ejemplo despliega un InputBox para ingresar el path a crear:
Private Sub Command1_Click() Dim i As Integer Dim Array_Dir As Variant Dim Sub_Dir As String Dim El_Path As String El_Path = InputBox("Escriba la ruta del directorio a crear" & _ "con directorios") los subdirectorios", " Crear varios niveles de
If El_Path = vbNullString Then Exit Sub 'Desglosa el path Array_Dir = Split(El_Path, "\") El_Path = vbNullString 'Recorre el array anterior para ir creando uno por uno For i = LBound(Array_Dir) To UBound(Array_Dir) Sub_Dir = Array_Dir(i) If Len(Sub_Dir) > 0 Then El_Path = El_Path & Sub_Dir & "\" If Right$(Sub_Dir, 1) <> ":" Then ' Verificamos que no exista If Dir$(El_Path, vbDirectory) = vbNullString Then
'Crea la carpeta Call MkDir(El_Path) End If End If End If Next i End Sub
17 - Funcin kill
La funcin kill se utiliza para eliminar archivos. Tambin es muy fcil de utilizar, y el nico parmetro que lleva es la ruta del archivo que queremos eliminar. Si queremos eliminar varios archivos de un directorio podemos utilizar el comodn"*", y si queremos excluir ciertos archivos utilizamos el comodn "?".
kill "c:\*.txt"
18 - Funcin FileLen
Dim tamao =
tamao
As
Long
FileLen("c:\windows\system32\control.exe")
FileLen es muy til para trabajar con archivos aleatorios, ya que si queremos conocer la cantidad de registros que tiene el archivo, debemos dividir el tamao del archivo por el tamao de la estructura. Ejemplo:
Private nombre As
Type String *
t_personas 20
As
String
20 Type
As
19 - Funcin Name
Name se utiliza para renombrar archivos y directorios. Esta funcin no se puede utilizar para renombrar archivos abiertos. Ejemplo: Name "path del archivo viejo a renombrar" as "path y nombre nuevo del archivo" Tambin con esta sentencia podemos mover archivos y directorios a otra ubicacin. para ello debemos cambiar en el segundo parmetro la ruta del archivo.
La funcin Getattr permite recuperar informacin sobre los atributos de un archivo o directorio. Ejemplo:
los valores devueltos por la funcin pueden ser los siguientes: 0 - normal 1 - solo lectura 2 - oculto
y y y
y y y
El siguiente ejemplo lo que hace es mostrar en un MsgBox los atributos de un archivo. Colocar un TextBox llamado Text1 y un Command1.
Cdigo en el formulario:
Option Explicit Private Sub Command1_Click() Dim ret As Long Dim Atributos As String ret = GetAttr(Text1.Text) If ret And vbNormal Then Atributos = " Normal Else Atributos = " Normal End If If ret And vbReadOnly Then Atributos = Atributos & " Solo Lectura Else Atributos = Atributos & " Solo Lectura = No" & vbNewLine = Si" & vbNewLine = No" & vbNewLine = Si" & vbNewLine
End If If ret And vbHidden Then Atributos = Atributos & " Oculto Else Atributos = Atributos & " Oculto End If If ret And vbSystem Then Atributos = Atributos & " Sitema Else Atributos = Atributos & " Sitema End If If ret And vbDirectory Then Atributos = Atributos & " Directorio Else Atributos = Atributos & " Directorio End If 'Muestra los atributos del archivo elegido MsgBox Atributos, vbInformation, " Atributos " End Sub = No" & vbNewLine = Si" & vbNewLine = No" & vbNewLine = Si" & vbNewLine = No" & vbNewLine = Si" & vbNewLine
21 - Funcin RmDir
RmDir elimina directorios o carpetas. Pero antes de eliminar directorios tenemos que estar seguros que la carpeta no contiene archivos, de lo contrario nos dar un error en tiempo de ejecucin. Si el directorio contiene archivos debemos eliminarlos previamente con la sentencia kill.
Ejemplo:
Contenido
1 - Introduccin 2 - El objeto App 3 - El objeto screen 4 - El objeto ClipBoard 5 - Menues en visual basic 6 - Los menues de cabecera y submenues 7 - Agregar elementos en un men 8 - Menues contextuales o popup men 9 - Ejemplo para crear un men PopUp 10 - Enlaces relacionados
y y y y y y y y y y
1 - Introduccin
Estos objetos que tienen sus propiedades y mtodos definidos como cualquier otro objeto, son fundamentales para utilizarlos en tiempo de ejecucin, y nos permiten obtener informacin y realizar tareas especficas y variadas como por ejemplo:
Trabajar con la pantalla (objeto Screen), obtener datos referentes a nuestra aplicacin ( objeto App), el objeto Clipboard ( para trabajar con el portapapeles de windows) y algunos otros
2 - El objeto App
El objeto App posee una serie de propiedades para obtener informacin de nuestra aplicacin
Propiedad Path Esta propiedad nos devuelve una cadena con la ruta donde se encuentra el ejecutable de nuestro programa. Esta propiedad es de suma importancia, ya que nosotros siempre debemos "programar las rutas" de nuestra aplicacin de forma relativa, es decir en donde realmente se encuentre nuestra aplicacin, ya que el usuario puede instalar nuestro programa en un directorio cualquiera y de este modo si nosotros hemos puesto, por ejemplo de un archivo externo en una ruta absoluta (por ejemplo "c:\Archivos de programa", puede darse el caso de que la aplicacin no encuentre dicho archivo ya que se ha instalado en otro directorio, ejecutarse en otra plataforma, etc.. Para resolver estos problemas sobre las referencias a las rutas de archivos, podemos utilizar el objeto App.path, y lo que hace esta propiedad es devolvernos el path de nuestra aplicacin. Ejemplo
En el ejemplo anterior, si nuestra aplicacin contiene un archivo de configuracin del programa, un grfico o cualquier otro fichero, para poder localizarlo lo hacemos mediante el objeto App.path mas el archivo que deseamos e interponindole la barra invertida. Nota: lo que hay que tener en cuenta para que no se produzca un error en tiempo de ejecucin, es que el objeto App.path nos devuelve solo el nombre de directorio de nuestra aplicacin pero sin la barra invertida al final, es decir que si deseamos por ejemplo hacer referencia a un archivo de nuestra aplicacin para trabajar con l, debemos agregarlo nosotros. Otro ejemplo podra ser el siguiente, supongamos que tenemos un programa que carga una imagen en un formulario. Si nosotros hacemos una referencia al archivo
de imagen mediante una ruta absoluta estaremos cometiendo un error, lo correcto sera
Esta propiedad se utiliza para comprobar si nuestro programa ya est cargado en memoria devolvindonos un valor de tipo boolean, True en caso correcto o False si no est abierto o cargado en memoria. La propiedad PervInstance es importante ya que un usuario, por error, puede abrir mas de una instancia de la aplicacin, algo que no tendra mucho sentido en la mayora de los casos. De este modo si se intenta abrir el programa mas de una vez, podemos mostrar un mensaje informativo y descargar la aplicacin mediante la sentencia End, o no mostrar nada y terminar la ejecucin. Este ejemplo muestra un mensaje cuando se intenta abrir mas de una ves, y luego de aceptar el mensaje se cierra con End
MsgBox " La aplicacin ya se encuentra cargada en memoria", vbInformation ' Finaliza el programa End End If
End Sub
ExeName: Con ExeName podemos recuperar el nombre del ejecutable de la aplicacin en tiempo de ejecucin
Hinstance: Esta propiedad nos retorna el handle o manipulador de nuestra aplicacin. Mediante esta propiedad y algunas Apis
relacionadas con este tema podemos controlar nuestra algunas cosas y Taskvisible: es una propiedad de tipo boolean que se utiliza para determinar si nuestra aplicacin aparecer en la lista de tareas. Esta propiedad solo funciona si nuestra aplicacin tiene la
3 - Objeto Screen
Con el objeto Screen se puede determinar y obtener informacin sobre las fuentes instaladas en el sistema operativo, la resolucin actual de la pantalla, el formulario y/o control que est activo, Un ejemplo para poder obtener la resolucin del monitor:
MsgBox "La resolucin en Pixeles del monitor es de: " & vbNewLine & _ "Ancho: " & Ancho & vbNewLine & _ "Alto: " & Alto, vbInformation
Para obtener el alto y el ancho en pixeles debemos hacer una simple conversin ya que mediante las propiedades width y height obtenemos el ancho y el alto del monitor pero expresado en twips, para obtener ese valor en pixeles hay que dividirlo por la propiedad TwipsPerPixelX y TwipsPerPixelY, que son propiedades que las podemos acceder desde el objeto Screen
Ejemplo para poder obtener una lista de las fuentes instaladas en el sistema
El objeto screen posee un objeto o coleccin llamado Fonts que es un vector que contiene las fuentes del sistema y una propiedad llamada FontCount para saber la cantidad de fuentes. Ejemplo para cargar las fuentes del sistema en un control ListBox
'Recorre las fuentes For La_Fuente = 0 To Screen.FontCount - 1 'Aade el nombre de la fuente al control List1.AddItem Screen.Fonts(La_Fuente) Next La_Fuente
Mediante 4 lneas de cdigo tenemos un control ListBox que muestra el nombre de todas las fuentes del sistema.
Nota: Para poder obntener las fuentes pero de una impersora, se realiza igual que en el paso anterior , con la diferencia que en ves de usar el Objeto Screen, se usa el Objeto Printer. Por ejemplo Colocar un ComboBox en el formulario donde se listarn las impresoras instaladas, y en agregar un Control ListBox donde agregarn las fuentes
Option Explicit Private Sub Combo1_Click() Ver_fuentes Combo1.ListIndex End Sub Private Sub Form_Load() Dim ObjPrinter As Printer ' Recorre la lista de impresoras instaladas _ en el sistema y agrega el nombre en el combo For Each ObjPrinter In Printers Combo1.AddItem ObjPrinter.DeviceName Next End Sub
' Enumera las fuentes en el ListBox de la _ impresora seleccionada en el Combo Sub Ver_fuentes(Impresora As String) ' Referencia a la impersora Set Printer = Printers(Impresora) Dim i As Integer List1.Clear ' Lista las fuentes soportadas de la impresora For i = 0 To Printer.FontCount - 1 List1.AddItem Printer.Fonts(i) Next End Sub
Enlaces relacionados
Listar las fuentes de windows y previsualizarlas
4 - El objeto ClipBoard
Con ClipBoard podemos trabajar con el portapapeles de windows, ya sea para establecer o recuperar datos del mismo. Ejemplo: Para recuperar el texto guardado en el portapapeles:
Con el mtodo Clear del objeto ClipBoard podemos borrar el contenido del portapapeles (no requiere ningn parmetro)
Clipboard.clear
Con la siguiente lnea podemos copiar una imagen del portapapeles a un control picture, si es que la hay, usando el mtodo Getdata del objeto Clipboard
Picture1.Picture = Clipboard.GetData
Lo siguiente copia una imagen cargada en un control de imagen al portapapeles, es decir hacer lo contrario:
Clipboard.SetData Picture1.Picture
Ejemplo para crear menes y menes contextuales o tambin llamados men PopUp, que son aquellos que se despliegan con el botn derecho del mouse. Casi todas las aplicaciones por mas pequeas que sean, poseen un acceso a determinadas o casi todas las opciones de un programa por medio de un men. Si bien las opciones las podemos encontrar en la interface misma de la aplicacin, ya sea por medio de botones, barras de herramientas etc.., nunca est dems que estn a mano por medio de un men. Visual Basic incorpora una herramienta llamada editor de menes para poder crearlos Nota: El editor de Manes se encuentra en el men herramientas y solo est disponible desde la vista diseo del formulario, es decir que si ests visualizando la ventana de cdigo o un mdulo de cdigo debers cerrarlas y dejar visible el formulario que ests diseando para que la opcin est habilitada.
Los menes de cabecera son los menes principales que contienen otros submenues. Por ejemplo en el men del internet explorer, el men archivo es el men de cabecera o de primer nivel, y las opciones internas de este (abrir, guardar, imprimir, cerrar, etc...) son los submenues que estn en un nivel por debajo del men archivo. Crear un men 1. El primer paso es disear un buen diagrama que incluya la mayora de las opciones, para que el usuario las pueda tener a mano tambin en el men. 2. Si observas otras aplicaciones, estas respetan el orden y ubicacin de sus menues, es decir que si ests creando un programa que tiene opciones para imprimir una hoja, esta se encontrarn en la seccin del men archivo, si tienes opciones de edicin del documento como cortar copiar, pegar , seleccionar todo, etc..., las encontrars en el men "edicin", si deseas crear un formulario "acerca de..", lo ubicars en el men ayuda con el "nombre acerca de...". esta forma de diseo y diagramacin es fundamental para que el programa sea estndar y aceptado por todos, por llamarlo de alguna manera, ya que si bien nosotros recordamos el nombre y donde se encuentra ubicada cada opcin, un usuario o tercero debe resultarle lo mas sencillo posible el acceso a las opciones del mismo.
El siguiente ejemplo consiste en un formulario que contiene solo un control label que nos mostrar una leyenda con el texto del men que seleccionamos o presionamos. El men estar compuesto por 3 menues de cabecera, el primero llamado "Archivo", el segundo "Edicin" y el ltimo "Ayuda". A su vez cada men tendr los siguientes submenues: 1. Archivo : Este men contendr los submenues " Abrir ", " Guardar ", " Imprimir " y " Cerrar " 2. Edicin: Contendr los submenues " Cortar ", " Copiar ", " Pegar ", " Seleccionar todo " 3. Ayuda : Tendr los submenues " Ayuda " y " Acerca de.. "
El cuadro de dilogo del editor de men de visual basic posee los siguientes campos para rellenar. Algunos son opcionales y otros son obligatorios, como la propiedad Caption y Name: Caption: en este campo debemos colocar la leyenda que mostrar el men, es decir el texto que mostrar el mismo. y Name: en este campo debemos introducir un nombre para cada men. Este es obligatorio y no puede estar duplicado ya que por medio de este nombre identificaremos al men en el cdigo.
Index: en este campo que es opcional podemos introducir un nmero para formar vectores de menues o arreglos de menues, en este ejemplo no se usa, por ejemplo para crear menues en forma dinmica en tiempo de ejecucin
helpcontextid: este campo opcional podemos introducir un n para el tpico de ayuda, por si el usuario presiona la tecla F1 justo cuando est posicionado en el men.
Shortcut: Podemos ingresar una tecla de acceso rpido al men para que se despliegue el mismo automticamente, como por ejemplo Ctrl + a, Ctrl + b, etc...
Checked: este campo indica si el men tendr un tilde a la izquierda o no. Si est en true lo muestra si est en False no. El campo es de tipo opcional.
Enabled : propiedad booleana que determina si el men est habilitado o no. Esta propiedad es exactamente igual a la propiedad Enabled de cualquier control de visual basic. El campo por defecto, mejor dicho la propiedad est en True
Visible : propiedad opcional y de tipo booleana que determina si el men estar visible o no. Esta propiedad es ideal para crear los menues contextuales o PopUp (mas adelante hay un ejemplo de como crear uno).
Pasos a seguir: 1. Una vez abierto el editor de men, hay que ingreasar los elementos que componen el mismo. Para crear el men "Archivo" que es un men de cabecera o de nivel superior, debemos ingresar en la propiedad Caption la cadena &Archivo. Ahora le asignaremos un nombre en el campo Name. G Generalmente se suele utilizar en este campo el mismo nombre del men pero con el prefijo mnu para luego poder distinguirlo fcilmente en el cdigo. Entonces ingresamos en este campo mnuarchivo 2. El segundo paso ser ingresar los submenues que estn por debajo del menu archivo. Para ello presionamos el botn "siguiente" donde ingresaremos el men "Abrir". como este es un submen debemos indicarlo con el botn que tiene una flecha hacia la Derecha. Al presionarlo ahora el mismo se marca con una doble comilla (""""), para indicarnos que este men deriva o est contenido en el men de cabecera "Archivo". Ahora pasamos a ingresarle el nombre y la leyenda del men. En la propiedad Caption ingresamos &Abrir y en el campo Name : mnuabrir.
3. Ahora repetimos los pasos anteriores para ingresar los submenues restantes del men Archivo. 4. Si habrs observado los clsicos menues de las aplicaciones, los submenues se agrupan en secciones. Por ejemplo en el men archivo del internet explorer, el submen Salir est separado del resto por una lnea. para lograr esto se debe crear un submen como cualquier otro justo arriba del men que queremos que aparezca la lnea divisoria, y en la propiedad caption del mismo le colocamos el caracter menos 5. Ahora ingresaremos el cdigo para que muestre la leyenda en el control Label cada vez que presionemos un men. 6. Como habrs notado, el men se va incorporando al formulario en tiempo de diseo como cualquier otro control de visual basic. Para ingresar el cdigo necesario diremos que cada men responde a un evento llamado click y que se dispara cuando presionamos el men con el mouse o cuando le damos un enter, para ingresar el cdigo en el men "Abrir" le damos un click en el mismo men desde la ventana de diseo. Una vez abierta la ventana de cdigo aparecer una rutina como la siguiente:
Sub
mnuabrir_click()
Ahora dentro del evento Click del men colocamos lo siguiente para que la etiqueta muestre la propiedad caption del menu abrir al pulsar sobre el men
Label1.Caption = mnuarchivo.Caption
Nota: cabe aclarar que estas rutinas las podemos invocar o llamar como cualquier otra rutina de cdigo , por ejemplo en el caso anterior, por ejemplo si coloco esto en un botn se llamara al procedimiento Click del men y se ejecutara el cdigo.
Call mnuabrir_click
Esto es til si tenemos una barra de herramientas, ya que no tendremos que escribir cdigo 2 veces, y podemos usar un solo procedimiento haciendo una simple llamada al mismo
Menu: este es el men popup que debe estar en el formulario, es decir el nombre
Flags: este parmetro indica la apariencia del men en el formulario. Ac podemos utilizar las siguientes constantes para ubicar el men:
vbpopupmenucentertalign alinea en el centro de la coordenada x. vbpopupmenurightalign lo alinea en el lado izquierdo. En la mayora de los casos este parmetro no se utiliza. y X e Y: podemos indicar, aunque no se suele utilizar, las posiciones x e y donde debe desplegarce el men. y opcion: en este parmetro opcional , podemos indicar el nombre de un submen para que aparezca resaltado en negrita.
Si bien el men PopUp lo podemos llamar en cualquier momento, lo mas comn es utilizarlo y desplegarlo cuando el usuario presiona el botn derecho sobre un control, formulario etc... Sabiendo esto , para desplegarlo por ejemplo cuando el usuario presiona el botn sobre un rea del formulario, podemos utilizar el evento MouseUp o MouseDown del mismo y consultar la variable Button del procedimiento y mediante una estructura
IF - Then comprobar si el botn que presionamos es el derecho , utilizando las constantes VbRightButton, vbLeftButton
' Consultamos si el botn presionado es el derecho If button = vbRightButton Then ' Depliega el men PopUP Me.PopupMenu mnucontextual End If End Sub
y y
Crear un editor de texto simple utilizando forms mdi Enalces relacionados con Mdi
El men Archivo:
El men Edicin:
Los nombres de los menues debern ser los siguientes: Men Archivo:
1. 2. 3. 4. 5.
Abrir: mnuAbrir Nuevo: mnuNuevo Guardar: mnuGuardar Guardar Como: mnuGuardarComo Salir: mnuSalir
Men edicin 1. 2. 3. 4. Copiar: mnuCopiar Cortar: mnuCortar Pegar: mnuPegar Seleccionar todo: mnuSeleccionar
Nota: si no sabs como crear los menes con el editor de visual basic, pods chequear este enlace que explica resumidamente como crear uno:
Crear menes en visual basic
Ahora hay que especificar en el formulario Mdi, en la propiedad MdiChild, que se encuentre en True, para que de esta manera los formularios se abran dentro de este. Ahora indicar en el men Proyectos > Propiedades de proyecto, que el formulario de inicio sea el MDI, en la opcin Objecto inicial.
Luego agregar un control CommonDialog llamado CommonDialog1 en el formulario Mdi y tambin otro en el formulario frmDocumento para poder utilizar los Cuadros de dilogo Abrir Archivo y Guardar como. ( El control CommonDialog lo acceds desde el men proyecto, Componentes > Microsoft Common Dialog Control ). En el formulario frmDocumento, colocar un control RichTextBox llamado RichTextBox1 y establecerle a este desde la ventana de propiedades, la propiedad Multiline en True, La propiedad Scrollbars en 3. ( opara que muestre Ambas barras de desplazamiento) Por ltimo colocar un mdulo bas al proyecto
"Documento
de
texto|*.txt|Todos
los
Private Sub mnuAbrir_Click() On Error GoTo errSub CommonDialog1.ShowOpen If CommonDialog1.FileName <> "" Then Set FrmDoc = New frmDocumento FrmDoc.Show ActiveForm.Caption = CommonDialog1.FileName ActiveForm.RichTextBox1.LoadFile CommonDialog1.FileName End If Exit Sub errSub: Select Case Err.Number Case 70 ActiveForm.RichTextBox1.LoadFile CommonDialog1.FileName Resume Next End Select End Sub
On Error GoTo errSub If Forms.Count = 1 Then MsgBox "No hay documentos para guardar", vbInformation Exit Sub End If CommonDialog1.ShowSave If CommonDialog1.FileName = "" Then Exit Sub ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName
Exit Sub errSub: Select Case Err.Number Case 91 Resume Next End Select End Sub
'Men para guardar el archivo Private Sub mnuGuardar_Click() On Error GoTo errSub If Forms.Count = 1 Then MsgBox "No hay documentos para guardar", vbInformation Exit Sub End If If InStr(1, ActiveForm.Caption, sCaption) Then CommonDialog1.ShowSave If CommonDialog1.FileName = "" Then Exit Sub ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName Else ActiveForm.RichTextBox1.SaveFile ActiveForm.Caption
End If Exit Sub errSub: Select Case Err.Number Case 91 Resume Next End Select End Sub 'Men nuevo archivo Private Sub mnuNuevo_Click() Set FrmDoc = New frmDocumento nForms = nForms + 1 FrmDoc.Caption = sCaption & nForms FrmDoc.Show End Sub 'Men pegar Private Sub mnuPegar_Click() On Local Error Resume Next ActiveForm.RichTextBox1.SelText = Clipboard.GetText End Sub
'Men salir Private Sub mnuSalir_Click() Set FrmDoc = Nothing End End Sub 'Menu para seleccionar todo el texto Private Sub mnuSeleccionar_Click() On Local Error Resume Next ActiveForm.RichTextBox1.SelStart = 0
'Men Copiar texto Private Sub mnuCopiar_Click() On Local Error Resume Next Clipboard.SetText ActiveForm.RichTextBox1.SelText End Sub 'Men cortar texto Private Sub mnuCortar_Click() On Local Error Resume Next Clipboard.SetText ActiveForm.RichTextBox1.SelText ActiveForm.RichTextBox1.SelText = "" End Sub
Private Sub Form_Resize() 'Redimensionamos formulario el control RichtextBox al ancho y alto del
RichTextBox1.Move ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight If WindowState = vbMaximized Then 'mdiform1.Caption = Me.Caption Else mdiform1.Caption = "" End If End Sub
Private Sub Form_Unload(Cancel As Integer) On Error GoTo errSub Dim ret As Integer If flagGuardar Then ret = MsgBox(" Guardar cambios", vbYesNoCancel) End If Select Case ret Case vbYes: If InStr(1, Me.Caption, sCaption) Then CommonDialog1.ShowSave RichTextBox1.SaveFile CommonDialog1.FileName Else RichTextBox1.SaveFile Me.Caption End If Case vbCancel: Exit Sub End Select Set FrmDoc = Nothing
Exit sub errSub: Select Case Err.Number Case 75 Resume Next End Select End Sub Private Sub RichTextBox1_Change()
Public Public
FrmDoc nForms
As As
frmDocumento Integer
En este enlace est el cdigo fuente para descargar del proyecto anterior, que incluye una barra de herramientas para las opciones ( abrir, guardar etc.. ) y un cuadro de buscar y reemplazar para los documentos
Nota. Si quers poder aadir en el men archivo del formulario Mdi, la lista de los archivos abiertos recientemente por el programa ( como lo hacen muchas aplicaciones que utilizan formularios MDI, como por ejemplo el Word, o inicluso el Visual basic ), pods ver este ejemplo que graba en el registro de windows las rutas de los ficheros, y al cargar crea en forma dinmica los menes en tiempo de ejecucin. Luego al hacer click en el elemento del men se ejecuta el archivo Por ejemplo como muestra esta imagen:
Mtodos grficos - 1
Seccin que explica los aspectos bsicos del uso del los mtodos grficos de Visual basic.
En la parte 1 se explica el uso de Line, para dibujar lneas y rectngulos, el mtodo Circle para dibujar crculos, y el mtodo Pset y Point para puntos. En la segunda pgina: los mtodos LoadPicture, PaintPicture, SavePicture y algunas otras.
y y y y
Mtodo Line - lneas y rectngulos Mtodo Circle - Crculos, arcos y elipses Mtodo Pset y Point Funcin QbColor
1 - Mtodo Line :
Con este mtodo podemos dibujar Lneas y rectngulos en un objeto donde se permita utilizar dicho mtodo, como por ejemplo en los Formularios, los controles PictureBox, el objeto Printer. Los parmetros de Line son: El_Objeto.Line (X1, Y1) - ( X2, Y2), El_Color, BF
Donde El_Objeto es donde vamos a dibujar. Los primeros dos parmetros son las coordenadas para X e Y, luego el color de la lnea y por ltimo el parmetro BF al igual que el color, es un parmetro de tipo opcional, y aqu podemos pasar como valor: B o BF o ningn valor Si pasamos B, se dibujar un rectngulo sin relleno. Si pasamos BF el rectngulo tendr de relleno el color especificado en el parmetro Color. Si no pasamos nada se dibuja una lnea Ejemplos: Lo siguiente dibuja una lnea de color Azul en el formulario:
vbPixels
Como se ve en el ejemplo anterior, los valores que tomar y utilizar LINE para las coordenadas X e Y, sern los establecidos en el ScaleMode del Objeto donde dibujar, en este caso se coloc en Pixeles ( vbPixels )
Este otro dibuja una lnea horizontal y otra vertical a lo ancho y alto del Formulario, al mover el puntero del mouse. A la primer lnea se le aplica el color verde, a la la lnea horizontal el color Rojo, utilizando las constantes de color de vb. ( VbgGreen y VbRed )
Option Explicit Private Sub Form_MouseMove(Button As Integer, _ Shift As Integer, _ X As Single, _ Y As Single)
' Limpia el Form Cls 'Dibuja la lnea vertical Line (X, ScaleTop)-(X, ScaleHeight), vbGreen 'Dibuja la lnea Horizontal Line (Me.ScaleLeft, Y)-(Me.ScaleWidth, Y), vbRed End Sub
En este otro ejemplo, se dibuja en el formulario, una cantidad x de lineas con colores aleatorios, utilizando la funcin Rnd de visual basic para generar el color aleatorio y para la cantidad de lineas :
Form1.ScaleWidth = 100 Timer1.Interval = 500 End Sub Private Sub Timer1_Timer() Dim x As Long Dim x1 As Long, x2 As Long Dim y1 As Long, y2 As Long Dim Color As Long ' si el form est minimizado sale If Form1.WindowState = vbMinimized Then Exit Sub End If ' limpia el formulario Me.Cls ' Int(Rnd * 50) + 1, es la cantidad de lineas For x = 0 To Int(Rnd * 50) + 1 DoEvents ' valores x e y para la linea actual x1 = Int(Rnd * 101) x2 = Int(Rnd * 101) y1 = Int(Rnd * 101) y2 = Int(Rnd * 101) ' color aleatorio de 1 a 15 que luego se usa con Qbcolor Color = Int(Rnd * 15) ' dibuja la linea Form1.Line (x1, y1)-(x2, y2), QBColor(Color) Form1.Line (x1, y2)-(x2, y1), QBColor(Color) Form1.Line (x2, y1)-(x1, y2), QBColor(Color) Form1.Line (y1, y2)-(x1, x2), QBColor(Color) Next x End Sub
Este cdigo dibuja lineas, como si fuese un lapiz, es deicir al mantener presionado el mouse en el formulario:
Option Explicit Dim Flag As Boolean Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) 'Establece el CurrentX y el CurrentY CurrentX = X CurrentY = Y Flag = True End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Flag = False Then Exit Sub End If 'Dibuja la linea Line -(X, Y) End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Flag = False End Sub
Lo siguiente dibuja un rectngulo sin relleno de color Rojo, pasndole la B como parmetro al mtodo Line
Me.ScaleMode
vbPixels
Me.ScaleMode
vbPixels
Cuando se dibujan rectngulos, es decir se utiliza B o BF, X1 , Y1, X2 e Y2 sera equivalente a : El_Objeto.Line (Izquierda, Arriba) - (Ancho, Alto).
El siguiente ejemplo dibuja una lnea vertical de color verde una al lado de la otra en todo el ancho del formulario, en un bucle:
For i = 0 To Me.ScaleWidth Step 10 Line (i, 10)-(i, Me.ScaleHeight - 10), vbGreen Next
End Sub
CurrentX devuelve o establece las coordenadas horizontales para el siguiente mtodo de dibujo. CurrentY devuelve o establece las coordenadas verticales para el siguiente mtodo de dibujo, en este caso para el mtodo Line. Lo siguiente, dibuja al presionar un Command1, un rectngulo de 25 pixeles de ancho por 50 pixeles de alto. Y la posicin izquierda y la posicin superior (x1 e y1), es decir el CurrentX y el CurrentY, se puede ver como no cambian su valor, y se mantienen igual. Es decir, la primera ves que se presiona para dibujar el primer rectngulo, Currentx y Currenty valen 0. Luego la segunda ves, Currentx tiene el valor 25 y Currenty el valor 50. si se sigue presionando el Command1, mientras no se cambie explicitamente el valor , currentx y Currenty mantendrn dichos valores, x2 e y2.
Me.Line (CurrentX, CurrentY)-(25, 50), vbRed, B MsgBox "Pos x: " & CurrentX MsgBox "Pos y: " & CurrentY End Sub Private Sub Form_Load() Me.ScaleMode = vbPixels End Sub
Siguiendo el ejemplo anterior, si quisieramos que las coordenadas x2 e y2 sean relativas a x1 e y1, podemos utilizar la palabra reservada Step. Este cdigo es exactamente igual al anterior, con la diferencia de que se utiliza Step para especificar el Currentx y el Currenty para que x2 e y2 sea relativo a x1 e y1, el resultado sera esto:
Este es igual al anterior pero la posicin Superior (y1) es fija, y lo que se desplaza es la posicin horizontal, es decir el CurrentX, y cada ves que se presione el Command1 , el Currentx (la posicin izq ) se incrementar de 25 en 25 pixeles.
Private Sub Command1_Click() Me.Line (CurrentX, 20)-Step(25, 50), vbRed, B End Sub Private Sub Form_Load() Me.ScaleMode = vbPixels End Sub
End Sub
End Sub
Este otro ejemplo, dibuja un cuadrado uno al lado del otro , a lo ancho del formulario, el rectngulo es de 10 pixeles de ancho por 10 pixeles de alto, y cada cuadrado est separado por 5 pixeles ente uno y otro.
For Izquierda = 0 To Me.ScaleWidth Step 15 Me.Line (Izquierda, 10)-Step(10, 10), vbBlue, B Next End Sub
Este otro dibuja rectngulos de 25 x 25 pixeles uno al lado del otro, en todo el formulario mediante dos bucles For. El primer bucle es para los rectngulos horizontales y el otro para los verticales.
Me.Cls
For Horizontal = 0 To ScaleWidth Step 30 For vertical = 0 To ScaleHeight Step 30 Line (Horizontal, vertical)-Step(25, 25), &H808080, B Next Next End Sub Private Sub Form_Load() Me.ScaleMode = vbPixels
End Sub
Dibujar cuadrcula Lo siguiente dibuja una cuadracula mediante el mtodo Line en el objeto indicado, puede ser un picturebox o formulario, indicando la cantidad de cuadros para la forma horizontal y la cantidad para el vertical.
Option Explicit Sub Dibujar_cuadricula( _ Objeto As Object, _ CountX As Single, _ CountY As Single, _ Optional x_Color As Long = vbBlack, _ Optional y_Color As Long = vbBlack) Dim i As Integer Dim mx As Long Dim my As Long ' limpiar objeto Objeto.Cls mx = CLng(Objeto.ScaleWidth / CountX)
my = CLng(Objeto.ScaleHeight / CountY) ' cambiar color del lpiz Objeto.ForeColor = x_Color ' dibujar las lneas verticales de la cuadricula For i = 0 To CountX Objeto.Line (i * mx, 0)-(i * mx, Objeto.ScaleHeight) Next i Objeto.ForeColor = y_Color ' dibujar las lneas horizontales de la cuadricula For i = 0 To CountY Objeto.Line (0, i * my)-(Objeto.ScaleWidth, i * my) Next i End Sub
Private Sub Form_Load() With Me .BackColor = vbWhite .ForeColor = vbBlue .FontSize = 12 .AutoRedraw = True End With Call Dibujar_cuadricula(Me, 25, 25, vbBlue, vbRed) 'Call Dibujar_cuadricula(Me, 5, 10, vbBlue, vbRed) 'Call Dibujar_cuadricula(Me, 25, 50, vbBlue, vbRed) End Sub
Propiedad DrawWidth
Para establecer el grosor de la lnea de dibujo se utiliza la propiedad DrawWidth. Este ejemplo dibuja lneas una al lado de la otra, separadas por 20 pixeles, mediante un bucle y va incrementando el DrawWidth en 1 en cada pasada. El dibujo se realiza en un control PictureBox llamado Picture1
Private Sub Command1_Click() Picture1.Cls Picture1.ScaleMode = vbPixels For i = 0 To ScaleWidth Step 25 Picture1.Line (i, 10)-(i, Picture1.ScaleHeight - 10), vbGreen Picture1.DrawWidth = Picture1.DrawWidth + 1 Next Picture1.DrawWidth = 1 End Sub
Este otro ejemplo dibuja un borde y un degradado en un formulario utilizando el mtodo Line, como muestra la siguiente captura:
Para crear le ejemlo colocar la propiedad BorderStyle del formulario en 0 - None, y pegar el siguiente cdigo:
Private Sub Form_Load() With Me 'Algunas propiedades del formulario .AutoRedraw = True .ScaleMode = 3 .FontSize = 16 .ForeColor = &HC0FFFF End With End Sub
'Esto dibuja el borde al formulario Call Dibujar_Borde End Sub Sub Dibujar_Borde() Me.DrawStyle = 0 Me.DrawWidth = 10 Line (0, 0)-(ScaleWidth - 1, ScaleHeight - 1), &HFFC0C0, B End Sub
Sub Degradado(vForm As Form) Dim intContador As Integer vForm.DrawStyle = vbInsideSolid vForm.DrawWidth = 2 'vForm.ScaleHeight = 256 For intContador = 0 To 255 vForm.Line (0, intContador)-(Screen.Width, _ intContador - 1), _ RGB(0, 0, 255 - intContador), B Next Me.CurrentX = 20 Me.CurrentY = 20 Me.Print " Ejemplo para dibujar un borde a un formulario " End Sub
2 - Mtodo Circle
El mtodo Circle permite dibujar un crculo, una elipse o un arco sobre un objeto. La sintaxis del mtodo es la siguiente: EL_Objeto.Circle (Step As Integer, X As Single, Y As Single, Radius As Single, Color As Long, Start As Single, End As Single, Aspect As Single) Los valores para X e Y especifican el punto donde estar el centro del crculo a dibujar. Radius es el valor del radio del mismo. El parmetro es obligatorio. Color: Valor que indica el color que tendr el crculo o elipse para su contorno. Se puede pasar cualquier valor admitido en visual basic, por ejemplo un Long, un valor Rgb etc.. Los parmetros Start y End son opcionales , y se utilizan para dibujar parte de una elipse o crculo Por ltimo el parmetro Aspect, se utiliza para definir el aspecto del crculo. Este valor es opcional. Ver ejemplos mas abajo.
El siguiente ejemplo crea un crculo en el centro de un control PictureBox, con un radio de 50 pixeles.
Picture1.Cls
With Picture1
End Sub
Este ejemplo dibuja un crculo con un radio aleatorio entre 10 y 100 pixeles, al hacer click en el formulario, es decir el centro del crculo ( x1 e y1 ), son los valores x e y del evento MouseDown del Form:
Private Sub Form_Load() ScaleMode = vbPixels Me.DrawWidth = 2 End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Circle (X, Y), Int((100 - 10 + 1) * Rnd + 10), vbRed End Sub
Para esto se utiliza las propiedades FillColor y FillStyle. FillColor es el color de relleno, para FillStyle ver las opciones de estilos para los rellenos: 0 - Slido, 1 transparente, 2 - Lnea Horizontal, 3 - Lnea Vertical etc.. Un ejemplo: este es igual al anterior, pero rellena el crculo de un color aleatorio, siempre y cuando la propiedad FillStyle no sea transparente:
Private Sub Combo1_Click() Me.FillStyle = Combo1.ListIndex End Sub Private Sub Command1_Click() Me.Cls End Sub Private Sub Form_Load() ScaleMode = vbPixels 'Grosor de la lnea Me.DrawWidth = 2 'Opciones de estilo de relleno With Combo1 .AddItem " 0 - Solido " .AddItem " 1 - Transparente " .AddItem " 2 - Linea Horizontal " .AddItem " 3 - Linea Vertical " .AddItem " 4 - Diagonal Arriba "
.AddItem " 5 - Diagonal Abajo " .AddItem " 6 - Cross " .AddItem " 7 - Diagonal Cross " End With Command1.Caption = "Limpiar" End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) 'color de relleno aleatorio Me.FillColor = RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)) 'Dibuja el crculo Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _ RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)) End Sub
Dibujar Elipses
Para dibujar Elipses se debe especificar en el parmetro Aspecto los siguientes valores. Por ejemplo si pasamos un 1, el crculo ser una circunferencia perfecta, si pasamos 0.5 , el radio horizontal del mismo ser el doble que el radio vertical, si pasamos un 2 lo contrario.
Private Sub Form_Load() ScaleMode = vbPixels 'Grosor de la linea Me.DrawWidth = 2 For i = 0.1 To 2.1 Step 0.1 Combo1.AddItem i Next Combo1 = Combo1.List(0) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single)
Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _ RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)), , , CSng(Combo1) End Sub
El mtodo Point lo que hace es devolver , como un nmero entero ( un Long ), el color RGB del punto que se le especifique, puede ser utilizado tanto en un Formulario como en un PictureBox.
El mtodo Pset establece un color determinado para un punto de un objeto. El siguiente ejemplo utiliza los dos mtodos. Cargar un grfico en un Picture1 y tambin colocar un Picture2. Al hacer click en el Picture1, en el evento MouseDown, se obtendr el color de ese pixel, y ese valor se le aplicar al BackColor del Picture2, como se ve en el grfico, el punto verde es el establecido con el mtodo Pset.
Private Sub Form_Load() 'Modo de escala en pixeles Picture2.ScaleMode = vbPixels Picture1.ScaleMode = vbPixels 'Grosor del punto Picture1.DrawWidth = 3
End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, _ X Single) Picture1.Cls As Single, Y As
' Establece el color del Picture2 mediante el mtodo Point Picture2.BackColor = Picture1.Point(X, Y) ' Dibuja el punto Picture1.PSet (X, Y), vbGreen 'Valor Hexadecimal del color Me.Caption = "Valor del color: " & Hex(Picture2.BackColor) End Sub
Nota: la forma y variaciones en las que se dibuja el punto u otras figuras mediante los mtodos grficos, dependen de las propiedades DrawStyle y DrawMode del objeto.
Este es otro ejemplo que utiliza Pset para dibujar un punto al presionar en el formulario, tomando como valores el x e y del evento MouseDown del Form, luego se dibuja una lnea desde un punto hacia el otro punto mediante el mtodo Line
Cdigo fuente
AutoRedraw = True End Sub Private Sub Form_MouseDown(Button As Integer, _ Shift As Integer, _ X As Single, _ Y As Single)
DrawWidth = 10
If X1 <> 0 And Y1 <> 0 Then DrawWidth = 3 'Dibuja la linea Line (X1, Y1)-(X, Y), vbWhite End If X1 = X Y1 = Y End Sub
Este otro ejemplo dibuja puntos en el formulario en forma aleatoria Colocarle al formulario la propiedad WindowState en Maximized y tambie n agregar un control CommandButton Cdigo fuente en el formulario
' dibuja los puntos en el formulario Call Dibujar_Puntos(vbButtonFace) End End Sub Function Dibujar_Puntos(Color As Long) Dim Posicion_X Dim Posicion_Y
Tiempo = Timer + 5 While Tiempo >= Timer ' valores para la posicin x e y Posicion_X = Rnd * ScaleWidth Posicion_Y = Rnd * ScaleHeight ' Dibuja el punto en la coordenada y con el color indicado con Pset PSet (Posicion_X, Posicion_Y), Color DoEvents Wend End Function
Private Sub Form_Load() ' modo formulario de escala en pixeles y grosor del lapiz para el
ScaleMode = 5 DrawWidth = 10
End Sub
4 - Funcin QBColor:
Definicin de la funcin QBColor de Visual basic: Esta funcin devuelve el cdigo de color RGB de un nmero de color especificado de una lista de colores estndar predefinidos Es decir, esta funcin tiene como parmetro, un nmero entre el 0 y 15, es decir 16 valores posibles para retornar un color especifico. El siguiente ejemplo, muestra el uso de esta funcin. Lo que hace es recorer en un bucle, desde el 0 hasta el 15, y le cambia el BackColor a un arreglo de controles Label. Colocar una matriz de Label1. Label1 (0), Label1(1) .... hasta el Label1(15)
Private Sub Form_Load() Me.Caption = " Ejemlpo de la funcin QBColor" Dim i As Integer For i = 0 To 15 ' Asigna el color devuelto por la funcin QBColor _ al color de fondo del Label Label1(i).BackColor = QBColor(i) ' Asigna el caption Label1(i).Caption = " Valor de QBColor: >> " & i Next i End Sub
Mtodos grficos - 2
Seccin que explica los aspectos bsicos del uso del los mtodos PaintPicture, LoadPicture y SavePicture de visual basic , que permiten leer , guardar , dibujar y copiar grficos e imgenes
y y y
1 - Funcin LoadPicture :
Esta funcin se utiliza para cargar una imagen o grfico en un control Form, PictureBox o Image. Esta funcin requiere como parmetro obligatorio, el path del archivo de imagen a cargar en el objeto. Por ejemplo lo siguiente carga un grfico en un control PictureBox:
Picture1.Picture = LoadPicture("c:\archivo.bmp")
Lo mismo sera para un control Image o Formulario, o cualquier objeto que soporte la carga de un archivo de imagen de formato compatible a las que soporta Visual basic ( BMP, JPG, GIF, WMF, algunos ICO etc..) , no as los archivos PNG o TIFF por ejemplo, ya para estos ltimos habra que utilizar el Api de windows o algn componente externo, para poder leerlos. Nota: En este enlace hay un Mdulo de clase que permite visualizar grficos e
imgenes de tipo PNG
Image1.Picture = LoadPicture("c:\archivo.bmp")
Tambin hay otras propiedades de algunos controles, que requieren por lo general el uso de esta funcin para cargar un archivo grfico a dicha propiedad, como es el caso de: La propiedad Icon de los formularios. La propiedad MouseIcon para establecer un icono personalizado al mouse. La propiedad DragIcon que permite establecer el icono que se va a mostrar como puntero en una operacin de arrastrar y colocar, y algunas otras. lo siguiente establece un archivo de cono al puntero del Mouse para el formulario:
Me.MousePointer
vbCustom
Me.MouseIcon = LoadPicture(La_Ruta_Del_Icono)
Text1.MousePointer
vbCustom
Text1.MouseIcon = LoadPicture(La_Ruta_Del_Icono)
Adems de los controles, se pueden cargar archivos con la funcin LoadPicture, por ejemplo en los siguientes tipos de variables: IPictureDisp, Picture stdPicture. Aclarar que al cargar un grfico en la variable, se debe establecer con la instruccin Set, por ejemplo:
Lo anterior carga en el la variable " La_Imagen " el archivo grfico, y luego se puede pasar dicha variable a un objeto que tenga la propiedad Picture, en este caso se paso un control Picture1. Para eliminar de la memoria la variable, se utiliza el valor Nothing tambin con la instruccin Set , por ejemplo:
If Not La_Imagen Is Nothing Then 'Descarga la variable de la memoria Set La_Imagen = Nothing End If
Capturar el error 53. Cuando cargamos un archivo con la funcin, y el path del archivo no existe, es decir que no se encuentra el fichero, se produce el error 53.
Picture1.Picture = LoadPicture(Ruta)
Exit Sub
'Error errSub: If Err.Number = 53 Then MsgBox "No vbCritical End If se puede cargar el archivo, verifique la ruta",
2 - Mtodo SavePicture:
Este mtodo lo que hace es guarda en un archivo en disco, un grfico cargado en un control Form, PictureBox o un control Image. Este posee dos parmetros, uno que especifica el Objeto Picture, y otro la ruta del archivo a generar
Esto lo que es cargar en un control Image, un grfico del disco, y luego mediante otro botn, utilizando un control CommonDialog, guarda el archivo cargado en el Image en la ruta especificada: Colocar un Control CommonDialog1, un CommandButton, Command1 y Command2: control Image1 y dos controles
Cdigo en el formulario:
'Botn que carga el el archivo de imagen en el control Private Sub Command1_Click() On Error GoTo errSub With CommonDialog1 .DialogTitle = "Seleccionar un archivo"
Image
.Filter = "Archivos BMP|*.bmp|Archivos JPG|*.bmp|Todos|*.*" .ShowOpen If .FileName = "" Then Exit Sub Image1.Picture = LoadPicture(.FileName) End With Exit Sub
'Error errSub: If Err.Number = 53 Then MsgBox "No se puede cargar dicho archivo, verifique la ruta", vbCritical End If End Sub
guarda
el
contenido
del
control
Image
en
un
nuevo
Private Sub Command2_Click() With CommonDialog1 .DialogTitle = "Guardar el archivo" .Filter = "Todos los Archivos|*.*" .ShowSave If .FileName = "" Then MsgBox "No se especific ningn nombre", vbCritical End If If Image1.Picture <> 0 Then SavePicture Image1.Picture, .FileName Else MsgBox vbExclamation End If End With "No hay un grfico cargado para poder guardar",
Este otro ejemplo, guarda el contenido del portapapeles de windows, en un nuevo archivo de tipo BMP. Nota, debe haber una imagen vlida en el ClipBoard, si no dar error. Para probar, se puede copiar al portapapeles la imagen de la pantalla presionando la tecla Print Screen, y luego ejecutar el siguiente cdigo para generar el archivo
If
Clipboard.GetFormat(vbCFBitmap)
True
Then
'Guarda la imagen SavePicture Clipboard.GetData(vbCFBitmap), "c:\Archivo.BMP" Else 'Error: no coincide el Formato MsgBox "La imagen del portapales no es vlida", vbCritical, "No se pudo guardar" End If
El mtodo PaintPicture permite dibujar el contenido de un archivo de grficos en un Formulario, en un PictureBox o un objeto Printer.
El_objeto.PaintPicture La_Imagen, x1, y1, Ancho1, Alto1, x2, y2, Ancho2, Alto2, Opecode
El_Objeto: Es como se coment, donde vamos a dibujar el grfico, puede ser un form, un picture o en el objeto Printer La_Imagen Este parmetro es de tipo StdPicture, y es la imagen a dibujar. Los formatos pueden ser un archivo Gif, Bmp, Jpg, Wmf, Dib, Ico . Esta imagen puede estar cargada en un control, por ejemplo en un Picture, Form, Image, o tambin en una variable de tipo StdPicture, IpictureDisp o de tipo Picture. Ver mas adelante un ejemplo de esto ltimo de como utilizar grficos cargados en variables X1 e y1: Son las coordenadas de destino, es decir la posicin Izquierda y Arriba ( Left - Top ), donde se presentar la imagen a dibujar en el objeto destino Ancho1 y Alto1: Estos parmetros especifican el ancho y alto que tendr la imagen a dibujar. Estos parmetros son opcionales, y si se omiten, la imagen se dibujar en el objeto con las dimensiones que tenga. x2 e y2 : Son las coordenadas a tomar en la imagen, es decir es la zona de recorte de la misma. Con estos parmetros podemos copiar un trozo del grfico, si se omite, ya que es opcional, se toma la imagen completa. Ancho1 y Ancho2: Al igual que x2 e y2 son opcionales, y determinan el ancho y alto de la imagen en el objeto destino
Ejemplos:
Cargar en un control PictureBox un grfico. Luego al presionar un command1, se copiar la imagen del Picture en el formulario.
el
Command1_Click() formulario 0, 0
Como se ve en el cdigo, indicamos que copie la imagen del picture1 en el formulario, es decir en el primer parmetro le pasamos la propiedad Picture del control. Luego, se indica la posicin izquierda y Arriba ( Left - Top ) en el objeto destino, en este caso el Form. Los dems parmetros son opcionales, y como en este caso se omitieron, la imagen se copiar con las dimensiones que tenga, es decir una copia exacta. Si en cambio en ves de especificar 0 para x y 0 para y, le especificaramos 500, y 500, el resultado sera el siguiente:
Importante. Los valores para las dimensiones y posiciones del mtodo PaintPicture, ya sea para las coordenadas x1, y1, ancho1, alto1, ancho2 y alto2, depende de la propiedad ScaleMode del objeto destino. En el ejemplo anterior, se asume que se copi en la posicin izquierda y Top, usando Twips como medida, por lo que si haces la prueba y cambias la propiedad ScaleMode del formulario, por ejemplo a vbPixels, la imagen se copiar tomando dicho modo de escala, es decir en pixeles. Lo mas comn, es trabajar con pixeles, es mas cmodo.
Ejemplo 2:
Este ejemplo es igual al anterior, pero se utilizarn cuatro controles TextBox para indicar la posicin x1, y1, ancho1 y ancho2.
Nota: el cdigo no tiene una rutina de error para comprobar que algunos valores sean correctos, es decir si por ejemplo colocamos un valor que no sea numrico, dar error. tambin se producir un error en tiempo de ejecucin , si pasamos a PaintPicture, en Ancho1 y Alto1, el valor 0 Cdigo fuente en el formulario:
Me.Cls
'Copia el grfico en el formulario con los valores Me.PaintPicture Picture1.Picture, CSng(Text1), _ CSng(Text2), _ CSng(Text3), _ CSng(Text4) End Sub Private Sub Form_Load() ' Modo de escala del formulario en pixeles Me.ScaleMode = vbPixels End Sub
Ejemplo 3
Lo siguiente copia el grfico cargado en un PictureBox llamado Pic_Origen, a otro PictureBox llamado Pic_Destino.
'Copia el grfico con el ancho y alto que tenga _ Pic_Destino Pic_Destino.PaintPicture Pic_Origen, 0, 0, _ Pic_Destino.ScaleWidth, _ Pic_Destino.ScaleHeight End Sub
Como se ve, en los parmetros que especifican el alto y ancho, se pas las dimensiones que tenga Pic_destino, ( ScaleWidth y ScaleHeight )
Para dibujar una imagen centrada, por ejemplo en un formulario, podemos cargar la misma en una variable, como se coment antes, que sea de tipo Picture, IpictureDisp o StdPicture, y luego pasarla como parmetro a PaintPicture, y en los parmetros X1 e Y1 ( posicin Left y Top ) lo siguiente :
'Variable de tipo Picture para cargar mediante LoadPicture en _ tiempo de ejecucin un grfico Dim Una_Imagen As Picture Private Sub Command1_Click()
'Carga en la variable la imagen Set Una_Imagen = LoadPicture("c:\bart.jpg") ' Obtiene la posicin x e y para centrar la imagen Pos_x = (Me.ScaleWidth vbPixels)) / 2 Pos_y = (Me.ScaleHeight vbPixels)) / 2 ScaleX(Una_Imagen.Width, ScaleY(Una_Imagen.Height, vbHimetric, vbHimetric,
End Sub Private Sub Form_Load() ' Modo de escala en pixeles Me.ScaleMode = vbPixels Me.Caption = " Dibujar imagen centrada " End Sub Private Sub Form_Unload(Cancel As Integer) 'Elimina la imagen/Variable If Not Una_Imagen Is Nothing Then Set Una_Imagen = Nothing End Sub
En el cdigo anterior, se declara una variable de tipo Picture para almacenar el grfico mediante la funcin LoadPicture. Pero como es una variable de objeto, se debe utilizar la palabra clave Set. Tambin como se coment, el grfico a cargar debe ser un formato de imagen de los que soporta visual basic: bmp, gif, jpg etc... , no asi los Png o los tif por decir algunos. Luego en Pos_x y Pos_y se calcula el centro del formulario, restando al ancho del form, el ancho de la imagen dividido por 2 Nota: La propiedad Width y Height de la imagen, no devuelve un valor en pixeles, si no en una medida llamada Himetric. Por ese motivo se utiliza la funcin Scalex y Scaley para convertir el valor de dicha escala a pixeles, ya que en el FormLoad se estableci el modo de escala del Formulario, que en este caso es donde se va a dibujar, en vbPixels. Aclaro que no se si es la nica forma de convertir esto, pero al menos es la que conozco.
Ahora se ve un ejemplo para ver estos parmetros opcionales que no se vieron en los ejemplos anteriores, y que los mismos permiten seleccionar partes de la imagen a copiar en el objeto destino, es decir un rea especfica. Si no se entiende demasiado, seguro viendo la siguiente imagen se aclara un poco el tema:
Para el ejemplo colocar un Picture llamado Pic_Origen y cargarle un grfico. Agregar otro PictureBox llamado Pic_Destino. Tambin Cuatro TextBox en un arreglo: Text1(0), Text1(1), Text1(2) y Text1(3), para la posicin x, posicin y, para el ancho ancho y alto respectivamente. Estos valores sern en pixeles, y esos mismos valores se utilizarn para la funcin PaintPicture para dibujar dicha rea
Option Explicit Private Sub Dibujar_Imagen(x As Single, y As Single, _ ancho As Single, alto As Single) ' Limpia - Borra los dos picture Pic_Destino.Cls Pic_Origen.Cls
'dibuja el cuadrado en el Picture Origen Pic_Origen.Line (x, y)-Step(ancho, alto), vbRed, B 'Dibuja la porcin de imagen en Pic_Destino Pic_Destino.PaintPicture Pic_Origen.Picture, 0, 0, , , x, _ y, _ ancho, _ alto
End Sub Private Sub Form_Load() ' Escala en pixeles para los dos Picture Box Pic_Destino.ScaleMode = vbPixels Pic_Origen.ScaleMode = vbPixels 'Para que al dibujar con Line y PaintPicture mantenga la imagen Pic_Origen.AutoRedraw = True Pic_Destino.AutoRedraw = True 'algunos valores iniciales Text1(0) = 10 Text1(1) = 10 Text1(2) = 50 Text1(3) = 50 End Sub
Private Sub Text1_Change(Index As Integer) On Local Error Resume Next 'Llama a la sub que dibuja con PaintPicture Call Dibujar_Imagen(CSng(Text1(0)), _
El ejemplo anterior, al colocar valores en los TextBox para los ejes x e y, el ancho y alto, se dibuja mediante el mtodo Line el recuadro ( rea ) en el picture origen, luego se le pasan esos mismos valores a la funcin PaintPicture que dibuja esa porcin de imagen en el otro PictureBox
El siguiente ejemplo es similar al anterior, con la diferencia de que se captura un rea de un grfico cargado en un picture, y se dibuja en otro picturebox, pero estirando la imagen como si fuese un zoom. Para capturar el rea se utiliza un shape que se posiciona al mover el puntero del mouse sobre el picture que tiene la imagen:
Colocar dos PictureBox y un control shape. A un Picture renombrarlo a Pic_Origen y cargarle un grfico. Al otro picture renombrarlo a Pic_destino que es donde se copiar la porcin de la imagen. El shape dejarlo con el nombre Shape1
' Algunas propiedades para el shape With Shape1 .Width = 500 .Height = 500 .BorderWidth = 2 .BorderColor = vbRed 'Coloca el shape dentro de Pic_Origen Set .Container = Pic_Origen End With
Ancho = Shape1.Width Alto = Shape1.Height End Sub Private Sub Integer, _ Single) Pic_Origen_MouseMove(Button As X Integer, As Shift Y As As
Single,
' Mueve el Shape en el centro del puntero del mouse Shape1.Move X - Ancho / 2, Y - Alto / 2
'Dibuja en Pic_Destino Pic_Destino.PaintPicture Pic_Origen, 0, 0, _ Pic_Destino.ScaleWidth, Pic_Destino.ScaleHeight, _ (X - Ancho / 2), (Y - Alto / 2), Ancho, Alto End Sub
Alcance
Define la visibilidad y vida de una variable, procedimiento u objeto. Por ejemplo, una variable declarada Public est disponible para todos los procedimientos en todos los mdulos de todas las aplicaciones, a menos que Option Private Module est en efecto. Cuando Option Private Module est en efecto, el mdulo es privado y por lo tanto no es visible a los proyectos referidos. Las variables declaradas en procedimientos son visibles solamente dentro del procedimiento y pierden su valor entre llamadas a menos que se declaren Static. Enlaces relacionados : variables y constantes y tipos de datos
Aplicacin
Coleccin de cdigo y elementos visuales que trabajan juntos como un programa nico. Los programadores puede desarrollar y ejecutar aplicaciones dentro del entorno de programacin, mientras que los usuarios normalmente ejecuta aplicaciones como archivos ejecutables fuera del entorno de programacin.
aplicacin host
Cualquier aplicacin que acepta el uso de Visual Basic, Edicin para aplicaciones. Por ejemplo, Microsoft Excel, Microsoft Project, etc.
archivo de recursos
Archivo en un proyecto de Visual Basic con una extensin de nombre de archivo .res que puede contener mapas de bits, cadenas de texto usuario otros datos. Almacenando estos datos en un archivo separado, puede cambiar la informacin sin modificar el cdigo. Slo se puede asociar un archivo de recursos con un proyecto. enlaces relacionados : reproducir Sonido desde Archivos de recursos ,
archivo ejecutable
Una aplicacin basada en Windows que se puede ejecutar fuera del entorno de programacin. Un archivo ejecutable tiene una extensin de nombre de archivo .exe.
argumento
Constante, una variable o una expresin pasadas a un procedimiento. Ejemplo :
Sub Procedimiento(Parametro As String) MsgBox Parametro End Sub Private Sub Form_Load() Call Procedimiento("Mensaje") End Sub
biblioteca de objetos
Un archivo con una extensin de nombre de archivo .OLB que proporciona a los controladores de Automatizacin OLE (como Visual Basic) informacin sobre los objetos de Automatizacin OLE disponibles. Puede utilizar el Examinador de objetos para examinar el contenido de una biblioteca de objetos y obtener informacin sobre los objetos que proporciona.
biblioteca de tipos
Un archivo o un componente incluido en un archivo que contiene descripciones estndar de Automatizacin OLE de objetos, propiedades y mtodos expuestos. Los archivos de biblioteca de objetos (.olb) contienen bibliotecas de tipos.
clase
Definicin formal de un objeto. La clase acta como plantilla desde la que se crea una instancia de un objeto en tiempo de ejecucin. La clase define las propiedades del objeto y los mtodos utilizados para controlar su comportamiento. Enlaces relacionados : mdulos de clase
clase de base
Clase original de la que otras clases se derivan por herencia.
cdigo de caracteres
Nmero que representa un carcter en particular de un juego de caracteres, como el juego de caracteres ANSI.
coleccin
Objeto que contiene un conjunto de objetos relacionados. La posicin de un objeto en la coleccin puede cambiar cada vez que se produzca un cambio en la coleccin; por lo tanto, la posicin de un objeto especfico de la coleccin puede variar.
comentario
Texto agregado a un cdigo por un programador, que explica cmo funciona el cdigo. En Visual Basic cada lnea de comentario comienza con un apstrofo (') o con la palabra clave Rem seguida por un espacio. Ejemplo
'Esto es un comentario
comparacin de cadenas
Una comparacin de dos secuencias de caracteres. Utilice Option Compare para especificar comparacin de texto o binaria. En espaol, las comparaciones binarias reconocen maysculas y minsculas; las comparaciones de texto no reconocen maysculas ni minsculas.
complemento
Herramienta que agrega capacidades al entorno de programacin de Visual Basic. enlaces relacionados : MZ-Tolls - Complemento para el IDE del vb , complemento
para usar el scroll en el ide
configuracin regional
Conjunto de informacin que corresponde a un idioma y pas determinado. Los valores de la configuracin regional afectan al idioma de los trminos como palabras clave y define los valores de la configuracin regional especfica como los separadores decimales y de listas, formatos de fecha y ordenacin de caracteres. Los valores de la configuracin regional del sistema afectan al comportamiento del funcionamiento de la configuracin regional independiente, por ejemplo, cuando muestra nmeros o convierte cadenas a fechas. Establezca la configuracin regional del sistema utilizando los programas del Panel de Control que proporciona el sistema operativo. Aunque la configuracin regional del cdigo y del sistema generalmente tienen el mismo valor, puede ser diferentes en algunas situaciones. Por ejemplo, en Visual Basic edicin estndar y Visual Basic edicin profesional, el cdigo no se traduce del Ingls (Estados Unidos). La configuracin regional del sistema se puede establecer
al idioma y el pas del usuario, pero la configuracin regional del cdigo se establece siempre a Ingls (Estados Unidos) y no se puede cambiar. En este caso se utilizan los separadores del Ingls (Estados Unidos), marcadores de posicin de formatos y ordenacin. Enlaces relacionados : Obtener datos de la configuracin regional de windows ,
abrir el cuadro de dilogo con la funcin shell
constante
Un elemento con nombre que mantiene un valor constante a travs de la ejecucin de un programa. Las constantes pueden ser cadenas o literales numricos, otras constantes o cualquier combinacin que incluya operadores aritmticos o lgicos exceptuando Is y la exponenciacin. Cada aplicacin principal puede definir su propio conjunto de constantes. El usuario puede definir constantes adicionales con la instruccin Const. Puede utilizar constantes en cualquier lugar del cdigo en lugar de valores reales. Enlaces : variables y constantes
constante de cadena
Cualquier constante (definida con la palabra clave Const) que consista en una secuencia de caracteres contiguos interpretados como caracteres por s mismos, en vez de como algn valor numrico. Ejemplo
constantes intrnsecas
Constante proporcionada por una aplicacin. Las constantes de Visual Basic se enumeran en la biblioteca de objetos y se pueden mostrar con el Examinador de
objetos. Ya que no puede deshabilitar constantes intrnsecas, no puede crear una constante definida por el usuario con el mismo nombre.
contenedor
Objeto que puede contener otros objetos, por ejemplo un picturebox o Frame
control
Objeto que puede colocar en un formulario que tiene su propio conjunto de propiedades, mtodos y eventos reconocidos. Puede utilizar controles para recibir entradas del usuario, mostrar resultados y desencadenar procedimientos de evento. Puede manipular la mayora de los controles utilizando mtodos. Algunos controles son interactivos (responden a acciones del usuario) mientras que otros son estticos (slo son accesibles mediante cdigo).
control ActiveX
Objeto que coloca en un formulario para habilitar o deshabilitar la interaccin del usuario con una aplicacin. Los controles ActiveX tienen eventos que se pueden incorporar en otros controles. Estos controles tienen una extensin de nombre de archivo .ocx. Enlaces : Descargar controles activex , ocx
control dependiente
Control de datos protegidos que puede proporcionar acceso a un campo o campos especficos en una base de datos mediante un control Data. Normalmente un control de datos protegido depende de un control Data mediante sus propiedades DataSource y DataField. Cuando un control Data se mueve de un registro al siguiente, todos los controles dependientes conectados al control Data cambian para mostrar los datos de los campos del registro activo. Cuando los usuarios cambian los datos en un control dependiente y despus se mueven a un registro diferente, los cambios se guardan automticamente en la base de datos.
cuadro Objeto
Cuadro de lista que aparece en la esquina superior izquierda de la ventana Cdigo que enumera el formulario y los controles de formulario al que se adjunta el cdigo o un cuadro de lista colocado en la parte superior de la ventana Propiedades que enumera el formulario y sus controles.
cuadro Procedimiento
Cuadro de lista colocado en la esquina superior derecha de la ventana Cdigo y la ventana Depuracin que muestra los procedimientos reconocidos por el objeto mostrado en el cuadro Objeto.
DBCS
Juego de caracteres que utiliza 1 o 2 bytes para representar un carcter, que permite representar ms de 256.
declaracin
Cdigo no ejecutable que asigna nombre a una constante, variable o procedimiento y especifica sus caractersticas (como el tipo de datos). Para procedimientos DLL, las declaraciones especifican nombres, bibliotecas y argumentos.
directivas de compilacin
Comando utilizado para modificar la accin del compilador.
diseador
Proporciona un generador de ventana visual en el entorno de programacin de Visual Basic. Puede utilizar esta ventana para generar visualmente nuevas clases. Visual Basic generadores de formularios incorporados. Las ediciones Profesional y Empresarial de Visual Basic incluyen generadores de controles ActiveX y documentos ActiveX.
documento
Cualquier trabajo con un contenido autnomo creado con una aplicacin y se especifica con un nombre de archivo nico.
Empty
Un valor que indica que una variable Variant no tiene asignado ningn valor inicial. Las variables Empty son iguales a 0 (en un contexto numrico) o de longitud cero ("") (en un contexto de cadena).
en proceso
Ejecucin en el mismo espacio de direcciones como una aplicacin.
enfoque
La capacidad para recibir clics del mouse (ratn) o entradas por teclado en cualquier momento. En el entorno de Microsoft Windows, solamente una ventana, un formulario o un control tienen esta capacidad simultneamente. El objeto que "tiene el foco" se indica normalmente por un ttulo o una barra de ttulos resaltados. Se puede establecer el foco tanto por el usuario como por la aplicacin.
entorno de programacin
Parte de la aplicacin donde escribe el cdigo, crea controles, establece las propiedades del control y el formulario, etc... Esto es lo contrario a la ejecucin de la aplicacin.
error de sintaxis
Un error que ocurre cuando el sistema no comprende una lnea de cdigo que acaba de ser introducida. Observe que las reglas de sintaxis para palabras clave individuales estn definidas en la seccin de sintaxis del tema de la Ayuda asociado. Para obtener ayuda sobre una palabra clave desde el entorno de desarrollo, seleccione la palabra clave y presione F1.
error lgico
Un error de programacin que hace que el cdigo produzca resultados incorrectos o que detenga la ejecucin. Por ejemplo, un error puede ser causado por nombres de variables incorrectos, tipos de variables incorrectos, bucles infinitos, fallos en las comparaciones lgicas o problemas de matrices.
etiqueta de lnea
Una etiqueta de lnea se usa para identificar una sola lnea de cdigo. Puede ser cualquier combinacin de caracteres que comience con una letra y que termine con dos puntos (:). Las etiquetas de lnea no distinguen maysculas y minsculas y deben empezar en la primera columna.
Examinador de objetos
Un cuadro de dilogo que le permite examinar el contenido de una biblioteca de objetos para obtener informacin sobre los objetos que proporciona.
expresin
Una combinacin de palabras clave, operadores, variables y constantes, que produce una cadena, un nmero o un objeto. Una expresin puede realizar un clculo, manipular caracteres o verificar datos.
expresin Boolean
Expresin cuyos valores son True o False.
expresin de cadena
Cualquier expresin cuyo valor es equivalente a una secuencia de caracteres contiguos. Los elementos de la expresin pueden incluir una funcin que devuelve una cadena, un literal de cadena, una constante de cadena, una variable de cadena, una cadena Variant o una funcin que devuelve una cadena Variant (VarType 8).
expresin de fecha
Toda expresin que se puede interpretar como una fecha. Esto incluye cualquier combinacin de literales de fechas, nmeros que parecen fechas, cadenas que parecen fechas y fechas devueltas por funciones. Una expresin de fecha se limita a nmeros o cadenas, en cualquier combinacin, que pueda representar una fecha desde el 1 de enero del ao 100 hasta el 31 de diciembre del ao 9999. Las fechas se guardan como parte de un nmero real. Los valores a la izquierda del decimal representan la fecha; los valores a la derecha del decimal representan la hora. Los nmeros negativos representan las fechas anteriores al 30 de diciembre de 1899. enlaces relacionados : funciones de vb para tratamiento de Fechas , funciones
tiles para calcular fechas
expresin de hora
Cualquier expresin que puede ser interpretada como una hora. Esto incluye cualquier combinacin de literales de hora, nmeros que parecen horas, cadenas que parecen horas y horas devueltas por funciones. Las horas se almacenan como parte de un nmero real. Los valores a la derecha del decimal representan la hora. El medioda (12:00 P.M.) se representa con 0,5. Enlaces : Ver enlace anterior
expresin de inspeccin
Expresin definida por el usuario que le permite observar el comportamiento de una variable o expresin. Las expresiones de inspeccin aparecen en la ventana Inspeccin del Editor de Visual Basic y se actualiza automticamente cuando entra en el modo de interrupcin. La ventana Inspeccin muestra el valor de una expresin dentro de un contexto determinado. Las expresiones de inspeccin no se guardan con el cdigo.
expresin de objeto
Una expresin que especifica un objeto particular. Esta expresin puede incluir cualquier elementos del objeto. Por ejemplo, si la aplicacin tiene un objeto Aplicacin que contiene un objeto Documento, el cual a su vez contiene un objeto Texto.
Cualquier expresin que se pueda evaluar a datos numricos, de cadena o de fecha, as como a los valores especiales Empty y Null.
expresin numrica
Cualquier expresin que puede ser evaluada como un nmero. Los elementos de una expresin pueden incluir cualquier combinacin de palabras clave, variables, constantes y operadores que dan como resultado un nmero.
formato automtico
Caracterstica que da formato a cdigos automticamente, a medida que se introducen, colocando maysculas en la primera letra de las palabras clave, igualando los espacios, agregando la puntuacin y configurando los colores del primer plano y del fondo.
formulario
Ventana o cuadro de dilogo. Los formularios son contenedores para controles. Una formulario de interfaz de mltiples documentos (MDI) tambin puede actuar como un contenedor para formularios secundarios y algunos controles.
Pgina 2 : Indice : I - P
icono
Representacin grfica de un objeto o un concepto, que se utiliza normalmente para representar aplicaciones minimizadas en Microsoft Windows. Un icono es un mapa de bits con un tamao mximo de 32 x 32 pxeles. Los iconos tienen una extensin de nombre de archivo .ico.
identificador
Elemento de una expresin que hace referencia a una constante o una variable.
indicador de margen
Icono mostrado en la barra del Indicador de margen en la ventana Cdigo. Los indicadores de margen proporcionan guas visuales durante la modificacin del cdigo.
instruccin
Una unidad sintcticamente completa que expresa un tipo de accin, declaracin o definicin. Normalmente una instruccin tiene una sola lnea aunque es posible utilizar dos puntos (:) para poner ms de una instruccin en una lnea. Tambin se puede utilizar un carcter de continuacin de lnea (_) para continuar una sola lnea lgica en una segunda lnea fsica. Ejemplo :
Dim cadena As String cadena = "Una linea" & _ "Otra" & _ "otras mas"
Juego de caracteres de 8 bits del Instituto Americano de Normas Nacionales (ANSI), usado por Microsoft Windows, que permite representar hasta 256 caracteres (0255) con el teclado. Los primeros 128 caracteres (0127) corresponden a las letras y smbolos de un teclado estndar de EE.UU. Los siguientes 128 caracteres (128255) representan caracteres especiales, como letras de otros alfabetos, acentos, smbolos de moneda y fracciones.
lnea de comandos
Informacin de ruta, nombre de archivo y argumento proporcionada por el usuario para ejecutar un programa.
literal de cadena
Cualquier expresin que consiste en una secuencia de caracteres contiguos rodeados de comillas y que se interpreta literalmente como los caracteres encerrados entre comillas.
As
String
literal de fechas
Toda secuencia de caracteres con un formato vlido ubicada dentro de smbolos de nmero(#). Formatos vlidos incluyen el formato de fecha especificado por la configuracin correspondiente a la localidad del cdigo o al formato de fecha universal. Por ejemplo, #31/12/92# es el literal de fecha que representa el 31 de diciembre de 1992, en este caso, Espaol-Espaa es la configuracin correspondiente a la
localidad de la aplicacin. El uso de literales de fecha maximiza la transportabilidad a travs de los diferentes lenguajes nacionales.
llamada a procedimiento
Instruccin en cdigo que indica a Visual Basic que ejecute un procedimiento. Ejemplo
Private Sub Form_Load() Call Procedimiento("Valor") End Sub Sub Procedimiento(sMensaje As String)
MsgBox sMensaje
End Sub
mapa de bits
Imagen representada por pxeles y almacenada como una coleccin de bits en la que cada bit corresponde a un pxel. En equipos con pantalla en color, a cada pxel le corresponde ms de un bit. Normalmente un mapa de bits tiene una extensin de nombre de archivo .bmp.
matriz
Conjunto de elementos que tienen el mismo tipo de datos y que estn ordenados secuencialmente. Cada elemento de una matriz posee un nmero de ndice nico
que lo identifica. Los cambios efectuados a un elemento de una matriz no afectan a los dems elementos. Enlaces relacionados : Arreglos y matrices vectores , Desordenar una matriz , Declarar una funcin como matriz , ordenar un vector , Eliminar duplicados ,
funcin ParamArray
matriz de controles
Grupo de controles que comparten un nombre, tipo y procedimientos de evento comunes. Cada control en una matriz tiene un nmero de ndice nico que se puede utilizar para determinar qu control reconoce un evento. Enlaces relacionados : Pasar matriz de controles como parmetro , Crear matriz de
controles
MDI secundario
Formulario contenido dentro de un formulario MDI en una aplicacin de interfaz de mltiples documentos (MDI). Para crear un formulario secundario, establezca la propiedad MDIChild del formulario MDI a True. Tags : Ejemplo de formulario MDI
metarchivo
Archivo que almacena una imagen como objetos grficos tanto lneas, crculos y polgonos como pxeles. Hay dos tipos de metarchivos, estndar y ampliado. Los metarchivos estndar normalmente tiene una extensin de nombre de archivo .wmf. Los metarchivos ampliados normalmente tiene una extensin de nombre de archivo .emf. Los metarchivos preservan una imagen ms exacta que los pxeles cuando la imagen se cambia de tamao.
mtodo
Un procedimiento que se aplica a un objeto.
mtodo grfico
Mtodo que opera en objetos como Form, PictureBox o Printer y ejecuta operaciones de dibujo en tiempo de ejecucin como animacin o simulacin. Los mtodos grficos son Circle, Cls, Line, PaintPicture, Point, Print y PSet.
miembro
Los elementos que constituyen un conjunto, un objeto o un tipo definido por el usuario.
modo de interrupcin
Suspensin temporal de la ejecucin de un programa mientras est en la etapa de desarrollo. En el modo interrumpir, se puede examinar, depurar, volver a configurar, incrementar o continuar una ejecucin. Se entra en modo interrumpir: Al encontrar un punto de interrupcin durante la ejecucin del programa. y y Al presionar Ctrl+Pausa durante la ejecucin del programa. Al encontrar una instruccin Stop o un error de ejecucin no detectado durante la ejecucin del programa. y Agregando una expresin Interrumpir cuando el valor sea
Verdadero. La ejecucin se detiene cuando el valor de la expresin bajo inspeccin cambia y se convierte en True. y Agregando una expresin Interrumpir cuando el valor cambie. La ejecucin se detiene cuando inspeccin cambie. el valor de la expresin bajo
mdulo
Un conjunto de declaraciones y procedimientos.
mdulo de clase
Mdulo que contiene la definicin de una clase (sus definiciones de propiedad y mtodo). Enlaces : Manual sobre mdulos de clase
mdulo de cdigo
Mdulo que contiene cdigo pblico que se puede compartir entre todos los mdulos de un proyecto. Los mdulos de cdigo se denominan mdulos estndar en versiones posteriores de Visual Basic.
mdulo de formulario
Archivo en un proyecto de Visual Basic con una extensin de nombre de archivo .frm que puede contener descripciones grficas de un formulario; sus controles y sus valores de propiedad; declaraciones a nivel de formulario de constantes, variables y procedimientos externos; eventos y procedimientos generales.
mdulo de objeto
Mdulo que contiene un cdigo especfico a un objeto, por ejemplo, mdulo de clase, mdulo de formulario y mdulo de documento. Los mdulos objeto contienen el cdigo detrs de sus objetos asociados. Las reglas para mdulos objeto difieren de las de los mdulos estndar.
mdulo estndar
Un mdulo que contiene solamente declaraciones y definiciones de procedimiento, tipo y datos. Las declaraciones y definiciones a nivel de mdulo de un mdulo estndar son Public de manera predeterminada. Un mdulo estndar se denomina mdulo de cdigo en versiones anteriores de Visual Basic.
nivel de mdulo
Cdigo en la seccin de declaraciones de un mdulo. Cualquier cdigo fuera de un procedimiento se denomina cdigo de nivel de mdulo. Las declaraciones se deben colocar primero, seguidas de los procedimientos.
nivel de procedimiento
Instrucciones localizadas dentro de los procedimientos Function, Property o Sub. Generalmente, las declaraciones aparecen primero, seguidas de asignaciones y otro cdigo ejecutable. Observe que el cdigo de nivel de mdulo reside fuera del bloque de procedimiento.
Null
Un valor que indica que una variable contiene datos no vlidos. Null es el resultado de una asignacin explcita de una variable como Null o cualquier operacin entre expresiones que contienen Null.
nmero de archivo
Nmero utilizado en la instruccin Open para abrir un archivo. Utilice los nmeros de archivo en el intervalo 1255 inclusive, para archivos no accesibles desde otras aplicaciones. Utilice nmeros de archivo en el intervalo 256511 inclusive, para archivos accesibles desde otras aplicaciones. Enlaces relacionados : trabajar con Archivos en visual basic
nmero de error
Un nmero completo en el intervalo que comprende de 0 a 65.535, inclusive, que se corresponde con la propiedad Number del objeto Err. Cuando se combina con la propiedad Description del objeto Err, este nmero representa un mensaje de error determinado.
nmero de lnea
Un nmero de lnea se usa para identificar una sola lnea de cdigo. Este nmero puede ser cualquier combinacin de dgitos que sea nica dentro del mdulo donde se usa. Los nmeros de lnea deben comenzar en la primera columna.
objeto
Combinacin de cdigo y datos que se pueden tratar como una unidad, por ejemplo, un control, un formulario o un componente de una aplicacin. Cada objeto se define por una clase.
objeto ActiveX
Objeto que se expone a otras aplicaciones o herramientas de programacin mediante interfaces de Automatizacin. Enlaces relacionados : Tips para crear controles ocx , Descargar ocx
objeto de Automatizacin
Objeto que se ofrece para otras aplicaciones o herramientas de programacin a travs de las interfaces de Automatizacin.
objeto insertable
Objeto de aplicacin que es un tipo de control personalizado, como una hoja de clculo de Microsoft Excel.
Objeto que es el origen de eventos que se producen en respuesta a una accin. Una propiedad devuelve un origen de evento. Por ejemplo, la propiedad CommandBarEvents devuelve el objeto CommandBarEvents.
operador de comparacin
Smbolo o un carcter que indica la relacin entre dos o ms valores, o expresiones. Esto operadores incluyen menor que (<), menor o igual que (<=), mayor que (>), mayor o igual que (>=), distinto (<>) e igual (=). Los operadores de comparacin adicionales incluyen Is y Like. Observe, sin embargo, que Is y Like no se pueden utilizar como operadores de comparacin en la instruccin Select Case.
orden
Un principio de secuencia que se usa para ordenar datos; por ejemplo, alfabtico, numrico, ascendente, descendente, etc.
orden de tabulacin
Orden en el que el enfoque se mueve de un campo al siguiente cuando presiona Tab o Mays+Tab. Enlaces relacionados. : Cambiar el foco al otro textbox al presionar enter
orden z
Disposicin visual de controles en un formulario a lo largo del eje z del formulario (profundidad). El orden z determina qu controles estn por delante de los otros. Ejemplo :
Picture1.ZOrder Picture2.ZOrder 1
palabra clave
Una palabra o un smbolo reconocido como parte del lenguaje de programacin; por ejemplo, una instruccin, un nombre de funcin o un operador.
panel de cdigo
Panel contenido en una ventana de cdigo que se utiliza para introducir y modificar cdigo. Una ventana de cdigo puede contener uno o ms paneles de cdigo.
parmetro
Nombre de variable por el cual un argumento de procedimiento se conoce dentro del procedimiento. Esta variable recibe el argumento que se pasa dentro del procedimiento. Su alcance termina cuando el procedimiento termina.
pi
Pi es una constante matemtica aproximadamente igual a 3,1415926535897932.
pila
Cantidad fija de memoria utilizada por Visual Basic para preservar las variables locales y los argumentos durante llamadas a procedimientos.
por referencia
Modo de pasar un argumento a un procedimiento pasando su direccin en vez de su valor. Esto hace posible el acceso del procedimiento a la variable real. Como resultado, el valor real de la variable puede ser cambiado por el procedimiento al cual se pasa. Enlaces Ejemplo
por valor
Modo de pasar un argumento a un procedimiento pasando su valor en vez de su direccin. Esto hace posible el acceso del procedimiento a una copia de la variable. Como resultado, el valor actual de la variable no puede ser cambiado por el procedimiento al cual se pasa.
Enlace : Ejemplo
Private
Variables que slo son visibles en el mdulo que se declaran.
procedimiento
Una secuencia con nombre de instrucciones que se ejecutan como una unidad. Por ejemplo, Function, Property y Sub son todos tipos de procedimientos. Un nombre de procedimiento siempre se define a nivel de mdulo. Todo el cdigo ejecutable debe estar contenido en un procedimiento. Los procedimientos no se pueden anidar dentro de otros procedimientos. Enlaces : Ejemplo
procedimiento Function
Procedimiento que ejecuta una tarea especfica dentro de un programa y devuelve un valor. Un procedimiento Function comienza con una instruccin Function y finaliza con una instruccin End Function.
procedimiento general
Procedimiento que se debe llamar explcitamente desde otro procedimiento. Por el contrario, un procedimiento de evento se invoca automticamente en respuesta a una accin de usuario o del sistema.
procedimiento Property
Procedimiento que crea y manipula propiedades para un mdulo de clase. Un procedimiento Propiedad comienza con una instruccin Property Let, Property Get o Property Set y termina con una instruccin End Property. Enlaces : Crear Propiedades
procedimiento Sub
Procedimiento que ejecuta una tarea especfica dentro de un programa, pero devuelve un valor no explcito. Un procedimiento Sub comienza con una instruccin Sub y termina con una instruccin End Sub.
propiedad
Un atributo con nombre de un objeto. Las propiedades definen caractersticas de objetos, como tamao, color y ubicacin en la pantalla, o comportamientos de objetos, como si est o no habilitado.
proyecto
Un conjunto de mdulos.
proyecto de referencia
El proyecto actual se denomina proyecto de referencia directa. La forma de crear un vnculo con un proyecto depende de la aplicacin principal. Por ejemplo, en Excel puede hacer referencia directamente a un proyecto eligindolo en el cuadro de dilogo Referencias del men Herramientas. Los smbolos Public de un proyecto referido directamente son visibles para el proyecto de referencia directa, pero los smbolos Public de un proyecto de referencia directa no son visibles para un proyecto referido directamente.
Public
Variables declaradas utilizando la instruccin Public que son visibles a todos los procedimientos en todos los mdulos y en todas las aplicaciones a menos que Option Private Module est activa. En este caso, las variables son pblicas slo dentro del proyecto en el que residen.
punto
Un punto es 1/72 de pulgada. Los tamaos de fuente normalmente se miden en puntos.
punto de interrupcin
Una lnea seleccionada del programa en la cual la ejecucin del programa se detiene automticamente. Los puntos de interrupcin no se guardan con su cdigo.
Listado de trminos y definiciones de visual basic, del archivo de ayuda VEENDF98.CHM ( ordenados alfabeticamente )
Pginas : 1 - 2 - 3 Pgina 1 : Indice : R - Z
registro
En Windows versin 3.1, la informacin de registro OLE y las asociaciones de archivo se almacenan en la base de datos de registro, y la configuracin del programa se almacena en archivos de inicializacin del sistema (.INI) de Windows. En Windows 95, el registro de Windows sirve como base de datos central de configuracin para informacin especfica del ordenador, de usuario y de aplicacin, incluyendo la informacin que previamente se situaba en la base de datos de registro y en los archivos .ini. enlaces : Crear archivos ini , control ocx para trabajar con archivos ini
ruta de acceso
Una expresin de cadena que especifica la ubicacin de un directorio o carpeta; puede incluir una especificacin de unidad de disco.
semilla
Un valor inicial usado para generar nmeros pseudoaleatorios. Por ejemplo, la instruccin Randomize crea un nmero semilla que usa la funcin Rnd para crear secuencias de nmeros pseudoaleatorios nicas.
Enlaces : crear nmeros aleatorios no repetidos , otro ejemplo del uso de RND
separadores de fecha
Caracteres utilizados para separar el da, el mes y el ao cuando se da formato a valores que representan fechas. Los caracteres estn determinados por las configuraciones de sistema o por la funcin Format
tecla de acceso
Tecla que mientras mantiene presionada la tecla Alt permite al usuario abrir un men, ejecutar un comando, seleccionar un objeto o moverse a un objeto. Por ejemplo, Alt+A abre el men Archivo.
tiempo de compilacin
Momento en el que el cdigo de origen se traduce a cdigo de ejecucin.
tiempo de diseo
El tiempo durante el cual se genera una aplicacin en el entorno de desarrollo agregando controles, estableciendo propiedades de controles o formularios, etc. Por el contrario, durante el tiempo de ejecucin se interacta con la aplicacin como lo hara un usuario.
tiempo de ejecucin
El tiempo durante el cual se est ejecutando cdigo. Durante el tiempo de ejecucin, se interacta con el cdigo como lo hara un usuario.
tipo de datos
Caracterstica de una variable que determina qu tipo de datos puede tener. Los tipos de datos incluyen Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String, Object, Variant (predeterminado) y tipos definidos por el usuario, as como tipos especficos de objetos. Enlaces : tipos de datos en vb
Tipo de datos que slo tiene dos valores posibles, True (-1) o False (0). Las variables Boolean se almacenan como nmeros de 16 bits (2 bytes).
Un entero de cuatro bytes, un nmero completo entre -2.147.483.648 y 2.147.483.647. El carcter de declaracin de tipo es (&) que representa un tipo Long en Visual Basic.
tipo de objeto
Un tipo de objeto expuesto por una aplicacin por medio de la Automatizacin. Por ejemplo, Aplicacin, Archivo, Intervalo y Hoja de clculo. Utilice el Examinador de objetos o consulte la documentacin de la aplicacin para obtener una lista completa de objetos disponibles.
tipo numrico
Cualquier tipo de datos numrico intrnseco (Byte, Boolean, Integer, Long, Currency, Single, Double o Date) cualquier subtipo numrico Variant (Empty, Integer, Long, Single, Double, Currency, Decimal, Date, Error, Boolean o Byte).
twip
Unidad de medida de pantalla que es igual a 1/20 de punto. Un twip es una unidad de pantalla independiente utilizada para asegurar que la ubicacin y proporcin de los elementos de la pantalla en la aplicacin son los mismos en todos los tipos de pantallas. Hay aproximadamente 1440 twips en una pulgada lgica o 567 twips en un centmetro lgico (la longitud de un elemento de pantalla que mide una pulgada o un centmetro cuando se imprime).
Unicode
Carcter estndar de la Organizacin internacional de estndares (International Standards Organization) (ISO). Unicode utiliza un esquema de cdigos de 16-bits (2 bytes) que permite 65.536 espacios de caracteres distintos. Unicode incluye las representaciones de signos de puntuacin, smbolos matemticos y dingbats, con amplio espacio para futuras ampliaciones.
variable
Un lugar de almacenamiento con nombre que puede contener cierto tipo de datos que puede ser modificado durante la ejecucin del programa. Cada variable tiene un nombre nico que la identifica dentro de su nivel de mbito. Puede especificar un tipo de datos o no. Nombres de variable deben comenzar con un carcter alfabtico, deben ser nicos dentro del mismo mbito, no deben contener ms de 255 caracteres y no pueden contener un punto o carcter de declaracin de tipo.
variable de mdulo
Una variable declarada fuera del cdigo de los procedimientos Function, Sub o Property. Las variables de mdulo se deben declarar antes de cualquier procedimiento en el mdulo. Existen mientras el mdulo est cargado, y son visibles en todos los procedimientos del mdulo.
variable de objeto
Variable que contiene una referencia a un objeto.
ventana acoplada
Ventana que se adjunta al marco de la ventana principal.
ventana Propiedades
Ventana que se utiliza para mostrar o cambiar las propiedades de un formulario seleccionado en tiempo de diseo. Algunos controles personalizados tienen ventanas Propiedades personalizadas.
ventana Proyecto
Ventana que muestra una lista del formulario, la clase y los mdulos estndar; el archivo de recursos y las referencias en el proyecto. Los archivos con extensiones de nombre de archivo .ocx y .vbx no se muestran en la ventana Proyecto.
ventana vinculada
Ventana que se combina con otra ventana distinta de la ventana principal.
verificacin de sintaxis
Es una caracterstica que verifica el cdigo para asegurarse de que la sintaxis es correcta. Si la verificacin de sintaxis est activada, se mostrar un mensaje cuando se introduzca cdigo que tenga un error de sintaxis y la parte de cdigo correspondiente aparecer resaltada.