de Visual Basic 0.6

download de Visual Basic 0.6

of 198

Transcript of de Visual Basic 0.6

Contenido1 - 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 - IntroduccinBienvenido 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.

2 - Breve historia y alcance del lenguajeLas siglas Basic significan (beginner's all-purpose simbolic instruction Codic). El lenguaje Basic fue creado en el ao 1964 y se modific varias veces hasta que en el ao 1978 se estableci el Basic estndar. Este anteriormente se llamo "gwbasic", luego "QuickBasic" y asi fue evolucionando y finalmente llegamos al "Visual Basic", todas con sus diferentes versiones, la 1, 2 , etc.. hasta la 6.0

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

3 - La interface del Vb - El IDEEl IDE significa interface de entorno de desarrollo, y se refiere a la interface del propio programa, es decir a las distintas partes que componen el propio Visual Basic para poder desarrollar nuestros proyectos (es el entorno de trabajo) En esta parte, se describir un pantallazo de las secciones principales de este entorno Para inicializar el programa, luego de haberlo instalado obviamente, desde el men inicio > programas > microsoft visual basic 6.0, te pods crear un Acceso directo en tu escritorio para tenerlo mas a mano.

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.

4 - Formularios, propiedades, mtodos y eventos

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.

5 - Pasos para realizar el ejemplo1 - Abr el Visual Basic y te aparecer una ventana para que puedas elegir el tipo de Proyecto o programa que quers realizar. Como vers hay muchas opciones, nosotros elegiremos la opcin Estndar EXE como muestra la imagen:

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

Private End Sub

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

Msgbox "Mi primer programa"

El cdigo tendra que quedarte de la siguiente manera

Private MsgBox End Sub "Mi

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

Cuando ejecuts el programa y presions el Command1, se mostrar el mensaje.

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.

6 - Sobre los proyectos en Visual BasicPor ltimo para cerrar esta intruduccin muy bsica una aclaracin sobre los Proyectos. Cada vez que inicias un programa nuevo Standar Exe Visual Basic Hace lo siguiente: Crea un formulario llamado "Form1" y tambin un proyecto de trabajo llamado por defecto "Proyecto1". Cuando lo guards, desde el men Archivo > Guardar proyecto, se crear un archivo llamado "proyecto1.vbp", otro archivo con los formularios que tengas en el proyecto, en nuestro caso "Form1.frm" y otro archivo en este caso "Proyecto1.vbw" que es un archivo de configuracin. Este ltimo archivo a nosotros no nos interesa, ya que lo usa Visual Basic para configurar el proyecto cada vez que lo abrimos. Para guardar proyectos, hay que ir al men archivo y elegir guardar proyecto, tambin te pedir que guardes el formulario form1.frm . En ambos casos puedes asignarle el nombre que quieras.

Contenido1.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

1 - Formularios , propiedades mtodos y eventosEn esta seccin se ven las caractersticas principales de los Formularios. Como vimos en la pgina anterior, los formularios son las ventanas que contienen a otros controles y en ellos podemos incluir controles de comando, como botones, cajas de texto, controles para bases de datos, y por supuesto el cdigo necesario de nuestros programas. Tambin se dijo, los controles e inclusive los Formularios tienen sus propias caractersticas, como las propiedades (un ejemplo el color del fondo o propiedad Backcolor), sus eventos (el evento load que se ejecuta cuando cargamos el formulario en memoria), y sus mtodos (por ejemplo el mtodo show que es para mostrar el formulario y el mtodo hide que es para ocultarlo, en el caso de un formulario. Ac hay que hacer una cosa muy importante. Cuando se comienza a programar, suele ser muy casual confundir mtodos y eventos y no son lo mismo. Los mtodos son funciones propias de cada objeto, por ejemplo el mtodo hide de un formulario no lo posee un command button. Con los eventos suele ocurrir lo mismo. Un formulario posee el evento load y un command button no lo posee (a no ser que pertenezca un arreglo de controles pero ese es otro tema que se ver en otra ocacin). Pero otros eventos si los comparten ambos. Siguiendo el ejemplo del formulario y el botn, los dos tienen un evento llamado click, y todas las instrucciones de cdigo que escribamos en la rutina de cdigo o procedimiento que estn bajo este evento, se ejecutarn cuando hagamos un click con el mouse sobre el objeto. El evento Click lo poseen la mayora de los controles, pero no tiene porque ser as.

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.

1.1 - Ejemplo sobre mtodos y eventos

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.

1.2 - Otro ejemplo sobre formulariosAhora vamos a hacer un programa de ejemplo parecido al anterior, pero con algunas variantes. En la primera parte, el programa que hicimos consista en un formulario que tena un botn (Command1), y al presionarlo mostraba otro formulario . Este lo llevamos a cabo con el mtodo show que tienen los formularios y sirve para mostrarlos en pantalla. El objetivo de este programa es mostrar cuatro mtodos que poseen los formularios, ellos son: Load, Unload, Hide y Show. El mtodo Load tiene la funcin de cargar el formulario en la memoria y unload descargarlo de la memoria. Esto no significa que si el mtodo load carga el formulario, automticamente se muestre en la pantalla, quiere decir que solo permanece cargado en memoria, luego para mostrarlo tendramos que utilizar el mtodo show por ejemplo (hay otras opciones para hacer lo mismo pero no vienen al caso detallarlas para este ejemplo).

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.

El cdigo completo sera el siguiente:

'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

lo muestra command1_click() Form2 Sub el Form2 command2_click() Sub

y

muestra Sub

completamente Sub

de

la

memoria

el Form2 command3_click() Form2 Sub

pero

no

descarga Sub

el

Form2

de la memoria command4_click()

Nota Sobre los comentarios en el cdigo

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.

2 - Controles Estndar de Visual basicPara ver una descripcin bsica de los controles estndar de visual basic, es decir los que aparecen por defecto en el cuadro de controles en la parte izquierda del IDE, pods acceder a esta seccin apartada del tutorial en el siguiente enlace, donde se explica el funcionamiento bsico de los mismos con algunos ejemplos prcticos: Tutorial de los controles de Visual Basic Tambin en la misma pgina hay ejemplos de los controles no estndar, es decir controles que debemos incorporarlos nosotros y que visual basic no los incorpora por defecto al iniicar un proyecto

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

Dim numero As Integer

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:

Dim numero = 1500

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

y

y

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:

Dim Dim num1 num2

num1 num2 = = con la suma

As As

Integer Integer 10 20

'se mostrar un mensaje resultado MsgBox num1 + num2

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.

Dim Dim 'le nombre apellido 'mostramos un MsgBox MsgBox apellido

nombre apellido establecemos = = mensaje con el

As As

String String valores "Carlos" "Peres" de las variables nombre

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.

Dim Nombre Dim Apellido 'Le establecemos Nombre Apellido = "Peres"

As As valores =

Integer Integer numericos "Carlos"

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.

Dim Edad As Byte

Para asignarle un valor a esa variable:

Edad = 88

Para mostrar el valor de la variable Edad en un control TextBox cuando presionamos un botn Command1, sera de esta manera:

Private 'Declaramos Dim

Sub la Edad As

Command1_Click() variable Byte

'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.

Estructura If - Then - Else

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

If msgbox else msgbox end if

Label1.Caption "mi label "mi label NO

= tiene tiene un un

"50" valor valor

de de

Then 50" 50"

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.

while ...se wend

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

Private Dim contador While 'Mostramos Me.Caption en el

As

Sub Integer

'Declaramos

Command1_Click() la variable Text1 variable en + contador contador 1 1

contador formulario la = el valor = de

la

'Incrementamos contador Wend MsgBox

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

Private Dim For

Sub contador contador = = 0 As

Command1_Click() Integer To 1000 contador contador

Label1.Caption Next End Sub

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

Dim For MsgBox Next

contador contador "La variable = Contador

As 1 vale: " To &

Integer 10 contador contador

MsgBox "Fin del bucle For"

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

String Text1 Nombre "Jorge"

ejecut ejecut

la la

clusula clusula

case: case:

" "

& &

Nombre "Pedro" Nombre

"Carolina" ejecut la clusula case: " & Nombre

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:

Private Dim x Select = 10 x 'Le

Sub As ponemos Case un valor

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

5

y

10 el 10" seccin 20 ejecuta 30 tampoco Select

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

6 - Operadores de Visual basicLos operadores nos permiten operar, validar, comparar, asignar, distinguir, etc.., los datos e instrucciones de cdigo de nuestros programas. A continuacin los operadores mas importantes.

Operadores aritmticos Estos operadores nos permiten trabajar con clculos matemticos como la suma (+), resta (-), divisin (/) y multiplicacin (*). Ejemplos:

a = b = c = a + b ' en este caso la variable c contendra el valor 20

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

z = x * y ' La Variable z vale 2000

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

"mara") bloque igual IF a

Then si la

'solo se ejecutar el variable 'x vale 10 y la End If If (m = 10)

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 (), distinto a() Ejemplos:

If 'si 'se el

label1.Caption control label1 ejecutar el en

=

"06/08/1978"

Then fecha aqu

su caption contiene esa cdigo que este

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 > Contenido1 - 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 OpenEsta 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 :

Open "c:\prueba.txt" For Input As #1

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:

Open "archivo1.txt" For Open "otroarchivo1.txt" For Input As #1

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:

Close #1, #2, #3

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

Open "La ruta de un archivo" For Input As #NumeroArchivo

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.

4 - Diferentes tipos de acceso

Append: esta sentencia se utiliza para agregar informacin a un archivo de texto. Ejemplo :

Open "c:\miarchivo.txt" For Append As #1

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:

Open "c:\miarchivo.txt" For Input As #2

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.

5 - Leer datos de un archivo utilizando Line 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:

Dim Open While Line Wend Close #1

mivariable "c:\nombres.txt" For Not Input #1,

As Input As

String #1 EOF(1) mivariable

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

Line Input #1, nuestravariable

6 - Ejemplo para leer un archivo de texto utilizando Line Input

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

Public Function Contar_Lineas(ByVal strTextFile As String) As Long

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

7 - Leer el contenido de un archivo de texto con la funcin InputLa funcin input, a diferencia de Line Input que Lee por lnea, Input lee todo el contenido del archivo de una sola ves, es decir no necesitamos, como en el ejemplo anterior, utilizar un bucle. El modo de usarlo es el siguiente: Primero se abre el archivo con Open, por ejemplo:

Open Path_Archivo For Input As #1

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:

On Error GoTo Err_Sub Dim n_File As Integer Dim Contenido As String

'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

8 - Escribir datos en archivos de texto

Para escribir datos en archivos de texto se utiliza la sentencia Print y Write. Ejemplo:

Dim Dim

nombre edad

As As

String Integer

Dim telefono As String

Open "c:\miarchivo.txt" For Append As #1

Print

#1,

"esta

es

una

lnea"

Print

#1,

"esta

es

otra

lnea"

Print #1, nombre, edad, telefono Close #1

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:

Dim nombre Dim apellido As String apellido =

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:

Write #1, "Un dato", "Otro dato", "Otro mas"

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.

9 - Archivos aleatorios o directosA diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de registros. Como habamos dicho en el captulo anterior para leer datos de un archivo secuencial haba que leer todo el archivo, es decir que no podamos leer por ejemplo los datos que estuviesen en la lnea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial. En cambio los archivos aleatorios, tambin llamados archivos directos, almacenan los datos con una estructura diferente. Los datos se guardan en registros mediante una estructura definida de tipo Type (estructura definida por nosotros) tambin llamada UDT Por ejemplo si tuviesemos 25 registros, cada uno con datos (apellido, email, telefono,etc..), y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16 registros anteriores, ganando con ello mas velocidad y teniendo una estructura de datos definida. Para abrir un archivo aleatorio para trabajar con l, se utiliza la sentencia Open con algunos cambios en lo que se refiere a los archivos secuenciales Ejemplo:

open "elarchivo.dat" for random as #1 len = len(mivariable)

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:

Private nombre apellido direccin edad End Type As As As

Type String String String As * * *

t_clientes 20 15 30 Integer

Despus creamos una variable llamada clientes de tipo t_clientes

Dim clientes As t_clientes

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

Open "datos.dat" For Random As #1 Len = Len(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.

10 - Grabar datos en archivos aleatoriosPara grabar datos en un archivo de acceso aleatorio se utiliza la sentencia Put. Un ejemplo paso a paso: primero declaramos una estructura de datos que contendr la informacin de cada registro:

Private nombre apellido direccin edad End Type

As As As

Type String String String As

* * *

t_empleados 15 15 30 Integer

Luego creamos una variable que sea de tipo t_empleados.

Dim empleados As t_empleadosAhora abrimos el archivo e indicamos en la funcin Len el tamao de la estructura

Open "datos.dat" For Random As #1 Len = Len(clientes)

Ahora le asignamos un valor a cada campo de la estructura de esta forma:

empleados.nombre empleados.apellido empleados.direccin empleados.edad = 45

= = = "Avenida 9 de julio

"Carlos" "Martinez" n 2054"

Ahora grabamos en el registro n1 del archivo los datos de esta forma:

Put #1, 1, empleados

Si queremos grabar mas datos, por ejemplo en el registro n 2 del archivo hacemos lo siguiente:

empleados.nombre empleados.apellido empleados.direccin empleados.edad Put Close #1 #1,

=

= = "Avenida = 2,

13

"Mara" "Gonzales" n 1100" 35 empleados

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.

11 - Leer datos en archivos aleatorios

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.

12 - Posicionarse en un registro determinado

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:

Seek Get #1, , mivariable

#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:

Seek Put #1, , mivariable

#1,

258

Nota: Desde este enlace pods ver un simple cdigo fuente de una Agenda decontactos utilizando Archivos Directos - Aleatorios

13 - Funciones propias de vb para el manejo de ficheros y directoriosVisual basic posee varias funciones para manejar archivos y directorios de nuestro sistema. Las principales son.

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:

Dir (ruta, atributos)

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:

Si el archivo existe Dir devuelve "autoexec.bat"

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")

En este ejemplo la funcin Dir devuelve directorios adems de archivos

Archivoabuscar = Dir("c:\, vbdirectory")

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

Dim archivo While archivo Wend

archivo = archivo =

As

String Dir("c:\*.exe") "" Dir

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.

Este otro ejemplo verifica si un archivo existe:

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:

FileCopy "origen", "destino" Nota: si el archivo existe la funcin lo sobre escribe.

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

E sta funcin nos devuelve el tamao en bytes de un archivo. Ejemplo:

Dim tamao =

tamao

As

Long

FileLen("c:\windows\system32\control.exe")

MsgBox tamao & " bytes"

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

apellido End Dim Private cant_reg End Sub =

As

String

*

20 Type

cant_reg Sub FileLen("c:\miarchivo.dat")

As

Long Form_Load() / Len(t_personas)

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.

20 - Funcin GetAttr y SetAttr

La funcin Getattr permite recuperar informacin sobre los atributos de un archivo o directorio. Ejemplo:

GetAttr "ruta del archivo"

los valores devueltos por la funcin pueden ser los siguientes: 0 - normal 1 - solo lectura 2 - oculto

y y y

y y y

4 - archivo de sistema 16 - directorio 32 - archivo modificado

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

La funcin SetAttr lo que hace es establecer los atributos de un archivo . Ejemplo:

SetAttr "ruta del archivo", valores de los atributos

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:

RmDir "path del directorio a remover"

8 - Los Objetos de Visual basic y los mensEn esta seccin 8 se describen algunos de los principales objetos de visual basic que permiten trabajar por ejemplo con el portapapeles , datos de nuestra aplicacin, informacin de la pantalla y fuentes del sistema Tambin se ve el uso de los menues y menues contextuales

Contenido1 - 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 - IntroduccinEstos 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 AppEl 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

ruta = App.Path & "\config.dat"

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

Dim Ruta As String

Ruta = App.Path & "\imagen.gif" Me.Picture = LoadPicture(Ruta)

Propiedad PrevInstance del objeto App

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

Private Sub Form_Initialize() If App.PrevInstance = True Then

MsgBox " La aplicacin ya se encuentra cargada en memoria", vbInformation ' Finaliza el programa End End If

End Sub

Otras propiedades del objeto App

y

ExeName: Con ExeName podemos recuperar el nombre del ejecutable de la aplicacin en tiempo de ejecucin

y

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

propiedad visible en false

3 - Objeto ScreenCon 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:

Dim Ancho As Integer Dim Alto As Integer

Ancho = (Screen.Width / Screen.TwipsPerPixelX) Alto = (Screen.Height / Screen.TwipsPerPixelY)

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

Dim La_Fuente As Integer

'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

Cdigo fuente en el formulario

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 relacionadosListar las fuentes de windows y previsualizarlas

4 - El objeto ClipBoardCon 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:

Dim cadena As String

cadena = Clipboard.GetText MsgBox cadena

Con este otro ejemplo podemos grabar o asignar un texto en el portapapeles

Clipboard.SetText "cadena de texto a grabar o variable string"

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

5 - Menues en visual basic

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.

6 - Los menues de cabecera y submenues

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.

7 - Agregar elementos en un men

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.

y

y

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

y

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.

y

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

y

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.

y

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

y

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:

Private End Sub

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

8 - Menues contextuales o popup menLos menues contextuales, esos que se despliegan cuando presionamos el botn derecho del mouse, son simples menues pero con la diferencia de que los mismos poseen la propiedad Visible en False, y luego se visualizan utilizando el mtodo PopUpMenu El mtodo PopUpMenu , se encuentra disponible solo para los formularios. Los parmetros de este mtodo son los siguientes:

Nombreformulario.PopUpMenu "Elmenu", "flags", x , y, opcion

y

Menu: este es el men popup que debe estar en el formulario, es decir el nombre

y

Flags: este parmetro indica la apariencia del men en el formulario. Ac podemos utilizar las siguientes constantes para ubicar el men:

vbpopupmenuleftalign ubica el men en el lado izquierdo con respecto a x.

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

9 - Ejemplo para crear un men PopUpCrear un men llamado mnuContextual con la propiedad visible en False y pegar esta rutina en el formulario:

Private Sub form_mouseup(button As Integer, shift As Integer, x As Single, y As Single)

' Consultamos si el botn presionado es el derecho If button = vbRightButton Then ' Depliega el men PopUP Me.PopupMenu mnucontextual End If End Sub

Ejemplo de un editor de texto usando formularios MDIEl siguiente ejemplo es un editor de texto muy simple utilizando un formulario Mdi, y formularios secundarios o hijos para cada archivo de texto, es decir similar a como lo hace el Word u otras aplicaciones que utilizan mltiples documentos

y y

Crear un editor de texto simple utilizando forms mdi Enalces relacionados con Mdi

1 - Pasos para crear el ejemplo:Iniciar un nuevo proyecto Exe, aadir un formulario MDI y dejarlo por defecto con el nombre Mdi Form1. Tambin agregar un formulario y renombrarlo a FrmDocumento Las opciones que tendr el editor sern: 1. En el men Archivo: Abrir, Nuevo, guardar , guardar como y salir 2. El men Edicin : Copiar, Cortar, Pegar y seleccionar Todo.

La vista de los menes quedar similar a los siguientes grficos:

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

Agregar el cdigo fuente a los formularios y al mdulo bas

Cdigo fuente a colocar en el Formulario Mdi

Option Explicit Private Sub MDIForm_Initialize()

CommonDialog1.Filter Archivos|*.*" End Sub 'Men abrir

=

"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

'Menu Guardar Como Private Sub mnuGuarcomo_Click()

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

ActiveForm.RichTextBox1.SelLength Len(ActiveForm.RichTextBox1.Text) End Sub

=

'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

Cdigo fuente a colocar en el formulario frmDocumento

Option Explicit Public flagGuardar As Boolean

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()

flagGuardar = True End Sub

Cdigo fuente a colocar en el Mdulo bas

Public Public

FrmDoc nForms

As As

frmDocumento Integer

Public Const sCaption = "Nuevo documento sin ttulo "

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

vista previa del mdi

Descargar notepad con mdi

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 ejemp