219
Introducción Bienvenido a la introducción de este tutorial básico de visual basic Esta guía esta destinado para aquellos que nunca han entrado en contacto con este lenguaje de programación. ( para que te des una idea se va a realizar en este capítulo 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 versión 6.0 de visual basic, aunque con otras versiones no creo que tengas problemas. Entrando en el tema, con este lenguaje de programación podés realizar casi cualquier tipo de programa para plataformas windows, esto quiere decir, que podés programar utilitarios para windows, bases de datos, aplicaciones comerciales y de gestión, juegos, etc.. . Sin embargo lo que no podés desarrollar son por ejemplo: aplicaciones que administren bases de datos gigantes, drivers para dispositivos , juegos que utilicen una interfaz gráfica compleja, ya que tendrías 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 rápidos y que tengan soporte para este tipo de proyectos y programas. 2 - Breve historia y alcance del lenguaje Las siglas Basic significan (beginner's all-purpose simbolic instruction Codic). El lenguaje Basic fue creado en el año 1964 y se modificó varias veces hasta que en el año 1978 se estableció el Basic estándar. 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

ARREGLOS Y VECTORES

Embed Size (px)

Citation preview

Page 1: ARREGLOS Y VECTORES

Introducción

Bienvenido a la introducción de este tutorial básico de visual basic

Esta guía esta destinado para aquellos que nunca han entrado en contacto con este lenguaje de programación. ( para que te des una idea se va a realizar en este capítulo 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 versión 6.0 de visual basic, aunque con otras versiones no creo que tengas problemas.

Entrando en el tema, con este lenguaje de programación podés realizar casi cualquier tipo de programa para plataformas windows, esto quiere decir, que podés programar utilitarios para windows, bases de datos, aplicaciones comerciales y de gestión, juegos, etc.. .

Sin embargo lo que no podés desarrollar son por ejemplo: aplicaciones que administren bases de datos gigantes, drivers para dispositivos , juegos que utilicen una interfaz gráfica compleja, ya que tendrías 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 rápidos y que tengan soporte para este tipo de proyectos y programas.

 

2 - Breve historia y alcance del lenguaje

Las siglas Basic significan (beginner's all-purpose simbolic instruction Codic). El lenguaje Basic fue creado en el año 1964 y se modificó varias veces hasta que en el año 1978 se estableció el Basic estándar. 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 información sobre la historia de visual basic en la Wikipedia

 

3 - La interface del Vb - El IDE

Page 2: ARREGLOS Y VECTORES

El 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 podés crear un Acceso directo en tu escritorio para tenerlo mas a mano.

 

 

En la imagen superior podés ver la barra de controles. Esta barra contiene los controles estándar de Visual Basic. Se los llama estándar porque que son los controles que por defecto añade Visual Basic cuando creamos un programa desde 0. A los controles no estándar, u otro tipo de controles, por ejemplo los creados por nosotros, los que tengamos instalados en el sistema, y demás 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 estándar, se añade a la barra y ya lo podés utilizar..

Los controles estándar son los controles básicos, por ejemplo los Command Button o botones de comando, Control TextBox o caja de texto, Picture

Page 3: ARREGLOS Y VECTORES

Box o caja de imagen. El control FileListBox para ver archivos, y varios otros que se explican en los siguientes capítulos.

 

 

La imagen anterior, nos muestra los formularios (ventanas) , módulos de código, 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 código" en la parte superior, accedemos a la vista de diseño del formulario, mientras que si elegimos Ver código, se abre una ventana que muestra el código de ese formulario seleccionado.

También podemos desde esta ventana, Guardar el formulario, eliminarlo y varias otras acciones.

 

Page 4: ARREGLOS Y VECTORES

 

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 características 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 botón o Command Button, visualizará las propiedades de ese botón, 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 común , una Dll ActiveX o un Proyecto Ocx), También Compilar el proyecto en un ejecutable, Acceder a la ayuda, (tenés que tener instalados los CD del Msdn),

Page 5: ARREGLOS Y VECTORES

Abrir un proyecto, Guardar, El acceso a los distintos modos y opciones de depuración de errores, y muchas opciones mas.

 

4 - Formularios, propiedades, métodos y eventos

 

En esta parte se realizará un ejemplo simple que consistirá en una ventana o formulario que contendrá un botón, y al presionar este botón 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 descripción"Mi primer programa". Pero antes de realizar este ejercicio veamos un par conceptos básicos necesarios

Formulario

Es la ventana o contenedor donde colocamos y agregamos controles de comando , como un botón, 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 botón y al presionar este botón hacer aparecer otro formulario en este caso un formulario2.

Propiedades:

Cuando hablamos de propiedades nos estamos refiriendo a las características 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 botón en el propio botón.

Los formularios también poseen esta propiedad caption y muchos otros controles también 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 comparación, serían 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 código postal, etc...

 

Los Eventos

Los controles y objetos poseen Eventos, pero no son todos iguales para todos los controles. Ejemplos de eventos serian:

Page 6: ARREGLOS Y VECTORES

Para un botón: 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 Métodos

Los métodos de un objeto son funciones propias que tiene cada objeto. Por ejemplo los formularios poseen un método llamado show , y lo que hace es cargarlo y hacerlo visible. Para un control combobox este tiene un método llamado additem, y lo que hace es agregar elementos en dicho control. Pero los métodos al igual que las propiedades y eventos, no están presentes en todos los controles de manera igual, es decir algunos objetos y controles pueden compartirlos, pero otros no. Por ejemplo el método Show de los formularios, no lo posee ningún control estándar excepto los formularios.

 

5 - Pasos para realizar el ejemplo

1 - Abrí el Visual Basic y te aparecerá una ventana para que puedas elegir el tipo de Proyecto o programa que querés realizar. Como verás hay muchas opciones, nosotros elegiremos la opción Estándar EXE como muestra la imagen:

 

Page 7: ARREGLOS Y VECTORES

 

2 - Ya abierto el VB podés ver que tenés un formulario llamado Form1, este es agregado automáticamente cuando comenzás 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 botón que al presionarlo muestre un texto diciendo "Mi Primer programa", entonces agregá un botón a nuestro formulario. Para agregarlo lo podés hacer desde la barra de controles, en la parte izquierda del IDE, y buscá entre todos ellos un control llamado Command Button (Botón de comando). Haciendo doble click sobre el control, o dibujandolo sobre el formulario.

4 - Como te darás cuenta, el texto que muestra el botón por defecto es "Command1". Nosotros lo vamos a cambiar por "Mostrar mensaje". Para ello tenemos que cambiarle la propiedad Caption del botòn. Entonces seleccioná con un click el command1 (serciorate que esté seleccionado, cuando al rededor del botòn 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 botón solo nos mostrarà las propiedades del Command1. Ahora buscá en la lista de propiedades la propiedad

Page 8: ARREGLOS Y VECTORES

Caption y verás que dice Command1, borrala y escribe: "Mostrar mensaje". Como podés ver el texto o leyenda del botón a cambiado.

NOTA: Nosotros todavía no hemos ejecutado nuestro programa por que obviamente lo estamos diseñando. A esto se lo denomina trabajar en "Tiempo de diseño". La otra forma de trabajo se denomina "Tiempo de ejecución", que es cuando nuestro programa está siendo ejecutado o cargado en memoria.

Tendrías que tener algo por el estilo en tu formulario Form1

 

 

5 - Ahora vamos a agregar las instrucciones o líneas de código para que cuando pulsés el botón se despliegue un mensaje. Hacé Doble click sobre el botòn y podés ver que se habre una ventana donde escribir el código. Esta se llama precisamente ventana de Código. Al abrirse la ventana muestra una serie de instrucciones

Private Sub Command1_Click()

End Sub

 

A esto se lo llama Subrutina o procedimiento de código, y estas subrutinas tienen un comienzo y un fin.

Después se explica mas adelante que es eso de Private sub, End Sub, procedimientos, funciones...etc

Page 9: ARREGLOS Y VECTORES

Por ahora lo que te tiene que quedar claro es que nosotros vamos a ingresar el còdigo necesario para mostrar, por medio de una ventana, el mensaje "mi primer programa".

Entre la declaración Private sub Command1_click y End sub escribe lo siguiente

Msgbox "Mi primer programa"

 

El código tendría que quedarte de la siguiente manera

Private Sub Command1_click()

MsgBox "Mi primer programa"

End Sub

6 - Acá lo que se hizo fue utilizar una función 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 > opción Iniciar

La mas sencilla de todas que es presionando la tecla F5.

Cuando ejecutés el programa y presionés el Command1, se mostrará el mensaje.

En este momento nuestro programa está en ejecución, para volver a la pantalla de vista de diseño y detener el programa , tenemos que presionar el ícono con un cuadrado azul (stop) o ir al menú ejecutar y elegir la opciòn terminar.

Page 10: ARREGLOS Y VECTORES

 

6 - Sobre los proyectos en Visual Basic

Por último para cerrar esta intruducción muy básica una aclaración sobre los Proyectos.

Cada vez que inicias un programa nuevo Standar Exe Visual Basic Hace lo siguiente:

Crea un formulario llamado "Form1" y también un proyecto de trabajo llamado por defecto "Proyecto1".

Cuando lo guardás, 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 configuraciòn.

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, también te pedirá que guardes el formulario form1.frm . En ambos casos puedes asignarle el nombre que quieras.

 

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 minúsculas tendría que utilizar la función Lcase con cada variable: nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2), etc..

En cambio si utilizara un arreglo solucionaría mi problema solo a esto

Dim nombres(30) As String

For x = 0 To 30

Page 11: ARREGLOS Y VECTORES

nombres(x) = LCase(nombres(x))

Next 

 

Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada variable, hemos utilizado un arreglo llamado nombres con un número de índice 30 , es decir que almacena 30 datos de tipo String

 

 

1.1 - Declaración de los arreglos en el código

Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la única diferencia es que debemos indicar la cantidad de elementos que contendrá el arreglo, colocando el número de índice entre paréntesis. Por ejemplo :

Lo siguiente crea un arreglo de 15 elementos o datos de tipo integer

Dim miArreglo (1 to 15) as integer

 

Esto crea un arreglo de 11 elementos o datos de tipo String

Dim empleados (10) as String

 

Como podemos ver en el primer ejemplo hemos declarado un arreglo llamado miArreglo y entre paréntesis hemos declarado el rango de capacidad del mismo, es decir la cantidad de datos que podrá contener

El primer número , el 1 , indica el límite inferior del mismo, y el número 15 indica el límite máximo del arreglo, conformando de esta manera un arreglo que podrá almacenar 15 datos de tipo string.

Page 12: ARREGLOS Y VECTORES

En el segundo ejemplo, declaramos un arreglo de 11 elementos de tipo string. Como podés ver hemos indicado solo un número que representa el valor máximo del mismo. Cabe aclarar que hemos puesto de índice el número 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 dimensión y las matrices 2 o mas dimensiones.

 

1.2 - Acceder a los datos de un arreglo

Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante el índice o número del elemento del mismo. Por ejemplo:

Dim alumnos(1 To 4) As String

alumnos(1) = "juan"alumnos(2) = "micaela"alumnos(3) = "maría"alumnos(4) = "ignacio"

 

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

Page 13: ARREGLOS Y VECTORES

MsgBox "Nombre del país : " & paises(x)

Next x 

 

En este último ejemplo, declaramos y creamos un vector de 3 elementos que contendrá el nombre de 3 países. Luego en un bucle For utilizamos la función MsgBox para mostrar los elementos del arreglo, pasándole como parámetro del índice la variable x del bucle For

 

1.3 - Utilizar una estructura Type o UDT en un arreglo

Como vimos, en un arreglo podemos almacenar datos de cualquier tipo pero no mezclarlos, es decir podemos crear arreglos de tipo string, de tipo Integer etc,,, pero sin duda que lo mas importante y de mas utilidad a la hora de programar es la utilización de datos definidos por nosotros mediante una estructura Type

Por ejemplo:

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

Page 14: ARREGLOS Y VECTORES

Private Sub Form_Load()

' Llenamos con datos para el elemento 1 del arreglo

personas(1).nombre = "carlos"

personas(1).apellido = "Martínez"

personas(1).cpostal = 1900

' Llenamos con datos para el elemento 2 del arreglo

personas(2).nombre = "Héctor"

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

 

Page 15: ARREGLOS Y VECTORES

2 - Las matrices

 

Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensión (2 o mas), a diferencia de los vectores que poseen una sola dimensión.

Podemos imaginar una matriz bidimensional ( 2 dimensiones) , como una cuadrícula con filas y columnas, donde las filas representarían 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 código de manera igual que los vectores, con la diferencia que debemos indicar mas subíndices de acuerdo a la cantidad de dimensiones que posea la matriz.

por lo general no se suele utilizar matrices de mas de 3 dimensiones..

 

2.1 - Ejemplo de matriz de 2 dimensiones

 

Matriz bidimensionales de 6 x 8 (de 2 dimensiones).

Dim personas (1 to 6, 1 to 8) as string

 

Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices

Por ejemplo:

personas (1, 1) = "Natalia"personas (2, 1) = "pedro"personas (1, 7) = "valeria"personas (1, 8) = "josé"personas (2, 2) = "carolina"personas (4, 1) = "raquel"personas (6, 2) = "eustaquio"

Page 16: ARREGLOS Y VECTORES

personas (6, 5) = "maria"personas (6, 8) = "mariana"

 

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.

 

En este ejemplo creamos una matriz de 3 dimensiones de 3 x 3 x 3

Dim cubo (1 to 3, 1 to 3, 1 to 3) as integer

 

para acceder a los datos sería exactamente de la misma manera pero debemos utilizar un índice mas.

Ejemplo:

cubo (1, 1 , 1) = 50cubo (1, 1 , 2) = 50cubo (1, 1 , 3) = 50cubo (1, 2 , 1) = 50cubo (1, 2 , 2) = 50cubo (1, 2 , 3) = 50cubo (1, 3 , 1) = 50cubo (1, 3 , 2) = 50cubo (1, 3 , 3) = 50cubo (2, 1 , 1) = 50cubo (2, 1 , 2) = 50cubo (2, 1 , 3) = 50cubo (2, 2 , 1) = 50cubo (2, 2 , 2) = 50cubo (2, 2 , 3) = 50cubo (2, 3 , 1) = 50cubo (2, 3 , 2) = 50cubo (2, 3 , 3) = 50cubo (3, 1 , 1) = 50cubo (3, 1 , 2) = 50cubo (3, 1 , 3) = 50cubo (3, 2 , 1) = 50

Page 17: ARREGLOS Y VECTORES

cubo (3, 2 , 2) = 50cubo (3, 2 , 3) = 50cubo (3, 3 , 1) = 50cubo (3, 3 , 2) = 50cubo (3, 3 , 3) = 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 dinámicos

Hasta ahora habíamos visto solo vectores o arreglos de tamaño fijo, ¿ pero qué pasa cuando no sabemos el tamaño o el largo de un vector y queremos que sea variable ?.

Visual basic posee una sentencia o función que nos permite cambiar el largo de un vector en tiempo de ejecución, dándonos 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 función se llama ReDim y ReDim Preserve , y un ejemplo de como aplicarla sería de la siguiente manera:

 

3.1 - Ejemplo de vectores y arreglos dinámicos

 

En lo siguiente, primero declaramos un vector de la forma como lo hacemos siempre con la diferencia de que en vez de colocar un tamaño declaramos el vector solo con los paréntesis :

Dim alumnos () as string

 

Page 18: ARREGLOS Y VECTORES

Ahora le establecemos un tamaño, por ejemplo de 4 elementos y le agregamos valores:

ReDim alumnos(1 To 4) As String

alumnos(1) = "Luciano"alumnos(2) = "Esteban"alumnos(3) = "Mariano"alumnos(4) = "Pedro"

 

Ahora para redimensionar el tamaño del vector por ejemplo a 7 elementos, utilizamos la función ReDim Preserve, para preservar los 4 valores anteriores y le agregamos 3 valores mas:

ReDim Preserve alumnos(1 To 7)

alumnos(5) = "Karina"alumnos(6) = "Raúl"alumnos(7) = "Romina"

 

Nota: si utilizamos la sentencia ReDim, o mejor dicho si redimensionamos el vector sin utilizar la sentencia ReDim preserve, los valores que contenía el vector anteriormente se perderán

Eliminar o vaciar un vector

Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:

Erase Nombre_Del_Vector

 

4 - Funciones de VB para trabajar con Arreglos - LBound y UBound

Estas funciones son ideales para trabajar con vectores y matrices que han sido declaradas dinámicamente

Lbound y Ubound nos devuelve un número de tipo Long que nos permite saber el límite superior e inferior de un vector o una matriz.

Page 19: ARREGLOS Y VECTORES

 

4.1 - Ejemplo de Ubound y Bound

Private Sub Form_Load()

'Variables Para almacenar los límites superior e inferior

Dim LimiteInferior As Long

Dim LimiteSuperior As Long

'Declaramos 3 matrices, de una dimensión, _

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)

Page 20: ARREGLOS Y VECTORES

' 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 habrás visto en los ejemplos anteriores, para conocer los limites superiores e inferiores en los vectores, solo se debe pasar como parámetro a las funciones Lbound y Ubound, el nombre del vector con el cual queremos trabajar.

En cambio en las matrices se añade un segundo parámetro en el cual debemos indicar el número de la dimensión en la cual queremos recuperar los valores.

 

Ejemplo 2 de LBound y UBound:

 

Si deseamos recorrer todos los elementos de un vector o una matriz podemos hacerlo mediante un bucle For de la siguiente manera:

For x = LBound(vector) To UBound(vector)

MsgBox vector(x)

Next i 

 

Page 21: ARREGLOS Y VECTORES

 

4.2 - Función Join, Split y Filter :

 

Visual basic en su sexta versión incorpora estas 3 funciones para trabajar solo con vectores. Estas funciones están relacionadas con el tratamiento de las cadenas de caracteres.

Función Join

Esta función se utiliza para unir en una sola variable el conjunto de subcadenas de un vector. Esta función tiene solo 2 parámetros y es muy fácil de usar. Ejemplo:

Dim micadena as stringDim vector(1 To 3) As String

vector(1) = "Carlos"vector(2) = "Pedro"vector(3) = "Juan"

 

Ahora ejecutando Join, la variable micadena pasaría a valer "Carlos-Pedro-Juan"

micadena = join (vector, "-")

 

Nota: En el primer parámetro de la función 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 vacío o en blanco (" ") para separar cada subcadena .

 

Función Split:

Esta función hace el trabajo inverso de la función Join.

Page 22: ARREGLOS Y VECTORES

Split se utiliza para rellenar un vector dinámico que contiene un número de subcadenas a partir de una cadena que le pasamos como parámetro a la función.

Para aclarar un poco un ejemplo

 Private Sub Form_Load()

'Una variable para almacenar una cadena

Dim Micadena As String 'Vector dinámico

Dim Vector() As String

'Le damos un valor a la variable

Micadena = "maria/natalia/romina"

'Ejecutamos la función Split

Vector = Split(Micadena, "/")

'Ahora el vector dinámico pasaría a _

contener los siguientes valores:

Vector(0) = "maría"

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 función devuelve un vector cuya cantidad de elementos se ignora, es decir no se conoce.

Enlaces relacionados a split

Pasar un archivo de texto a un array o matriz usando split

Page 23: ARREGLOS Y VECTORES

 

Función Filter :

La función Filter se utiliza para filtrar subcadenas de un vector dependiendo de un determinado criterio de búsqueda. Los parámetros que lleva la función 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 dinámico 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 dinámico "resultado" pasa a contener

MsgBox Resultado(0), vbInformation ' Luciano

MsgBox Resultado(1), vbInformation ' Lucas

 

 

Page 24: ARREGLOS Y VECTORES

 

5 - Arreglos de controles en visual basic

Hasta acá se vió los aspectos de los vectores y matrices como estructuras que nos permiten almacenar datos y resolver problemas lógicos 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 número de índice que los identifica y los hace únicos con respecto a los demás, 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 botón se distingue del resto por un número de índice, es decir si por ejemplo nuestro botón de comando se llama cmd pasaría 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 además no puede haber un control dentro del arreglo que tenga el mismo número de índice, ya que sería imposible identificarlo en el conjunto, además VB no lo permitiría y nos mostraría 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 código, con lo cual si tenemos muchos controles que tienen que ejecutar la misma instrucción no debemos escribir código de más 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 ejecución, a partir de un arreglo de controles ya creado.

4. Es mas fácil manipular y establecer las propiedades en un vector de controles refiriendonos al subíndice de los mismos.

 

5.1 - Ejemplo para crear un arreglo de controles

Para crear un arreglo de controles podemos hacerlo de 2 maneras.

Page 25: ARREGLOS Y VECTORES

La primera opción es copiar un control ya dibujado y pegarlo en el formulario. Luego visual basic nos mostrará un diálogo preguntándonos si queremos crear una matriz de controles. Al contestar que si, ya se ha creado un arreglo con 2 controles, en este caso el primer control tendrá el índice 0 y el que pegamos el índice 1. Si queremos seguir agregando mas controles cuando peguemos nuevamente otro control visual basic no nos preguntará nuevamente si deseamos crear una matriz del control ya que esta ya está creada, y por lo tanto agregará un nuevo control y le agregará el número de índice correspondiente para diferenciarlo del resto, en este caso el 2. Ahora si observas en la propiedad index de los controles que forman el arreglo verás que estos tienen un número de índice que antes no tenían al no formar parte de un arreglo de controles

Nota: cualquier control de visual basic que no tenga un arreglo creado, la propiedad index de los mismos no tendrá ningún número o valor, ya que esta propiedad está reservada para los controles que formen parte de un vector o arreglo.

La otra opción para crear un arreglo, es ingresar directamente el número 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 darás cuenta, si tuvieses que hacer esto manualmente, es decir deshabilitar cada TextBox individualmente tendrías 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 estableciéndole la propiedad Enabled en False para deshabilitarlos.

Create un arreglo de 10 TextBox Para eso coloca un text1 en el formulario. después copialo y pegalo, vb te va a preguntará si querés hacer un arreglo, decile que si, hasta que tengas 10 o los que quieras.

Si te fijás ahora en la ventana de propiedades, cuando seleccionas un textBox en la propiedad index te vas a dar cuenta que poseen un número, ese es el índice que los identifica, y por medio de ese índice nos vamos a referir en el bucle For

Page 26: ARREGLOS Y VECTORES

El código de este ejemplo bien simple quedaría así:

Dim i As Integer

For i = 0 To 9

text1(i).Enabled = False

Next

 

Como podés ver, le pasamos en el parámetro índice el valor de la variable i para referirnos a ese text1 en particular y asignarle la propiedad Enabled en False

 

5.2 - Pasar un arreglo de controles como parámetro

Una tarea habitual es la de poder pasar un arreglo o vector de controles como parámetro a una Sub o function.

Por ejemplo supongamos que tenemos un programa que tiene muchos formularios. y varios de esos formularios tienen una función que se encarga de limpiar todas los textBox y eliminar el contenido de los mismos

Para solucionar esto, y no tener que repetir código, podríamos crear en un módulo de código, una SubRutina para que la puedan utilizar y acceder desde todos los formularios.

Para poder pasar un vector como parámetro 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

 

Código fuente en el formulario

Option Explicit

Page 27: ARREGLOS Y VECTORES

Private Sub Command1_Click()

Call Limpiar_TextBox(Text1)

End Sub

' Recibe el vector como parámetro

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

Formularios , propiedades métodos y eventos

En esta sección se ven las características principales de los Formularios.

Como vimos en la página 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 código necesario de nuestros programas.

También se dijo, los controles e inclusive los Formularios tienen sus propias características, 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 métodos (por ejemplo el método show que es para mostrar el formulario y el método 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 métodos y eventos y no son lo mismo. Los métodos son funciones propias de cada objeto, por ejemplo el método hide de un formulario no lo posee un command button. Con los

Page 28: ARREGLOS Y VECTORES

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 ocación).

Pero otros eventos si los comparten ambos. Siguiendo el ejemplo del formulario y el botón, los dos tienen un evento llamado click, y todas las instrucciones de código que escribamos en la rutina de código o procedimiento que estén bajo este evento, se ejecutarán cuando hagamos un click con el mouse sobre el objeto. El evento Click lo poseen la mayoría de los controles, pero no tiene porque ser así.

Para seguir con el tema de los métodos y eventos, vamos a hacer un ejemplo simple de ejercicio. Este ejemplo, consistirá en un formulario que contendrá un botón y , al presionarlo nos mostrará otro formulario.

 

1.1 - Ejemplo sobre métodos 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 botón 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 botón 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 botón, 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 opción de agregar otros formularios, tendrás que agregarlo desde la barra de menú >proyecto> Agregar formulario.

Te va a aparecer un cuadro de diálogo y eliges la opción formulario. Como podés ver se ha agregado otro formulario llamado form2, y la ventana del explorador de proyectos ahora contiene 2 formularios.

 

Page 29: ARREGLOS Y VECTORES

 

4 - Ahora tenemos que introducir el código 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 tenés 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 código al botón, hacé doble click en el mismo e ingresá la siguiente instrucción de código: Form2.show.

La rutina de código del botón command1 te quedaría algo parecido a esto:

 

 

Page 30: ARREGLOS Y VECTORES

Nota: Como seguro te diste cuenta, cuando escribís Form2 y presionas el punto ".", visual basic te muestra una lista con todas las propiedades y métodos que tiene form2, y así ocurre con todos los objetos que tienen propiedades y métodos. En este caso el método show mostrará el Form2 en pantalla, es decir el método Show lo que hace es cargar en la memoria un formulario y automáticamente 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 formularios

Ahora vamos a hacer un programa de ejemplo parecido al anterior, pero con algunas variantes.

En la primera parte, el programa que hicimos consistía en un formulario que tenía un botón (Command1), y al presionarlo mostraba otro formulario . Este lo llevamos a cabo con el método show que tienen los formularios y sirve para mostrarlos en pantalla.

El objetivo de este programa es mostrar cuatro métodos que poseen los formularios, ellos son: Load, Unload, Hide y Show.

El método Load tiene la función de cargar el formulario en la memoria y unload descargarlo de la memoria. Esto no significa que si el método load carga el formulario, automáticamente se muestre en la pantalla, quiere decir que solo permanece cargado en memoria, luego para mostrarlo tendríamos que utilizar el método show por ejemplo (hay otras opciones para hacer lo mismo pero no vienen al caso detallarlas para este ejemplo).

El método Hide oculta el formulario pero sigue permaneciendo en la memoria. Para descargarlo completamente de la memoria ram, tendríamos que usar el método Unload.

Imagen previa del ejemplo:

 

Page 31: ARREGLOS Y VECTORES

 

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 el Command3 "Descargar formulario de la memoria (UnLoad)" E n el Command4 , "Ocultar formulario (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 tenés que seleccionar el objeto que quieras, mantener presionado el botón izquierdo del mouse y soltarlo en el lugar que quieras. lo mismo pasa con el tamaño de los controles, cuando los seleccionas podés cambiarle el tamaño.

5 - Ahora vamos a escribir el código para los botones. Por si ya te olvidaste lo que íbamos a hacer, lo que harán 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.

Page 32: ARREGLOS Y VECTORES

En el Command1 entonces , hacé doble click en dicho botón y tipea: Load Form2 .

Para el Command2 que mostrará el Form2: Form2.show.

El botón 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 opción agregar formulario y agregas uno nuevo al proyecto.

Ahora pulsá F5 y prueba el programa.

Nota : seguro que te preguntarás para que sirve el método Load, si para que aparezca en pantalla el Form2 tengo que usar la instrucciónshow. 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 rápida. Esta es una de las posibilidades del uso no es la única.

 

El código completo sería el siguiente:

'Carga el form2 pero no lo muestraPrivate Sub command1_click()Load Form2End Sub

'Carga y muestra el Form2Private Sub command2_click()Form2.ShowEnd Sub

'Descarga completamente de la memoria el Form2Private Sub command3_click()Unload Form2End Sub

'lo oculta pero no descarga el Form2 de la memoriaPrivate Sub command4_click()Form2.HideEnd Sub

Page 33: ARREGLOS Y VECTORES

 

Nota Sobre los comentarios en el código

Para colocar comentarios en nuestros programas, se antepone la comilla simple o la palabra Rem (esta última prácticamente no se utiliza).

Es fundamental escribir comentarios sobre los bloques de código que componen las distintas partes del programa, para que cuando echemos una mirada al código sepamos de que se trata. Estos comentario o líneas descriptivas no se ejecutan y no influye en nada a la ejecución de los procedimientos, solo es información que ayuda a entender cada línea o sección de un bloque de código.

 

2 - Controles Estándar de Visual basic

Para ver una descripción básica de los controles estándar de visual basic, es decir los que aparecen por defecto en el cuadro de controles en la parte izquierda del IDE, podés acceder a esta sección apartada del tutorial en el siguiente enlace, donde se explica el funcionamiento básico de los mismos con algunos ejemplos prácticos: Tutorial de los controles de Visual Basic

También en la misma página hay ejemplos de los controles no estándar, es decir controles que debemos incorporarlos nosotros y que visual basic no los incorpora por defecto al iniicar un proyecto

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 número 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 tendría mucho sentido crear una variable llamada m y allí guardar o almacenar un nombre o un apellido, por que cuando echemos vista al código resultaría mas difícil deducir que tipo de dato estoy guardando. Por ejemplo en este último caso sería mucho mas lógico crear una variable llamada “nombres” y allí guardar "Luciano", "Pedro", "Natalia" etc..

Page 34: ARREGLOS Y VECTORES

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 código 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 número entero. Después de declararla le podemos asignar un valor con el operador "=", ejemplo:

Dim numero As Integer

numero = 1500

Pero hay que tener en cuenta que al declarar una variable, en este caso, de tipo integer, no podríamos almacenar en ella una cadena de caracteres como por ejemplo un nombre o cualquier otro tipo de datos que no sea un número entero. Si sucedería esto nuestro programa daría un error en tiempo de ejecución, mostrándonos un feo cartel diciéndoos 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:

Números enteros: dentro de los números enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar:

Byte: puede almacenar números enteros dentro del rango

desde 0 a 255

Integer: puede almacenar números enteros dentro del rango -

32.768 a 32.767

Page 35: ARREGLOS Y VECTORES

Long: puede almacenar números enteros dentro del rango -

2.147.483.648 hasta 2.147.483.648 .

Números decimales: para almacenar números decimales contamos con los siguientes tipos de datos:

Single: almacena números decimales en el rango +/- 1e-45

hasta 3e38

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 lógicos: para almacenar tipos de valores lógicos 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

Page 36: ARREGLOS Y VECTORES

En la línea anterior he creado una constante, que la llamé numero y va a almacenar un número , y este valor, cuando se ejecute mi programa se mantendrá invariable.

 

Un ejemplo:

 

1 - En la siguiente línea 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 función MsgBox que es una función de Visual Basic para mostrar mensajes, mostramos el resultado de esa suma.

Coloca un botón (CommandButton) llamado Command1. Hacé dobleClick sobre el botón para que se abra la ventana de código de Visual Basic. Dentro del procedimiento Click pega este código:

 

Dim num1 As IntegerDim num2 As Integer

num1 = 10num2 = 20

'se mostrará un mensaje con la suma de las variables con el resultado 30MsgBox num1 + num2

 

Al ejecutar el programa, podés 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. Después le asignamos un valor, y por ultimo mostramos las variables con un mensaje usando la función MsgBox como en el ejemplo anterior. Pero antes hay que aclarar algo importante, las cadenas en visual basic se encierran entre comillas dobles como podés ver en el ejemplo, de lo contrario se va a producir un error.

Page 37: ARREGLOS Y VECTORES

Dim nombre As StringDim apellido As String'le establecemos valoresnombre = "Carlos"apellido = "Peres"

'mostramos un mensaje con el valor de las variablesMsgBox nombreMsgBox apellido

 

3 - Ahora un ejemplo que produce un error en tiempo de ejecución. 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 As IntegerDim Apellido As Integer'Le establecemos valores numericosNombre = "Carlos"Apellido = "Peres"

Si probás el ejemplo, visual basic te mostrará un mensaje de error como el siguiente: "no coinciden los tipos de datos":

 

 

Page 38: ARREGLOS Y VECTORES

...ya que las variables están declaradas como de tipo Integer, y le estás asignando un tipo de dato que no lo acepta.

4 - Un ejemplo que almacena un número en una variable de tipo Byte (números de 0 a 255). Primero declaramos la variable y le damos un nombre, por ejemplo si queremos almacenar el número 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 botón Command1, sería de esta manera:

Private Sub Command1_Click()'Declaramos la variableDim Edad As Byte

'Le asignamos un valor que no sea inferior a 0 ni mayor a 255Edad = 88

'Lo mostramos en el control llamado Text1Text1 = EdadEnd Sub

 

Si probaras cambiando el valor 88 por ejemplo a 300, ocurriría lo mismo que en el ejemplo anterior, es decir un Error 13 en tiempo de ejecución "No coinciden los tipos de datos"

 

5 - Estructuras de control:

Page 39: ARREGLOS Y VECTORES

Las estructuras de control se utilizan para controlar el flujo del programa en una rutina o función. Mediante ellas podemos controlar, mediante una condición, que se ejecute una determinada línea o bloque de líneas de código .. o que no se ejecuten.

 

Estructura If - Then - Else

Esta estructura permite mediante una condición, que se ejecute o no se ejecute determinada tarea o línea de código.

Por ejemplo supongamos que tenemos en un formulario un control Label con la propiedad Caption con el valor 50

If Label1.Caption = "50" Thenmsgbox "mi label tiene un valor de 50"elsemsgbox "mi label NO tiene un valor de 50"end if

 

Esto traducido al español significaría 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 conclusión lo que hace esta estructura es evaluar una condición, si se cumple, que se ejecute determinada tarea. si no se cumple, se ejecutará las líneas de código que estén bajo la cláusula 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 cláusula. Por ejemplo podríamos 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 programaIf Label1.Caption = "Hola" Then

      End

Page 40: ARREGLOS Y VECTORES

End If

'Si no, se prosigue con esta línea

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 ejecución de nuestro programa). En cambio si ahora le cambia el caption al Label1 y volvés a ejecutar el proyecto, podés ver que la instrucción End no se ejecuta, si no que la pasa por alto y sigue con las restantes líneas, en este caso ejecuta la función MsgBox con el mensaje.

 

Estructura While - Wend

Esta estructura de control repetirá sin detenerse un determinado código mientras se cumpla una condición.

Por ejemplo supongamos que tenemos una variable llamada x que tiene un valor de 100.

while x = 100...se ejecutan todas las líneas de código que estén aquíwend

 

Esto traducido al español significaría 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 saldría del bucle While - wend y seguiría ejecutando el resto del código, si es que hay mas código o instrucciones a ejecutar.

Un ejemplo, agrega un Command1 al formulario y un control Text1. Cuando ejecutemos el ejemplo, se deberá escribir un número dentro del control textBox. Entonces se creará un bucle While, que mostrará en el Caption del

Page 41: ARREGLOS Y VECTORES

formulario, es decir en la barra de título, el intervalo desde 0 hasta el número que hayamos ingresado en el Text1. Es decir si ingresamos el número 9000, en el caption del formulario se imprimirán los número 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 número que haya en el Text1, se finalizará el bucle y se mostrará un mensaje que finalizó el mismo

Private Sub Command1_Click()Dim contador  As Integer 'Declaramos la variable

While contador <> Text1

'Mostramos en el formulario el valor de la variable contadorMe.Caption = contador

'Incrementamos la variable en 1contador = contador + 1

Wend

MsgBox "Terminó el bucle"

End Sub

 

Estructura For - next

La estructura es utilizada para generar una repetición de instrucciones o bucle, pero no evalúa una condición como en el caso del bucle While, si no que lo hace entre un número inicial y un número 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 Sub Command1_Click()Dim contador As Integer

For contador = 0 To 1000

    Label1.Caption = contador

Next contador

Page 42: ARREGLOS Y VECTORES

End Sub

 

Esto traducido significaría 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 instrucción. Esta posee un principio y un fin, en este caso el principio sería 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 estén bajo la cláusula For-next. En este caso nuestro control Label1 mostraría 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 botón para escribir dentro del procedimiento que se ejecutará cuando lo presionemos. El código:

Dim contador As Integer

For contador = 1 To 10

    MsgBox "La variable Contador vale: " & contador

Next contador

MsgBox "Fin del bucle For"

 

Estructura Select case

La estructura Select Case se suele utilizar para evitar el uso de muchas cláusulas If y de esta manera no tener que anidarlas. La claúsula Select evalúa una condición y las cláusulas case contienen valores, si el valor que contiene la cláusula case es igual a la condición que se evaluó, ejecutará las instrucciones en dicha cláusula.

Dim Nombre As String

Page 43: ARREGLOS Y VECTORES

Nombre = Text1

Select Case Nombre

  Case "Jorge"

       MsgBox "Se ejecutó la cláusula case: " & Nombre  Case "Pedro"

       MsgBox "Se ejecutó la cláusula case: " & Nombre

  Case "Carolina"

       MsgBox "Se ejecutó la cláusula case: " & Nombre

End Select

 

Esta estructura es muy práctica. En el ejemplo anterior, la cláusula Select case contiene como condición el valor de la variable llamada Nombre. Esa Variable toma el valor que tenga un control Text1, entonces buscará en todas las cláusulas case, y si encuentra una igual a la condición, ejecutará solo las instrucciones de la cláusula case que tenga el mismo valor, por ejemplo si ingresara el nombre "Martín" no se ejecutará ninguna cláusula Case. En cambio si ingreso "Jorge" se ejecutará solo las instrucciones que estén en la sección Case "Jorge" y asi...

En el caso anterior solo hemos colocado un valor para cada Case. Si quisieramos colocar mas valores podríamos hacerlo de esta forma:

Private Sub Form_Load()

Dim x As Integer

x = 10 'Le ponemos un valor a x

Select Case x

Case 5, 10MsgBox "Se ejecutó el case que tiene el 5 y el 10"'Se ejecuta esta sección

Case 15, 20'Esto no se ejecutaCase 25, 30

Page 44: ARREGLOS Y VECTORES

'Esto tampoco End Select

End Sub

 

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 basic

Los operadores nos permiten operar, validar, comparar, asignar, distinguir, etc.., los datos e instrucciones de código de nuestros programas. A continuación los operadores mas importantes.

 

Operadores aritméticos

Estos operadores nos permiten trabajar con cálculos matemáticos como la suma (+), resta (-), división (/) y multiplicación (*).

Ejemplos:

a = 5b = 15c = a + b ' en este caso la variable c contendría el valor 20

ganancia = 500perdida = 200total = ganancia - perdida 'la variable total pasaría a valer 300

x = 100y = 20

z = x / y ' La Variable z vale 5

x = 100y = 20

Page 45: ARREGLOS Y VECTORES

z = x * y ' La Variable z vale 2000

 

 

Operadores lógicos

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 (nombre = "maría") Then

'solo se ejecutará el código dentro de este bloque IF si la variable'x vale 10 y la variable nombre es igual a maría

End If

If (m = 10) Or (nombre = "pedro") Then

'el código se ejecutará si por lo menos una variable es correcta'es decir si por lo menos se cumple una condición

End If

 

Operadores de comparación

Los operadores de comparación se utilizan para comparar expresiones de cualquier tipo. Los mas importantes son: El operador de igualdad (=), menor que (<), mayor que (>), distinto a(<>)

Ejemplos:

If label1.Caption = "06/08/1978" Then

Page 46: ARREGLOS Y VECTORES

'si el control label1 en su caption contiene esa fecha'se ejecutará el código que este aquí

End If

if x > 6 then'si la variable x es mayor que 6 se ejecutará el código que este aquíend if

If país <> "Estados unidos" Then'si la variable país es distinta a "Estados unidos" se ejecutará el códigoEnd If

While c <= 87

'mientras la variable c sea menor o igual a 87 se ejecutará'el bucle While

Wend

 

Por último quedaría por ver el operador de concatenación (&) que se utiliza para unir cadenas de caracteres.

Por ejemplo:

nombre = "Jose"apellido = "Peralta"

nombrecompleto = nombre & apellido

'La variable nombrecompleto pasaría a contener la unión de las otras dos variables'es decir Jose Peralta

 

Nota: hay muchos mas operadores en Visual Basic, estos son los básicos

Subrutinas de código

Se denomina subrutina a una porción de código que tiene como principal función ejecutar una determinada tarea. Estas tienen un nombre para poder identificarlas y luego poder llamarlas para poder utilizarlas.

Page 47: ARREGLOS Y VECTORES

Las subrutinas tienen un principio y un fin y estas pueden tener distinto tipo de alcance, o sea pueden ser de tipo privadas o públicas.

En el siguiente ejemplo se muestra una subrutina que crea visual basic automáticamente cuando en un formulario insertamos un botón llamado Command1 y desde la ventana de eventos seleccionamos el evento click del mismo

 

Private Sub Command1_Click()

End Sub

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

 

Private Sub TextPedidos_Change()

End Sub

 

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 módulo 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 quisiéramos que estos procedimientos se puedan llamar desde otro formulario, lo que tendríamos que hacer es cambiar el alcance del procedimiento, en ves de Private Sub cambiarlo por Public Sub. si hacemos esto, ese procedimiento de código puede ser utilizado desde cualquier parte del proyecto.

 

Subrutinas y Procedimientos propios

 

Page 48: ARREGLOS Y VECTORES

También podemos crear nuestros propios Procedimientos y Subrutinas de código para ejecutar una determinada tarea.

Para crear un procedimiento de código se debe escribir la palabra Private sub o Public sub (depende el alcance), seguida del nombre del procedimiento (un nombre que queramos) y los parámetros, si es que le enviaremos parámetros (los parámetros son opcionales). Además el procedimiento debe ser escrito en un lugar vacío de la ventana de código, es decir nno se puede crear un procedimiento dentro de otro

Un ejemplo para crear un procedimiento:

Private Sub ProcedimientoBorrar()

label1 = ""label2 = ""label3 = ""

End Sub

 

En este ejemplo creamos un procedimiento muy simple que tendrá la función específica de borrar el contenido de 3 controles label.

¿ Pero ahora te preguntarás como hago para que se ejecute el procedimiento que he creado ?.

Muy fácil. 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), También un Commandbutton llamado Command1 y en la ventana de código 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 haríamos así:

 

Private Sub command1_click()

ProcedimientoBorrar

End Sub

 

Page 49: ARREGLOS Y VECTORES

Al presionar el Command1 visual basic detectaría el nombre ProcedimientoBorrar, y automáticamente saltaría al lugar donde creamos el procedimiento y ejecutaría las líneas de código que haya en ese procedimiento.

También 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 parámetros, debemos pasarlos entre paréntesis ( los parámetros de procedimientos y funciones se explican a continuación)

una vez que se ha terminado de ejecutar las instrucciones que estén dentro del bloque del procedimiento, volvería a la línea siguiente de donde fue llamado el mismo, y ejecutaría todas las líneas restantes de código. En este caso no ejecutaría nada mas por que no hemos puesto ninguna otra instrucción debajo de ProcedimientoBorrar.

La principal ventaja de crear procedimientos de código es que evita tener que escribir varias veces las mismas instrucciones en un programa, el código se hace mucho mas funcional y entendible, se pueden dividir un problema (una rutina), en varios procedimientos y probarlos independientemente, y además la posibilidad de enviar parámetros a los procedimientos

 

1.1 - Pasar parámetros a los procedimientos:

Se utilizan los parámetros en los procedimientos para que el procedimiento no ejecute siempre las mismas líneas de código y pueda variar, teniendo la posibilidad de hacerlo mas dinámicamente. En ciertas ocaciones no es necesario enviar parámetros, pero en otras es prácticamente fundamental. Los parámetros son datos, casi de cualquier tipo, que se pasan seguido del nombre del procedimiento, y si es mas de uno deben ir separados por comas (,). Ejemplo:

 

DatosPersonales "Luciano", 25, "La plata"

En este ejemplo pasamos tres parámetros: El primero es un nombre y es un dato de tipo String y por ende debe ir entre comillas. El segundo es un número y el tercero también un string. , o sea una cadena de caracteres

Page 50: ARREGLOS Y VECTORES

Pero la cosa no queda acá. Si nosotros vamos a pasar parámetros a un procedimiento, cuando creamos el procedimiento debemos establecer que tipo de parámetros va a recibir el mismo. Ejemplo:

Private Sub DatosPersonales(nombre As String, edad As Integer, ciudad As String)

Label1 = nombreLabel2 = edadLabel3 = ciudad

End Sub

siguiendo, el ejemplo anterior creamos un procedimiento con tres parámetros. Cada parámetro 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 podríamos por ejemplo, en el evento click de un Command1, llamar al procedimiento y pasarle los parámetros.

Coloca un Command1 , 3 controles Label, copia en la ventana de código el procedimiento anterior llamado DatosPersonales, y ahora pega el siguiente código

Private sub command1_click()

DatosPersonales "Luciano", 25, "La plata"

End sub

 

Al presionar el botón se llamará al procedimiento que habíamos creado anteriormente, y le pasará los valores de los parámetros en el orden en que estén establecidos declarados en el procedimiento. Esto quiere decir que el primer parámetro 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.

Después 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.

Page 51: ARREGLOS Y VECTORES

Es muy importante respetar el orden en que pasamos los parámetros en un procedimiento, por que por ejemplo en el caso anterior si hubiésemos pasado los parámetros de esta forma:

 

DatosPersonales 25, "Luciano", "La plata"

 

el segundo parámetro "Luciano" se almacenaría en la variable Edad que es de tipo Integer y se produciría un error en tiempo de ejecución por no coincidir los tipos de datos, ya que la variable espera un valor numérico 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 parámetros, cuando lo llamemos, no podemos enviarle solo 1 parámetro, debemos obligatoriamente pasarle los 2 parámetros que hubiésemos declarado en el mismo. Un ejemplo que daría un error en tiempo de ejecución por no pasar adecuadamente los parámetros sería:

 

Private Sub sumar(a As Integer, b As Integer)

Label1 = a + b

End Sub

hasta aquí creamos un procedimiento llamado sumar que recibirá 2 parámetros de tipo Integer, si nosotros llamamos al procedimiento y le pasamos un solo valor, por ejemplo:

Call sumar ( 456 )

 

Esto daría un error de compilación por que el procedimiento espera recibir 2 parámetros ..y nosotros le estamos pasando o enviando solo uno de ellos.

Precisamente el cartel de error que te mostraría visual basic sería el siguiente:

 

Page 52: ARREGLOS Y VECTORES

 

Nota: hay una sentencia llamada Optional que SI permite pasar parámetros 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 parámetro Email, esta no dará error, por ejemplo:

 

Call Con_Parametro_Opcional("Maria")

 

Nota: Los parámetros opcionales, si o si deben estar declarados al final de la lista de parámetros, por ejemplo esto no se puede hacer:

 

Page 53: ARREGLOS Y VECTORES

Private sub una_Rutina ( Optional Email As String, Nombre as String )

 

Función IsMissing

Esta función se utiliza cuando utilizamos parámetros opcionales en una función o procedimiento, y nosotros, dentro del mismo queremos saber y averiguar si se han enviado los parámetros opcionales

El uso de IsMissing muy simple. Esta función retorna el valor True si NO se ha enviado el parámetro que queremos comprobar, y devuelve False si el parámetro 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 " NO Se ha enviado el parámetro NOMBRE ", vbInformation

Else

MsgBox " Se ha enviado el parámetro NOMBRE ", vbInformation

End If

End Sub

'Acá No se envía el parámetro

Private Sub Command1_Click()

Mostrar_Dato

End Sub

Page 54: ARREGLOS Y VECTORES

'Acá Si se envía el parámetro

Private Sub Command2_Click()

Mostrar_Dato "María"

End Sub

 

1.3 - Pasar parámetros por valor y por referencia ( ByVal y ByRef )

los parámetros en las funciones y procedimientos, se pueden enviar de dos maneras: por Valor y por Referencia.

Si están declarados como ByVal, los mismos serán por valor, si se declaran como ByRef serán por referencia.

La diferencia entre uno y otro método de paso de parámetros, es que en ByVal se envía una copia de la variable, y de esta manera si se efectúa un cambio en el procedimiento, solo tendrá efecto dentro del procedimiento o función, una ves que termine y finalice el mismo, la variable original pasará a valer el dato que tenía, es decir no se modifica

En los parámetros enviados por Referencia, lo que se hace es enviar un puntero de la variable original. Entonces, si en la función o procedimiento se cambia el valor de la variable, el cambio seguirá manteniéndose una ves que finalice la ejecución del procedimiento o función.

 

1.4 - Ejemplo de envío de parámetros por Valor ( ByVal )

 

Código de ejemplo

Private Sub Command1_Click()

Dim Un_Valor As Long

Page 55: ARREGLOS Y VECTORES

Un_Valor = 100

'Se envía la variable por Valor ( ByVal )

Call Sumar(Un_Valor)

'Muestra el valor que es 100, ( no se modificó en la función 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 parámetro 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 línea 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 envía una copia de la variable original y cualquier cambio que se produzca, será solo en el ámbito del procedimiento o función

Page 56: ARREGLOS Y VECTORES

 

1.5 - Ejemplo de envío de parámetros por Referencia ( ByRef )

Este ejemplo es igual que el anterior, pero en la Sub sumar , la variable Valor se declara con ByRef ( por Referencia )

Código

Private Sub Command1_Click()

Dim Un_Valor As Long

Un_Valor = 100

'Se envía 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

 

 

Page 57: ARREGLOS Y VECTORES

Al probar el código, 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 función, 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 parámetro de una función o Rutina ni ByVal, ni ByRef, se asume que la misma se está enviando como referencia (ByRef).

Es decir lo siguiente recibe el parámetro como Referencia

Sub Sumar(Valor As Long)

.. que es lo mismo a esto:

Sub Sumar(ByRef Valor As Long)

 

2 - Las Funciones en visual basic

 

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 código, en como se le pasa los parámetros etc..

La diferencia fundamental con respecto a los procedimientos o subrutinas es que estos, luego de ejecutar el código 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 código que contienen y luego mueren por decirlo de alguna manera.

 

Para declarar o crear una función podríamos escribir lo siguiente:

Private Function Total(Valor1 As Integer, Valor2 As Integer) As Long

Page 58: ARREGLOS Y VECTORES

Total = Valor1 + Valor2

End Function

 

Seguramente notaste que declaramos la función llamada Total, y al final de los parámetros dice As Long , esto es por que como dijimos las funciones retornan o devuelven un valor, o sea que en este caso la función 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 números, cadenas, fechas, arreglos y vectores

Para llamar a la función anterior podríamos hacerlo de la siguiente manera:

Label1.caption = Total 502, 1478

 

En este caso el control Label1 llamaría a la función Total , la función realizaría la suma de los valores pasados como parámetros y por último el valor final de la suma se lo asignaría al control label1.

Nota : En el siguiente link , hay un ejemplo de una función que retorna un array de tipo string

Funciones para el tratamiento de cadenas

Las funciones de cadena , como su nombre lo indica, se utilizan para trabajar y tratar las cadenas de caracteres.

A continuación las mas importantes de ellas.

1.1 - Función Lcase y Ucase

Estas dos funciones se utilizan para convertir cadenas de texto a minúscula y mayúscula.

Page 59: ARREGLOS Y VECTORES

La función Lcase cambia o convierte una cadena de texto a minúscula y un ejemplo de como utilizarla sería así:

Lcase (cadena que queremos convertir a minúsculas)

 

Ejemplo:

Dim cadena As String

cadena = "HOLA MUNDO"

'Convertimoscadena = LCase(cadena)

'La variable cadena ahora vale "hola mundo"

 

La función Ucase funciona de la misma manera que Lcase pero convierte el contenido de una cadena a mayúsculas.

Por ejemplo, si tenemos un control Label1 que contiene un texto que dice: "Porcentaje de sueldos", escribiendo la siguiente línea:

Label1 = UCase(Label1)

 

El control Label1 pasaría a mostrar o mejor dicho contener en su propiedad caption:"PORCENTAJE DE SUELDOS".

1.2 - Función Trim, LTrim y RTrim

Estas tres funciones se utilizan para eliminar los espacios vacíos de una cadena.

LTrim elimina los espacios vacíos de la parte izquierda de la cadena, RTrim de la parte derecha y Trim de ambas partes.

Ejemplos:

Page 60: ARREGLOS Y VECTORES

Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar los espacios vacíos de la izquierda haríamos lo siguiente:

ciudad = LTrim(ciudad)

 

Si en un TextBox quisieramos borrar todos los espacios vacíos de la parte derecha de la cadena:

MiText = RTrim(MiText)

 

La Función Trim elimina todos los espacios vacíos de ambos lados de la cadena. Ejemplo:

Pais = "     Argentina     "País = Trim(Pais)

Ahora el valor de País es igual a: "Argentina".

1.3 - Función Len

La función Len nos permite conocer la cantidad de caracteres que tiene una determinada cadena. O sea que esta función nos devuelve un número.

Ejemplo:

Len (Aquí va la cadena que queremos averiguar su tamaño)

 

Como la función Len devuelve un número debemos asignar ese número devuelto en una variable de tipo numérica.

Ejemplo:

Page 61: ARREGLOS Y VECTORES

Dim TamanoCadena As Long

Dim MiCadena As String

MiCadena = "Me Llamo Eustaquio"

TamanoCadena = Len(MiCadena)

 

El valor de la variable TamanoCadena pasaría a valer 18.

Hay que tener en cuenta que la función Len también toma en cuenta los espacios vacíos.

 

1.4 - Función Asc y Chr

La función Asc nos permite obtener el código ASCII de un de terminado caracter.

Ejempos:

Si queremos obtener el código ASCII del caracter "a", que es el número 97 podríamos hacer lo siguiente:

Dim num As Integer num = Asc("a")

En definitiva la función Asc lleva un solo parámetro de tipo String del cual queremos obtener dicho número.

La Función Chr actúa a la inversa de la función Asc, esto quiere decir, que a partir de un determinado número nos devolverá el caracter ASCII.

Obviamente que en vez de pasarle a la función un parámetro String es decir la letra, debemos pasarle un número ASCII y nos devolverá el carácter asociado.

Ejemplo:

Page 62: ARREGLOS Y VECTORES

Dim letra As String

letra = Chr(97)

La variable pasa a valer en este caso el caracter "a"

 

1.5 - Función InsTr

La función InStr se utiliza para buscar una cadena o parte de una cadena dentro de otra cadena.

Si la función encuentra la cadena a buscar devuelve un número que representa la posición donde encontró la cadena, si no la encuentra devuelve un 0.

Los parámetros que lleva esta función son:

InStr (comienzo, Cadena donde buscar , La Cadena a buscar)

Como esta función devuelve un número debemos almacenarla en una variable de tipo numérica para utilizarla.

Ejemplo:

Dim posicion As Integer

posicion = InStr("Estoy tomando mate", "mate")

En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que la variable posición pasa a valer 15.

Si observamos bien, la función en el primer parámetro, denominado comienzo, nos pide que le digamos desde que posición comenzar a buscar. En nuestro ejemplo, este parámetro lo obviamos, esto quiere decir que comenzará desde la posición 0 de la cadena a buscar. Pero podríamos especificar una posición en particular, por ejemplo desde la 5 , 10 etc..., según lo que necesitemos hacer.

 

Otro ejemplo de InsTr :

Page 63: ARREGLOS Y VECTORES

Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos opciones, un botón para buscar la primera frase, y otro que sigue buscando a partir de donde esté ubicda la selección.

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.

También colocar dos CommandButton: Command1 y Command2

 

 

Colocar el siguiente código fuente en el formulario:

Option Explicit

Private m_Pos As Integer

Sub buscar_cadena(ByVal Posicion As Integer)

Page 64: ARREGLOS Y VECTORES

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 pocición

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

Page 65: ARREGLOS Y VECTORES

Private Sub Form_Load()

Command1.Caption = "Buscar"

Command2.Caption = "Buscar siguiente"

Me.Caption = "Ejemplo de InStr "

End Sub 

 

Nota: también hay una función similar a Instr llamada InstrRev , y lo que hace es devolver la posición 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 función instrRev

Extraer de un path o ruta, solo la extensión del archivo

 

Función Left, Right y Mid

Estas funciones son utilizadas para extraer partes de una cadena.

La función Left:

tiene 2 parámetros: El primero es la cadena de la cual se extraerán caracteres, y el segundo un número desde el cual comenzar a extraer caracteres desde la parte izquierda.

Ejemplo:

Dim Cadena As String

Cadena = Left("Ya es la madrugada", 9)

'Cadena, que es un string, sería igual a: "Ya es la"

 

Función Right:

Es igual que la función Left pero comienza a extraer caracteres desde el lado derecho de la cadena.

Page 66: ARREGLOS Y VECTORES

La función Mid:

Tiene la misma función que las anteriores pero posee tres parámetros. Su sintaxis es:

Mid (cadena, inicio, longitud)

El parámetro cadena es la cadena a extraer caracteres. El parámetro Inicio es donde comenzar y el parámetro longitud, es la cantidad de caracteres a extraer de la cadena de caracteres

Ejemplos:

Dim nombre As Stringnombre = Mid("River perdió la copa", 7, 6)

'La variable nombre sería igual a: "perdió"

 

Este Otro ejemplo usa la función Mid para realizar un simple efecto tipo máquina de escribir.

Colocar en un formulario un CommandButton y el siguiente código 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

Page 67: ARREGLOS Y VECTORES

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

Page 68: ARREGLOS Y VECTORES

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 

 

 

1.6 - Función Str y Val

La función Val convierte una cadena en un número yla función Str un número en una cadena.

Ejemplos:

cadena = "123456"cadena = Val(cadena)

'Ahora cadena vale 123456

Page 69: ARREGLOS Y VECTORES

cadena2 = 123456cadena2 = Str(cadena2)

'Ahora cadena2 vale "123456"

 

2 - Funciones para el tratamiento de números

Visual Basic posee muchas funciones para tratar números. A continuación las principales funciones.

 

2.1 - Función Round

La función Round se utiliza para redondear un número decimal, devolviendo un número entero.

Ejemplo:

Dim Mimumero As Long

Minumero = Round(245.8) '(La función devuelve 246)Minumero = Round(245.3) '(La función devuelve 245)Minumero = Round(245.5) '(La función devuelve 245)

Round posee un parámetro opcional por si queremos incluir los dígitos decimales.

 

2.2 - Rnd y Randomize - Números aleatorios

Para generar números aleatorios, Visual Basic incluye 2 funciones: Rnd y Randomize.

La función Rnd devuelve un número aleatorio, y esta posee un solo parámetro.

Ejemplo :

Page 70: ARREGLOS Y VECTORES

Rnd (número)

 

Pero para poder generar dichos números aleatorios, debemos utilizar previamente la función Randomize con la siguiente fórmula:

Dim LimiteInferior As IntegerDim LimiteSuperior As Integer

LimiteInferior = 20

LimiteSuperior = 40

MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd + LimiteInferior)

En el ejemplo anterior, se generarán números aleatorios comprendidos entre el 20 y el 40

Nota: en este enlace podés ver un ejemplo que permite generar números aleatorios no repetidos

 

Funciones matemáticas

Las principales funciones matemáticas provistas por Visual Basic son:

Abs: Devuelve el valor absoluto de una expresión numérica.

Atn: Devuelve el arco tangente de un número.

Cos: Devuelve el coseno de un ángulo.

Exp: Devuelve el número "e" elevado a una potencia.

Log: Devuelve el logaritmo natural de un número.

Sgn: Devuelve un valor indicando el signo de un número.

Sin: Devuelve el seno de un ángulo.

Sqr: Devuelve la raíz cuadrada de un número.

Tan: Devuelve la tangente de un ángulo.

Page 71: ARREGLOS Y VECTORES

 

 

 

3 - Funciones de formato

Visual Basic posee varias funciones para darle formato a distintos tipos de datos e información. A continuación se ve algunos ejemplos de las principales funciones:

FormatCurrency: Esta función se utiliza para trabajar con

números con formato en dinero. Ejemplo:

si tenemos un número 3 y utilizamos la función nos devolvería

"$3".

FormatPercent: Esta función es utilizada para trabajar con

porcentajes. Ejemplo :

si tendríamos un número 321, nos devolvería: "32,1%" .

FormatDateTime: Esta función trabaja con fechas y horas.

FormatNumber: Formatea expresiones números

 

Resultado = FormatPercent(321) 'devuelve: "32.100,00%"Resultado = FormatCurrency(3)  'devuelve: "$3,00"Resultado = FormatDateTime("6-8-1978")  'La función devolvería: "06/08/1978"

 

NumDigitsAfterDecimal: Parámetro de tipo opcional. Este indicará cuantos números decimales devolverá la función:

Ejemplo

cadena = FormatCurrency(325, 3) 'Devuelve: "$325,000"

Page 72: ARREGLOS Y VECTORES

 

Ejemplo de la función FormatDateTime

 

Esta función, en el primer parámetro se le debe pasar la fecha u hora a formatear, y el segundo parámetro es el tipo de formato, pueden ser 5 tipos.

vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime.

Este parámetro es de tipo opcional. al colocar la coma dentro de la función , visual basic despliega la lista de constanetas mencionadas, como muestra el gráfico:

 

Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco option Button, cada botón de opción mostrará los diferentes formatos en el caption del formulario, es decir en la barra de título.

 

 

Código en el formulario:

Page 73: ARREGLOS Y VECTORES

 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:

 

Page 74: ARREGLOS Y VECTORES

Formatea 0.489698 a 0,49

Dim Numero As Double

Numero = 0.489698Numero = FormatNumber(Numero, 2, vbFalse)

MsgBox Numero

Formatea 1.958754 a 1,96

Dim Numero As Double

Numero = 1.958754Numero = FormatNumber(Numero, 2)

MsgBox Numero

 

Función Format:

La función Format es mas completa que las anteriores funciones, porque puede manejar mas tipos de datos, y no devuelve solo cadenas, esta también puede devolver números y fechas.

La función Format posee dos parámetros:

Format (Expresión, formato)

 

En el primero debemos colocar cualquier expresión válida. El segundo es opcional y a continuación veremos una descripción de los formatos de VB:

GeneralNumber: Devuelve el número sin formato.

Currency: Devuelve el número en formato moneda, con el

símbolo "$" y 2 decimales a las derecha.

Fixed: Devuelve como mínimo un dígito a la izquierda y 2 ala

derecha del decimal.

Page 75: ARREGLOS Y VECTORES

Standar: Similar a Fixed pero incluye un separador de miles.

Percent: Multiplica el número por cien y le agrega el símbolo

"%"

True/False: Devuelve Verdadero para un valor distinto de 0,y

Falso para 0.

On/OFF: Devuelve "Activado" para un valor distinto de 0, y

"Desactivado" para 0.

La forma de pasar el parámetro es entre comillas.

Ejemplo:

cadena = Format(75, "Currency") ' Devolvería: "$75,00"

 

Nota: Si ingresamos un número decimal, debemos utilizar el "." y no la coma "," ya que la coma determina el comienzo de otro parámetro dentro de la función y Visual basic daría error de sintaxis

4 - Funciones de formato para fechas y hora

 

Ejemplos de los principales Formatos con nombre para el manejo de Fechas y Horas:

Funciones para Fechas

 

Dim cadena As String

cadena = Format("06/08/78", "General Date") ' Devuelve: "06/08/1978"

cadena = Format("19/08/79", "Long Date") ' Devuelve : "Jueves 19 de Agosto de 1979".

Page 76: ARREGLOS Y VECTORES

cadena = Format("19/8/79", "Medium Date") ' Devuelve: "19-Ago-1979"

cadena = Format("17:08", "Short Time") ' "05:08"

cadena = Format("17:08", "Medium Time") ' "05:08 PM"

cadena = Format("17:08", "Long Time") ' "05:08:00 PM"

4.1 - Funciones para calcular fechas

Visual basic cuenta con una serie de funciones que nos permiten calcular fechas y horas, por ejemplo generar un intervalo de fechas, sumar y restar fechas y horas y otras operaciones y cálculos

DateAdd : Devuelve un Variant que contiene una fecha que indica el intervalo de tiempo que se ha agregado

DateDiff : Devuelve el número de intervalos de tiempo entre dos fechas determinadas

DatePart : Devuelve una parte específica de una fecha dada

DateSerial : Devuelve un valor Date para un año, mes y día determinados

 

Ejemplos

El siguiente ejemplo utiliza la función DateDiff para mostrar el itervalo entre dos fechas. El intervalo lo muestra en segundos , minutos, dias, semanas meses y años, como muestra el siguiente gráfico

 

Page 77: ARREGLOS Y VECTORES

Colocar en el formulario un Command1.

Option Explicit

' recibe las dos fechas como parámetros

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub Calcular(Fecha_Inicial As Date, _

Fecha_Final As Date)

Const Formato As String = "#,##0"

Me.Cls

Me.Print "Calcular Intervalos entre las fechas " & Fecha_Inicial & _

" hasta :" & Fecha_Final & vbNewLine & String(150, "-") & vbNewLine

Me.Print Format(DateDiff("s", Fecha_Inicial, Fecha_Final), Formato) & " segundos"

Me.Print Format(DateDiff("n", Fecha_Inicial, Fecha_Final), Formato) & " minutos"

Me.Print Format(DateDiff("h", Fecha_Inicial, Fecha_Final), Formato) & " horas"

Me.Print Format(DateDiff("y", Fecha_Inicial, Fecha_Final), Formato) & " dias"

Me.Print Format(DateDiff("WW", Fecha_Inicial, Fecha_Final), Formato) & " semanas"

Me.Print Format(DateDiff("m", Fecha_Inicial, Fecha_Final), Formato) & " meses"

Me.Print Format(DateDiff("yyyy", Fecha_Inicial, Fecha_Final), Formato) & " años"

Page 78: ARREGLOS Y VECTORES

End Sub

Private Sub Command1_Click()

' le pasa las dos fechas a la función

Call Calcular("01/01/2000", Date)

End Sub

Private Sub Form_Load()

Me.AutoRedraw = True

Command1.Caption = "calcular intervalos "

End Sub

 

Ejemplo con DateAdd

Lo siguiente, muestra como añadir y restar fechas

' agrega 10 años 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 parámetro intervalo la "S", para minutos usar la "n", para horas la "h", para restar y sumar semanas la "ww"

Page 79: ARREGLOS Y VECTORES

 

En el siguiente enlace podés 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 día de un mes

4.2 - Funciones para obtener la fecha u hora actual de la PC

 

Dim Cadena As StringCadena = Date ' Devuelve el día del sistema en este formato: "02/08/2004"

Cadena = Time ' Devuelve la hora del sistema en este formato: "17:32:51"

'Funciones para establecer la fecha u hora de la PC:

Date = (La fecha que queremos establecer)

Time = (La hora que queremos establecer)

 

5 - Funciones para presentar mensajes

 

Visual Basic posee 2 tipos de funciones para presentar mensajes, ellas son MsgBox e InputBox.

Función InputBox:

La función InputBox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto:

 

Page 80: ARREGLOS Y VECTORES

 

Como se dijo la función InputBox presenta un cuadro de diálogo donde el usuario puede ingresar un texto y luego aceptar o cancelar dicho cuadro de diálogo.

Los parámetros principales de esta función son:

InputBox (Promt,Title, Default)

 

El parámetro Prompt específica la leyenda que mostrará la caja

de mensajes.

El parámetro Title especifica el título que llevará el cuadro de

diálogo.

El parámetro Default es el texto que mostrará la caja de texto.

 

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 específica dependiendo del valor devuelto.

Ejemplo:

Dim retorno As String

retorno = InputBox("Ingrese algo en la caja de texto", "Ejemplo")

Page 81: ARREGLOS Y VECTORES

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 botón de Aceptar.

Cuando el usuario presiona Candelar, el InputBox devuelve una cadena vacía. Esto es importante tenerlo en cuenta para realizar una o tal acción

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 condición en un bucle Do Loop

 

Código fuente en el formulario

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 :

Page 82: ARREGLOS Y VECTORES

InputBox con PasswordChar

 

 

Función MsgBox:

La función MsgBox, que ya se vió varias veces en distintos ejemplos, es muy fácil de usar y se utiliza para mostrar distintos tipos de mensajes.

Ejemplos de mensajes o cajas de texto con la función MsgBox que podemos mostrar:

 

 

Como se ve en los gráficos anteriores, con MsgBox podemos tener variedad a la hora de mostrar un determinado mensaje, utilizando para ello las diferentes constantes que incorpora la función.

Los parámetros mas importantes son:

Title : Es la leyenda que aparecerá en el título del mensaje.

Texto : Es el Texto que mostrará el mensaje.

Botones: En este parámetro se colocan las constantes que

determinarán si la caja tiene uno o varios botones y el tipo de

Page 83: ARREGLOS Y VECTORES

mensaje: informativo, de exclamación de alerta etc... Cuando

escribimos la coma dentro de la función en el parámetro

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 parámetros que varían 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 parámetro indicamos el path del archivo en el que queremos trabajar.

Luego la palabra "As #1" indica el número de archivo que estamos utilizando. Este número lo asignamos nosotros y va desde el rango 1 al 511. El "número de archivo" se utiliza para poder diferenciar al archivo en el código. Cada archivo que se encuentra abierto no se puede asignar un número de archivo igual, ya que nos daría un error en tiempo de ejecución.

Por ejemplo no podríamos hacer esto:

 

Open "archivo1.txt" For Input As #1Open "otroarchivo1.txt" For 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 número de archivo que lo identifica.

Page 84: ARREGLOS Y VECTORES

Por ejemplo:

Close #2

 

Esto cerrará al archivo abierto que anteriormente le asignamos el número de archivo 2. También si tengo 3 archivos abiertos podría hacer lo siguiente:

Close #1, #2, #3

 

Si utilizamos la sentencia Close sin ningún parámetro, o mejor dicho ningún número de archivo, se cerrarán todos los archivos cargados en memoria por nuestra aplicación (los que nosotros abrimos con Open).

Por lo general, si trabajamos con varios archivos abiertos simultáneamente, es aconsejable utilizar la sentencia Close sin ningún parámetro, de este modo cuando termine de ejecutarse el procedimiento se cerrarán todos los archivos abiertos.

Hay una función en Visual basic llamada FreeFile. Esta función lo que hace es darnos un número 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 ejecución. Para usar la función es muy fácil, por ejemplo:

Dim NumeroArchivo As Integer

NumeroArchivo = 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 demás datos, de forma secuencial.

Page 85: ARREGLOS Y VECTORES

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 utilizáramos un archivo para almacenar 50000 nombres con sus respectivos datos (apellido, teléfono, dirección etc...) , este mecanismo resultaría ineficiente, ya que si quisiera recuperar por ejemplo el registro n° 3650, para leer este dato tendría 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 información a un archivo de texto.

Ejemplo :

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

 

Si el archivo ya contiene datos, se le agregarán al mismo al final del archivo, si no contenía 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 próximas líneas 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 ejecución 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 añadir algún 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:

Page 86: ARREGLOS Y VECTORES

Output crea el archivo y le agrega información, pero si el archivo existía y contenía información 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.

Conclusión : si vamos a añadir datos a un archivo existente (para actualizarlo por ejemplo) hay que utilizar la sentencia Append. si vamos a crear un archivo vacío 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 mivariable As String

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

While Not EOF(1)

Line Input #1, mivariable

Wend

Close #1

 

En el ejemplo anterior aparece una función nueva llamada EOF. Esta función significa End Of File o fin de archivo.

Cuando abrimos un archivo para leer información con Input, debemos saber en que momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o Input seguiría leyendo líneas donde no existen datos

Page 87: ARREGLOS Y VECTORES

después del fin del archivo, y por lo tanto se produciría un error en tiempo de ejecución por querer leer un dato que no existe.

Mediante la condición 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, línea por línea los datos del mismo. Es evidente que como está planteado el ejemplo habría que manipular los datos leídos y agregar otras instrucciones, por que en este ejemplo la variable mivariable solo almacenaría los datos de la línea que está leyendo y borrando los datos de las líneas que almacenó anteriormente. Mas adelante veremos como solucionar esto.

conclusión : 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 línea actual

Line Input #1, nuestravariable

 

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

 

Lo siguiente, lee un archivo de texto línea por línea, 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:

 

 

Page 88: ARREGLOS Y VECTORES

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

'Número 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 añade 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 "Número de error: " & Err.Number & vbNewLine & _

"Descripción del error: " & Err.Description, vbCritical

Page 89: ARREGLOS Y VECTORES

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 líneas del mismo

Colocar un command1 en el formulario y pegar el siguiente código fuente

 

Public Function Contar_Lineas(ByVal strTextFile As String) As Long

Dim F As Integer

Dim Lineas As Long

Dim str_Linea As String

' Número 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

Page 90: ARREGLOS Y VECTORES

Do

'Lee una línea

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 función el número 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 líneas ")

If Path = vbNullString Then Exit Sub

MsgBox " Cantidad de lineas: " & Contar_Lineas(Path)

End Sub

 

Page 91: ARREGLOS Y VECTORES

 

 

7 - Leer el contenido de un archivo de texto con la función Input

La función input, a diferencia de Line Input que Lee por línea, 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 función Input:

Contenido = Input(LOF(1), #1)

Un ejemplo:

Lo siguiente lee el contenido de un archivo txt y lo carga en un textBox multilínea

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

Código en un botón:

On Error GoTo Err_Sub

Dim n_File As Integer

Dim Contenido As String

'Número de archivo libre

n_File = FreeFile

Page 92: ARREGLOS Y VECTORES

'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 nombre As String

Dim edad As Integer

Page 93: ARREGLOS Y VECTORES

Dim telefono As String

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

Print #1, "esta es una línea"

Print #1, "esta es otra línea"

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 parámetros. el primero indica el archivo que estamos manipulando (el archivo n°1, dentro del código), el segundo parámetro indica los datos que se agregarán en el mismo. En el segundo parámetro podemos poner un dato directamente (una cadena, número, 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 As StringDim apellido As String

apellido = "Peres"

Page 94: ARREGLOS Y VECTORES

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 línea escribirá el contenido de las variables nombre y apellido . También 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 página 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 código se encuentra detallado cada paso y lo podés descargar al final de esta página.

 

9 - Archivos aleatorios o directos

A diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de registros. Como habíamos dicho en el capítulo anterior para leer datos de un archivo secuencial había que leer todo el archivo, es decir que no podíamos leer por ejemplo los datos que estuviesen en la línea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial.

Page 95: ARREGLOS Y VECTORES

En cambio los archivos aleatorios, también 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) también 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 número de archivo para identificarlo, y por último una opción nueva : Len.

cada registro en el archivo, que es una estructura de datos Type, tiene que tener una longitud fija. Mediante la función Len de visual Basic debemos indicar el tamaño de la estructura de datos que vamos a utilizar. para que quede mas claro un ejemplo:

Primero definimos una estructura de datos:

 

Private Type t_clientes

nombre As String * 20apellido As String * 15dirección As String * 30edad As Integer

End Type

 

Después creamos una variable llamada clientes de tipo t_clientes

Page 96: ARREGLOS Y VECTORES

Dim clientes As t_clientes

 

ahora abrimos nuestro archivo, y en el parámetro de la función Len le pasamos la variable para que visual basic calcule el tamaño de la estructura t_clientes

 

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

 

La estructura de datos debe tener un tamaño 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 tamaño 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 dirección 30 bytes. La variable o el campo edad que es de tipo integer, no debemos indicar el tamaño de la variable, ya que sabemos que un número integer ocupa 2 bytes.

En total esta estructura t_clientes tiene una longitud de 67 bytes (30 + 20 + 15 + 2 ).

Si no indicáramos en la sentencia Open el tamaño de la estructura, visual basic, por defecto asumiría la estructura de un tamaño de 128 bytes, y si nuestra estructura tendría mayor tamaño ocurriría un error en tiempo de ejecución, por lo cual siempre debemos utilizar la función len para calcular el tamaño de la misma.

 

10 - Grabar datos en archivos aleatorios

Para 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 información de cada registro:

Page 97: ARREGLOS Y VECTORES

Private Type t_empleadosnombre As String * 15apellido As String * 15dirección As String * 30edad As IntegerEnd Type

 

Luego creamos una variable que sea de tipo t_empleados.

Dim empleados As t_empleados

Ahora abrimos el archivo e indicamos en la función Len el tamaño 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 = "Carlos"empleados.apellido = "Martinez"empleados.dirección = "Avenida 9 de julio n° 2054"empleados.edad = 45

 

Ahora grabamos en el registro n°1 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 = "María"empleados.apellido = "Gonzales"

Page 98: ARREGLOS Y VECTORES

empleados.dirección = "Avenida 13 n° 1100"empleados.edad = 35

Put #1, 2, empleados

Close #1

 

como vemos ver la sentencia Put lleva 3 parámetros. El primero indica el numero de archivo abierto en el cual estamos trabajando. en el segundo debemos indicar el número de registro en el que se grabarán los datos. Si no ponemos el número de registro, los datos se grabarán en el último registro. Por último en el tercer parámetro 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 #1, 258Get #1, , mivariable

 

si queremos posicionarnos en un registro determinado, pero en vez de leer, queremos grabar datos, hacemos la misma operación pero con la sentencia Put:

Page 99: ARREGLOS Y VECTORES

Seek #1, 258Put #1, , mivariable

 

Nota: Desde este enlace podés ver un simple código fuente de una Agenda de contactos utilizando Archivos Directos - Aleatorios

 

13 - Funciones propias de vb para el manejo de ficheros y directorios

Visual basic posee varias funciones para manejar archivos y directorios de nuestro sistema. Las principales son.

 

14 - Función Dir

La función 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 patrón de búsqueda. La sintaxis de la función es:

Dir (ruta, atributos)

 

En el parámetro ruta debemos indicar el path de un archivo, directorio o unidad. Si el path no existe, la función Dir devuelve una cadena vacía.

En el parámetro 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

Page 100: ARREGLOS Y VECTORES

Ejemplo:

Si el archivo existe Dir devuelve "autoexec.bat"

Archivoabuscar = Dir("c:\autoexec.bat")

 

También podemos utilizar los comodines * y ? para filtrar búsquedas.

En este ejemplo devuelve el primer archivo exe que encuentra, si es que existe.

Archivoabuscar = Dir("c:\windows\*.exe")

 

En este ejemplo la función Dir devuelve directorios además de archivos

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

 

El único inconveniente de esta función es que siempre devuelve el primer archivo que encuentra. Para que continúe buscando los demás archivos debemos poner la función sin parámetros. Ejemplo

Dim archivo As String

archivo = Dir("c:\*.exe")

While archivo <> ""archivo = DirWend

 

En el ejemplo anterior buscará todos los archivos exe en el directorio c:\. cuando ya no encuentre mas devolverá una cadena vacía y saldrá del bucle While.

 

Page 101: ARREGLOS Y VECTORES

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 función Dir para buscar archivos y también ordenarlos enforma alfabética y luego agregar la lista en un control Listbox

Este otro enlace muestra como buscar ficheros mediante el Api de windows

 

15 - Función FileCopy

FileCopy nos permite copiar archivos. Esta función es muy fácil de usar. ejemplo:

Page 102: ARREGLOS Y VECTORES

FileCopy "origen", "destino"

Nota: si el archivo existe la función lo sobre escribe.

 

16 - Función MkDir

Esta función 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 los subdirectorios", " Crear varios niveles de directorios")

Page 103: ARREGLOS Y VECTORES

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 - Función kill

La función kill se utiliza para eliminar archivos. También es muy fácil de

Page 104: ARREGLOS Y VECTORES

utilizar, y el único parámetro que lleva es la ruta del archivo que queremos eliminar. Si queremos eliminar varios archivos de un directorio podemos utilizar el comodín"*", y si queremos excluir ciertos archivos utilizamos el comodín "?".

kill "c:\*.txt"

18 - Función FileLen

E sta función nos devuelve el tamaño en bytes de un archivo.

Ejemplo:

Dim tamaño As Long

tamaño = FileLen("c:\windows\system32\control.exe")

MsgBox tamaño & " 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 tamaño del archivo por el tamaño de la estructura.

Ejemplo:

Private Type t_personas

nombre As String * 20apellido As String * 20

End Type

Dim cant_reg As Long

Private Sub Form_Load()

cant_reg = FileLen("c:\miarchivo.dat") / Len(t_personas)

End Sub

 

Page 105: ARREGLOS Y VECTORES

 

 

19 - Función Name

Name se utiliza para renombrar archivos y directorios. Esta función no se puede utilizar para renombrar archivos abiertos.

Ejemplo:

Name "path del archivo viejo a renombrar" as "path y nombre nuevo del archivo"

También con esta sentencia podemos mover archivos y directorios a otra ubicación. para ello debemos cambiar en el segundo parámetro la ruta del archivo.

 

20 - Función GetAttr y SetAttr

La función Getattr permite recuperar información sobre los atributos de un archivo o directorio. Ejemplo:

 

GetAttr "ruta del archivo"

 

los valores devueltos por la función pueden ser los siguientes:

0 - normal

1 - solo lectura

2 - oculto

4 - archivo de sistema

16 - directorio

32 - archivo modificado

 

Page 106: ARREGLOS Y VECTORES

El siguiente ejemplo lo que hace es mostrar en un MsgBox los atributos de un archivo. Colocar un TextBox llamado Text1 y un Command1.

 

 

Código 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 = Si" & vbNewLine

Else

Atributos = " Normal = No" & vbNewLine

End If

If ret And vbReadOnly Then

Atributos = Atributos & " Solo Lectura = Si" & vbNewLine

Else

Page 107: ARREGLOS Y VECTORES

Atributos = Atributos & " Solo Lectura = No" & vbNewLine

End If

If ret And vbHidden Then

Atributos = Atributos & " Oculto = Si" & vbNewLine

Else

Atributos = Atributos & " Oculto = No" & vbNewLine

End If

If ret And vbSystem Then

Atributos = Atributos & " Sitema = Si" & vbNewLine

Else

Atributos = Atributos & " Sitema = No" & vbNewLine

End If

If ret And vbDirectory Then

Atributos = Atributos & " Directorio = Si" & vbNewLine

Else

Atributos = Atributos & " Directorio = No" & vbNewLine

End If

'Muestra los atributos del archivo elegido

MsgBox Atributos, vbInformation, " Atributos "

End Sub

 

 

La función SetAttr lo que hace es establecer los atributos de un archivo .

Ejemplo:

 

SetAttr "ruta del archivo", valores de los atributos

Page 108: ARREGLOS Y VECTORES

 

21 - Función 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 ejecución. Si el directorio contiene archivos debemos eliminarlos previamente con la sentencia kill.

Ejemplo:

RmDir "path del directorio a remover"

Arrays de variables

    Los arrays discutidos en este apartado permiten referirse a una serie de variables por un mismo nombre y acceder individualmente a cada una de ellas utilizando un índice (variables subindicadas). Este tipo de arrays tiene que declararse en el código y pueden tener una o más dimensiones.

 Arrays estáticos

Para declarar un array estático (array con un número fijo de elementos), Visual Basic hace tres consideraciones importantes:

Para declarar un array global, hágalo en la sección de declaraciones de un módulo utilizando la sentencia Public.

Para declarar un array a nivel de un módulo, hágalo en la sección de declaraciones del módulo utilizando la sentencia Public o Dim.

Para declarar un array local a un procedimiento, utilice la sentencia Dim o Static dentro del propio procedimiento.

     A diferencia de otras versiones de Basic, Visual Basic no permite declarar implícitamente un array. Un array tiene que ser declarado explícitamente, y los índices del mismo deben estar en el rango (-2.147.483.648 a 2.147.483.647).

     A continuación se muestran algunos ejemplos:

     Dim Array_A(19) As String

     Este ejemplo declara un array de una dimensión, Array_A, con veinte elementos, Array_A(0), Array_A(1),..., Array_A(19), cada uno de los cuales permite almacenar una cadena de caracteres de longitud variable.

     Dim Array_B(3, 1 To 6) As Integer

Page 109: ARREGLOS Y VECTORES

     Este ejemplo declara un array de dos dimensiones, Array_B, con 4x6 elementos, Array_B(0,1),..., Array_B(3,6), de tipo entero.

     Static Array_C(1 To 5, 1 To 5) As Integer

     Este ejemplo declara un array de dos dimensiones, Array_C, con 5x5 elementos, Array_C(1,1),..., Array_C(5,5), de tipo entero.

     Public Array_D(1 To 12) As String *60

     Este ejemplo declara un array de una dimensión, Array_D, con doce elementos, Array_D(1),..., Array_D(12), cada uno de los cuales permite almacenar una cadena de caracteres de longitud fija (60 caracteres).

Arrays Dinámicos

Cuando las dimensiones de un array no son siempre las mismas, la mejor forma de especificarlas es mediante variables. Un array declarado de esta forma es un array dinámico. El espacio necesario para un array estático  se asigna al iniciarse el programa y permanecerá fijo. El espacio para un array dinámico será asignado en cualquier momento durante la ejecución.

Para crear un array dinámico.

    Declare el array en la sección de declaraciones de un módulo con una sentencia Public si lo quiere global con Private o Dim si lo quiere s nivel del módulo, o en un procedimiento con Static o Dim si lo quiere local. Para especificar que el array va a ser dinámico deje la lista de dimensiones vacía. Por ejemplo:

     Dim Array_A()

Asigne el número actual de elementos con la sentencia ReDim.

ReDim Array_A(N+1)

    La sentencia ReDim puede aparecer solamente en un procedimiento y permite cambiar el número de elementos del array, no el número de dimensiones.

Por ejemplo, si declaramos el array_A a nivel de un módulo.

Private Array_A() as Integer

Para asignarle espacio al array utilizamos:

ReDim Array_A(5)

Page 110: ARREGLOS Y VECTORES

Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el array se pierden. Cuando le interese cambiar el tamaño del array conservando los valores del array, ejecute ReDim  con la palabra clave Preserve. Por ejemplo, supongamos un Array_A de dos dimensiones. La sentencia será:

ReDim Preserve Array_A(8)

Ahora para poder entenderlo mejor vamos a desarrollar un ejercicio básico sobre el tratamiento del contenido de un array de variables en vb6.

TIEMPO DE DISEÑO

Crearemos la siguiente interfaz para el mantenimiento de clientes.

1.Crear arreglos para los siguientes controles

    A.Arreglo de cajas de texto para lo cual el nombre será TxtDatos:

    B.Arreglo de botones de comandos para Desplazamiento de registros, el nombre

será CmdIra:

Page 111: ARREGLOS Y VECTORES

    B.Arreglo de botones de comando para Mantenimiento de registros , el nombre será CmdMantenimiento:

TIEMPO DE EJECUCIÓN

a)En declaraciones generales se digita lo siguiente:

 'Declarar el array de variables con 5 filas y 4 columnas de tipo cadena

Dim datos(1 To 5, 1 To 4) As String Dim reg As Integer, sw As String * 1

b)Luego se crean lo siguientes procedimientos privados para ser utilizados como librerías:

    Procedimiento para borrar el contenido de las cajas de texto:

  Private Sub Limpiacajas()  For i = 0 To 4     TxtDatos(i).Text = Empty   Next i  End Sub

       Procedimiento para cambiar el estado de habilitado de las cajas de texto:

  Private Sub estadocajas(cajas As Boolean)  For i = 1 To 4      TxtDatos(i).Enabled = cajas  Next i  End Sub

Page 112: ARREGLOS Y VECTORES

    Procedimiento para cambiar el estado de habilitado de los botones de comando de mantenimiento:

  Private Sub estadobotones(estado As Boolean)  cmdmantenimiento(0).Enabled = Not estado  cmdmantenimiento(1).Enabled = estado  cmdmantenimiento(2).Enabled = Not estado  cmdmantenimiento(3).Enabled = estado  cmdmantenimiento(4).Enabled = Not estado  cmdmantenimiento(5).Enabled = Not estado  cmdmantenimiento(6).Enabled = Not estado  If reg = 5 Then cmdmantenimiento(0).Enabled = False   End Sub

    Procedimiento para cambiar el estado de habilitado de los botones de comando de desplazamiento:

  Private Sub estadoira(est As Boolean)  For i = 0 To 3      CmdIra(i).Enabled = est  Next i  End Sub

c)Crear el procedimiento asociado al evento clic para el arreglo CmdIra:

  Private Sub CmdIra_Click(Index As Integer)  Dim puntero As Integer   If reg > 0 Then   Select Case Index      Case 0              puntero = LBound(datos, 1)              TxtDatos(0).Text = puntero              For i = 1 To 4                  TxtDatos(i).Text = datos(puntero, i)              Next i      Case 1              puntero = Val(TxtDatos(0).Text) - 1              If puntero >= LBound(datos, 1) Then                   TxtDatos(0).Text = puntero                  For i = 1 To 4                      TxtDatos(i).Text = datos(puntero, i)                  Next i              End If       Case 2              puntero = Val(TxtDatos(0).Text) + 1              If puntero <= reg Then                   TxtDatos(0).Text = puntero                  For i = 1 To 4                      TxtDatos(i).Text = datos(puntero, i)                  Next i              End If       Case 3              puntero = reg

Page 113: ARREGLOS Y VECTORES

              TxtDatos(0).Text = puntero              For i = 1 To 4                  TxtDatos(i).Text = datos(puntero, i)              Next i  End Select   End If   End Sub

d)Crear el procedimiento asociado al evento clic para el arreglo CmdMantenimiento:

  Private Sub cmdmantenimiento_Click(Index As Integer)  Dim ape As String, resp As String * 1, Control As Integer   resp = "N"  Select Case Index    Case 0      sw = "N"      estadobotones (True)      estadoira (False)      estadocajas (True)      Limpiacajas      reg = reg + 1      If reg >= UBound(datos, 1) Then cmdmantenimiento(0).Enabled = False

      TxtDatos(0).Text = reg      TxtDatos(1).SetFocus      Case 1        For i = 1 To 4         Control = i         If Len(Trim(TxtDatos(i))) = 0 Then            MsgBox TxtDatos(i).Tag + " se encuentra en blanco", vbOKOnly + vbInformation, "Aviso"           Control = Control - 1           TxtDatos(i).SetFocus           Exit Sub          End If         Next i        If Control = 4 Then            For i = 1 To 4               datos(reg, i) = TxtDatos(i).Text           Next i           estadobotones (False)           estadoira (True)           estadocajas (False)        End If       Case 2        If reg > 0 Then            sw = "M"           estadocajas (True)           TxtDatos(1).SetFocus           estadobotones (True)        Else            MsgBox "No existen registros para realizar la modificación", vbOKOnly + vbInformation, "Aviso"        End If

Page 114: ARREGLOS Y VECTORES

           Case 3        estadobotones (False)        estadoira (True)        estadocajas (False)        If sw = "N" Then            reg = reg - 1           Limpiacajas           CmdIra_Click (0)        End If       Case 4        If reg > 0 Then            ape = InputBox("Ingrese el apellido a buscar:", "Búsqueda")           If Len(Trim(ape)) > 0 Then               For i = 1 To 5               If Trim(ape) Like Trim(datos(i, 1)) Then                   TxtDatos(0).Text = i                  For X = 1 To 4                     TxtDatos(X).Text = Empty                      TxtDatos(X).Text = Trim(datos(i, X))                  Next X                  resp = "S"               Else                   If resp = "N" And i = 5 Then MsgBox "Cliente no localizado", vbOKOnly + vbInformation, "Aviso"               End If               Next i           Else               MsgBox "Ingrese el apellido del cliente", vbOKOnly + vbInformation, "Aviso"           End If          Else            MsgBox "No existen registros para realizar la búsqueda", vbOKOnly + vbInformation, "Aviso"         End If       Case 5         If reg > 0 Then            If MsgBox("Está seguro que desea eliminar el registro" +  Chr(13) + Chr(10) + "del Cliente " + TxtDatos(1).Text + _           " " + TxtDatos(2).Text + "?", vbYesNo + vbQuestion + vbDefaultButton2, "Confirmación") = vbYes Then               For i = Val(TxtDatos(0).Text) + 1 To reg                  For X = 1 To 4                      datos(i - 1, X) = datos(i, X)                  Next X              Next i              reg = reg - 1              For Y = 1 To 4                 datos(reg + 1, Y) = ""              Next Y              Limpiacajas              CmdIra_Click (0)              estadobotones (False)           End If          Else            MsgBox "No existen registros para eliminar", vbOKOnly + vbInformation, "Aviso"

Page 115: ARREGLOS Y VECTORES

         End If       Case 6         End End Select End Sub

e)Crear el procedimiento asociado al evento load para el Formulario:

  Private Sub Form_Load()  reg = 0  End Sub

f)Crear el procedimiento asociado al evento keypress para el arreglo TxtDatos:

  Private Sub TxtDatos_KeyPress(Index As Integer, KeyAscii As Integer)  Select Case Index          Case 1                  If KeyAscii = 13 Then                       TxtDatos(2).SetFocus                  End If           Case 2                  If KeyAscii = 13 Then                       TxtDatos(3).SetFocus                  End If           Case 3                  If KeyAscii = 13 Then                       TxtDatos(4).SetFocus                  End If           Case 4                  If KeyAscii = 13 Then                       cmdmantenimiento(1).SetFocus                  End If   End Select   End Sub

El objeto App

El objeto App posee una serie de propiedades para obtener información de nuestra aplicación

 

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 aplicación de forma relativa, es decir en donde realmente se encuentre nuestra aplicación, 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

Page 116: ARREGLOS Y VECTORES

en una ruta absoluta (por ejemplo "c:\Archivos de programa", puede darse el caso de que la aplicación 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 aplicación.

Ejemplo

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

 

En el ejemplo anterior, si nuestra aplicación contiene un archivo de configuración del programa, un gráfico o cualquier otro fichero, para poder localizarlo lo hacemos mediante el objeto App.path mas el archivo que deseamos e interponiéndole la barra invertida.

Nota: lo que hay que tener en cuenta para que no se produzca un error en tiempo de ejecución, es que el objeto App.path nos devuelve solo el nombre de directorio de nuestra aplicación pero sin la barra invertida al final, es decir que si deseamos por ejemplo hacer referencia a un archivo de nuestra aplicación para trabajar con él, debemos agregarlo nosotros.

Otro ejemplo podría 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 sería

 

Dim Ruta As String

Ruta = App.Path & "\imagen.gif"

Me.Picture = LoadPicture(Ruta) 

 

Propiedad PrevInstance del objeto App

Page 117: ARREGLOS Y VECTORES

 

Esta propiedad se utiliza para comprobar si nuestro programa ya está cargado en memoria devolviéndonos 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 aplicación, algo que no tendría mucho sentido en la mayoría de los casos.

De este modo si se intenta abrir el programa mas de una vez, podemos mostrar un mensaje informativo y descargar la aplicación mediante la sentencia End, o no mostrar nada y terminar la ejecución. 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 aplicación ya se encuentra cargada en memoria", vbInformation

' Finaliza el programa

End

End If

End Sub

 

 

Otras propiedades del objeto App

 

Page 118: ARREGLOS Y VECTORES

ExeName: Con ExeName podemos recuperar el nombre del

ejecutable de la aplicación en tiempo de ejecución

Hinstance: Esta propiedad nos retorna el handle o

manipulador de nuestra aplicación. Mediante esta propiedad y

algunas Apis relacionadas con este tema podemos controlar

nuestra algunas cosas

Taskvisible: es una propiedad de tipo boolean que se utiliza

para determinar si nuestra aplicación aparecerá en la lista de

tareas. Esta propiedad solo funciona si nuestra aplicación tiene

la propiedad visible en false

 

3 - Objeto Screen

Con el objeto Screen se puede determinar y obtener información sobre las fuentes instaladas en el sistema operativo, la resolución actual de la pantalla, el formulario y/o control que está activo,

Un ejemplo para poder obtener la resolución del monitor:

 

Dim Ancho As Integer

Dim Alto As Integer

Ancho = (Screen.Width / Screen.TwipsPerPixelX)

Alto = (Screen.Height / Screen.TwipsPerPixelY)

MsgBox "La resolución en Pixeles del monitor es de: " & vbNewLine & _

Page 119: ARREGLOS Y VECTORES

"Ancho: " & Ancho & vbNewLine & _

"Alto: " & Alto, vbInformation 

 

Para obtener el alto y el ancho en pixeles debemos hacer una simple conversión 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 colección 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

'Añade el nombre de la fuente al control

List1.AddItem Screen.Fonts(La_Fuente)

Next La_Fuente 

 

Mediante 4 líneas de código tenemos un control ListBox que muestra el nombre de todas las fuentes del sistema.

Page 120: ARREGLOS Y VECTORES

 

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 listarán las impresoras instaladas, y en agregar un Control ListBox donde agregarán las fuentes

 

Código 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

Page 121: ARREGLOS Y VECTORES

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

 

 

Page 122: ARREGLOS Y VECTORES

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:

 

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 método Clear del objeto ClipBoard podemos borrar el contenido del portapapeles (no requiere ningún parámetro)

 

Clipboard.clear

 

Con la siguiente línea podemos copiar una imagen del portapapeles a un control picture, si es que la hay, usando el método Getdata del objeto Clipboard

 

Page 123: ARREGLOS Y VECTORES

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 menúes y menúes contextuales o también llamados menú PopUp, que son aquellos que se despliegan con el botón derecho del mouse.

Casi todas las aplicaciones por mas pequeñas 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 aplicación, ya sea por medio de botones, barras de herramientas etc.., nunca está demás que estén a mano por medio de un menú.

Visual Basic incorpora una herramienta llamada editor de menúes para poder crearlos

Nota: El editor de Manúes se encuentra en el menú herramientas y solo está disponible desde la vista diseño del formulario, es decir que si estás visualizando la ventana de código o un módulo de código deberás cerrarlas y dejar visible el formulario que estés diseñando para que la opción esté habilitada.

 

6 - Los menues de cabecera y submenues

 

Page 124: ARREGLOS Y VECTORES

Los menúes de cabecera son los menúes 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 están en un nivel por debajo del menú archivo.

Crear un menú

1. El primer paso es diseñar un buen diagrama que incluya la mayoría de las opciones, para que el usuario las pueda tener a mano también en el menú.

2. Si observas otras aplicaciones, estas respetan el orden y ubicación de sus menues, es decir que si estás creando un programa que tiene opciones para imprimir una hoja, esta se encontrarán en la sección del menú archivo, si tienes opciones de edición del documento como cortar copiar, pegar , seleccionar todo, etc..., las encontrarás en el menú "edición", si deseas crear un formulario "acerca de..", lo ubicarás en el menú ayuda con el "nombre acerca de...". esta forma de diseño y diagramación es fundamental para que el programa sea estándar y aceptado por todos, por llamarlo de alguna manera, ya que si bien nosotros recordamos el nombre y donde se encuentra ubicada cada opción, 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 "Edición" 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. Edición: Contendrá los submenues " Cortar ", " Copiar ", " Pegar ", " Seleccionar todo "

3. Ayuda : Tendrá los submenues " Ayuda " y " Acerca de.. "

 

Page 125: ARREGLOS Y VECTORES

 

El cuadro de diálogo 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.

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

código.

Index: en este campo que es opcional podemos introducir un

número para formar vectores de menues o arreglos de

menues, en este ejemplo no se usa, por ejemplo para crear

menues en forma dinámica en tiempo de ejecución

helpcontextid: este campo opcional podemos introducir un n°

para el tópico de ayuda, por si el usuario presiona la tecla F1

justo cuando está posicionado en el menú.

Page 126: ARREGLOS Y VECTORES

Shortcut: Podemos ingresar una tecla de acceso rápido al

menú para que se despliegue el mismo automáticamente,

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 fácilmente en el código. Entonces ingresamos en este campo mnuarchivo

2. El segundo paso será ingresar los submenues que están por debajo del menu archivo. Para ello presionamos el botón "siguiente" donde ingresaremos el menú "Abrir". como este es un submenú debemos indicarlo con el botón 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.

Page 127: ARREGLOS Y VECTORES

4. Si habrás observado los clásicos 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 línea. para lograr esto se debe crear un submenú como cualquier otro justo arriba del menú que queremos que aparezca la línea divisoria, y en la propiedad caption del mismo le colocamos el caracter menos -

5. Ahora ingresaremos el código para que muestre la leyenda en el control Label cada vez que presionemos un menú.

6. Como habrás notado, el menú se va incorporando al formulario en tiempo de diseño como cualquier otro control de visual basic. Para ingresar el código 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 código en el menú "Abrir" le damos un click en el mismo menú desde la ventana de diseño. Una vez abierta la ventana de código aparecerá una rutina como la siguiente:

 

Private Sub mnuabrir_click()

End Sub

 

 

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 código , por ejemplo en el caso anterior, por ejemplo si coloco esto en un botón se llamaría al procedimiento Click del menú y se ejecutaría el código.

Call mnuabrir_click

Page 128: ARREGLOS Y VECTORES

 

Esto es útil si tenemos una barra de herramientas, ya que no tendremos que escribir código 2 veces, y podemos usar un solo procedimiento haciendo una simple llamada al mismo

 

8 - Menues contextuales o popup menú

Los menues contextuales, esos que se despliegan cuando presionamos el botón 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 método PopUpMenu

El método PopUpMenu , se encuentra disponible solo para los formularios.

Los parámetros de este método son los siguientes:

 

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

 

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

es decir el nombre

Flags: este parámetro 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 mayoría de los casos este parámetro no se

utiliza.

Page 129: ARREGLOS Y VECTORES

X e Y: podemos indicar, aunque no se suele utilizar, las

posiciones x e y donde debe desplegarce el menú.

opcion: en este parámetro 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 común es utilizarlo y desplegarlo cuando el usuario presiona el botón derecho sobre un control, formulario etc...

Sabiendo esto , para desplegarlo por ejemplo cuando el usuario presiona el botón 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 botón que presionamos es el derecho , utilizando las constantes VbRightButton, vbLeftButton

 

9 - Ejemplo para crear un menú PopUp

Crear 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 botón presionado es el derecho

If button = vbRightButton Then

' Depliega el menú PopUP

Me.PopupMenu mnucontextual

End If

End Sub 

Page 130: ARREGLOS Y VECTORES

 

En el siguiente enlace hay 3 ejemplos con su código fuente que muestra como crear 2 menú y uno de estilo PopUp

 Función LoadPicture :

 

Esta función se utiliza para cargar una imagen o gráfico en un control Form, PictureBox o Image.

Esta función requiere como parámetro obligatorio, el path del archivo de imagen a cargar en el objeto.

Por ejemplo lo siguiente carga un gráfico en un control PictureBox:

 

Picture1.Picture = LoadPicture("c:\archivo.bmp")

 

Lo mismo sería 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 habría que utilizar el Api de windows o algún componente externo, para poder leerlos.

Nota: En este enlace hay un Módulo de clase que permite visualizar gráficos e imágenes de tipo PNG

 

Para cargar en un control Image:

 

Image1.Picture = LoadPicture("c:\archivo.bmp")

 

Para cargar en un Form:

 

Page 131: ARREGLOS Y VECTORES

El_Formulario.Picture = LoadPicture( La ruta)

 

También hay otras propiedades de algunos controles, que requieren por lo general el uso de esta función para cargar un archivo gráfico 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 operación 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)

Para establecer el ícono en un control TextBox:

 

Text1.MousePointer = vbCustom

Text1.MouseIcon = LoadPicture(La_Ruta_Del_Icono)

 

Además de los controles, se pueden cargar archivos con la función LoadPicture, por ejemplo en los siguientes tipos de variables: IPictureDisp, Picture stdPicture.

Aclarar que al cargar un gráfico en la variable, se debe establecer con la instrucción Set, por ejemplo:

 

Dim La_Imagen As Picture

Page 132: ARREGLOS Y VECTORES

Set La_Imagen = LoadPicture("c:\windows\plumas.bmp")

Picture1.Picture = La_Imagen 

 

Lo anterior carga en el la variable " La_Imagen " el archivo gráfico, 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 también con la instrucción 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 función, y el path del archivo no existe, es decir que no se encuentra el fichero, se produce el error 53.

 

Page 133: ARREGLOS Y VECTORES

 

Un ejemplo para capturar el error:

 

On Error GoTo errSub

Picture1.Picture = LoadPicture(Ruta)

Exit Sub

'Error

errSub:

If Err.Number = 53 Then

MsgBox "No se puede cargar el archivo, verifique la ruta", vbCritical

End If 

 

 

2 - Método SavePicture:

 

Este método lo que hace es guarda en un archivo en disco, un gráfico cargado en un control Form, PictureBox o un control Image.

Este posee dos parámetros, uno que especifica el Objeto Picture, y otro la ruta del archivo a generar

Page 134: ARREGLOS Y VECTORES

Savepicture Picture As IPictureDisp,FileName as String

 

Su uso es muy simple. A continuación una serie de ejemplos:

Esto lo que es cargar en un control Image, un gráfico del disco, y luego mediante otro botón, utilizando un control CommonDialog, guarda el archivo cargado en el Image en la ruta especificada:

Colocar un Control CommonDialog1, un control Image1 y dos controles CommandButton, Command1 y Command2:

 

 

Código en el formulario:

'Botón que carga el el archivo de imagen en el control Image

Private Sub Command1_Click()

On Error GoTo errSub

With CommonDialog1

.DialogTitle = "Seleccionar un archivo"

Page 135: ARREGLOS Y VECTORES

.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

'Botón que guarda el contenido del control Image en un nuevo archivo

Private Sub Command2_Click()

With CommonDialog1

.DialogTitle = "Guardar el archivo"

.Filter = "Todos los Archivos|*.*"

.ShowSave

Page 136: ARREGLOS Y VECTORES

If .FileName = "" Then

MsgBox "No se especificó ningún nombre", vbCritical

End If

If Image1.Picture <> 0 Then

SavePicture Image1.Picture, .FileName

Else

MsgBox "No hay un gráfico cargado para poder guardar", vbExclamation

End If

End With

End Sub

Private Sub Form_Load()

Command1.Caption = "Abrir"

Command2.Caption = "Guardar"

End Sub 

 

Este otro ejemplo, guarda el contenido del portapapeles de windows, en un nuevo archivo de tipo BMP.

Nota, debe haber una imagen válida 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 código para generar el archivo

 

If Clipboard.GetFormat(vbCFBitmap) = True Then 'Guarda la imagen SavePicture Clipboard.GetData(vbCFBitmap), "c:\Archivo.BMP"

Page 137: ARREGLOS Y VECTORES

Else 'Error: no coincide el Formato MsgBox "La imagen del portapales no es válida", vbCritical, "No se pudo guardar"End If

 

 

3 - El Método PaintPicture de Visual basic

 

La definición de este método es la siguiente:

 

El método PaintPicture permite dibujar el contenido de un archivo de gráficos en un Formulario, en un PictureBox o un objeto Printer.

 

La sintáxis del método es la siguiente:

 

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 gráfico, puede ser un form, un picture o en el objeto Printer

La_Imagen

Este parámetro 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 también en una variable de tipo StdPicture, IpictureDisp o de tipo Picture. Ver mas

Page 138: ARREGLOS Y VECTORES

adelante un ejemplo de esto último de como utilizar gráficos cargados en variables

X1 e y1:

Son las coordenadas de destino, es decir la posición Izquierda y Arriba ( Left - Top ), donde se presentará la imagen a dibujar en el objeto destino

Ancho1 y Alto1:

Estos parámetros especifican el ancho y alto que tendrá la imagen a dibujar. Estos parámetros 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 parámetros podemos copiar un trozo del gráfico, 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 gráfico. Luego al presionar un command1, se copiará la imagen del Picture en el formulario.

 

Page 139: ARREGLOS Y VECTORES

 

El código del CommandButton sería:

 

Private Sub Command1_Click()'Copia el gráfico en el formularioMe.PaintPicture Picture1.Picture, 0, 0End Sub

 

Como se ve en el código, indicamos que copie la imagen del picture1 en el formulario, es decir en el primer parámetro le pasamos la propiedad Picture del control. Luego, se indica la posición izquierda y Arriba ( Left - Top ) en el objeto destino, en este caso el Form. Los demás parámetros 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 especificaríamos 500, y 500, el resultado sería el siguiente:

 

 

Importante. Los valores para las dimensiones y posiciones del método 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 posición 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

Page 140: ARREGLOS Y VECTORES

modo de escala, es decir en pixeles. Lo mas común, es trabajar con pixeles, es mas cómodo.

 

Ejemplo 2:

 

Este ejemplo es igual al anterior, pero se utilizarán cuatro controles TextBox para indicar la posición x1, y1, ancho1 y ancho2.

 

 

Nota: el código no tiene una rutina de error para comprobar que algunos valores sean correctos, es decir si por ejemplo colocamos un valor que no sea numérico, dará error. también se producirá un error en tiempo de ejecución , si pasamos a PaintPicture, en Ancho1 y Alto1, el valor 0

Código fuente en el formulario:

 

Private Sub Command1_Click()

'Limpia el contenido del formulario

Me.Cls

Page 141: ARREGLOS Y VECTORES

'Copia el gráfico 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 gráfico cargado en un PictureBox llamado Pic_Origen, a otro PictureBox llamado Pic_Destino.

 

Page 142: ARREGLOS Y VECTORES

 

Private Sub Command1_Click()

'Copia el gráfico 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 parámetros que especifican el alto y ancho, se pasó las dimensiones que tenga Pic_destino, ( ScaleWidth y ScaleHeight )

 

Ejemplo 4 - Dibujar con PaintPicture un gráfico centrado

 

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 parámetro a PaintPicture, y en los parámetros X1 e Y1 ( posición Left y Top ) lo siguiente :

 

'Variable de tipo Picture para cargar mediante LoadPicture en _

tiempo de ejecución un gráfico

Dim Una_Imagen As Picture

Private Sub Command1_Click()

Page 143: ARREGLOS Y VECTORES

Dim Pos_x As Single

Dim Pos_y As Single

'Limpia el formulario

Me.Cls

'Carga en la variable la imagen

Set Una_Imagen = LoadPicture("c:\bart.jpg")

' Obtiene la posición x e y para centrar la imagen

Pos_x = (Me.ScaleWidth - ScaleX(Una_Imagen.Width, vbHimetric, vbPixels)) / 2

Pos_y = (Me.ScaleHeight - ScaleY(Una_Imagen.Height, vbHimetric, vbPixels)) / 2

' Dibuja el gráfico centrado en el formulario

Me.PaintPicture Una_Imagen, Pos_x, Pos_y

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

Page 144: ARREGLOS Y VECTORES

 

 

El resultado al presionar el commandButton sería algo por el estilo:

 

 

En el código anterior, se declara una variable de tipo Picture para almacenar el gráfico mediante la función LoadPicture. Pero como es una variable de objeto, se debe utilizar la palabra clave Set.

También como se comentó, el gráfico 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 función 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.

 

Ejemplo 5 - Recortar y estirar una imagen - Parámetros X2, y2 , Ancho2 y Alto2

Page 145: ARREGLOS Y VECTORES

 

Ahora se ve un ejemplo para ver estos parámetros 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 específica. 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 gráfico. Agregar otro PictureBox llamado Pic_Destino. También Cuatro TextBox en un arreglo:

Text1(0), Text1(1), Text1(2) y Text1(3), para la posición x, posición y, para el ancho ancho y alto respectivamente.

Estos valores serán en pixeles, y esos mismos valores se utilizarán para la función PaintPicture para dibujar dicha área

 

Código fuente en el formulario:

Page 146: ARREGLOS Y VECTORES

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 porción 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

Page 147: ARREGLOS Y VECTORES

'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)), _

CSng(Text1(1)), _

CSng(Text1(2)), _

CSng(Text1(3)))

End Sub

 

 

El ejemplo anterior, al colocar valores en los TextBox para los ejes x e y, el ancho y alto, se dibuja mediante el método Line el recuadro ( área ) en el picture origen, luego se le pasan esos mismos valores a la función PaintPicture que dibuja esa porción de imagen en el otro PictureBox

 

Page 148: ARREGLOS Y VECTORES

 

Ejemplo 6 - Estirar una imagen haciendo un efecto de Zoom

 

El siguiente ejemplo es similar al anterior, con la diferencia de que se captura un área de un gráfico 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 gráfico. Al otro picture renombrarlo a Pic_destino que es donde se copiará la porción de la imagen. El shape dejarlo con el nombre Shape1

 

Código fuente en un formulario

 

Option Explicit

Dim Ancho As Single

Dim Alto As Single

Page 149: ARREGLOS Y VECTORES

Private Sub Form_Load()

' 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 Pic_Origen_MouseMove(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

' Mueve el Shape en el centro del puntero del mouse

Shape1.Move X - Ancho / 2, Y - Alto / 2

Page 150: ARREGLOS Y VECTORES

'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

 

 

Dibujar un fondo ( imagen JPG , BMP ) a un formulario o picturebox

Este es un simple código fuente que utiliza la función PaintPicture para dibujar un gráfico JPG para el fondo del formulario y otra imagen para un picbox alineado en la parte superior.

En este caso , se dibuja el fondo en los eventos Resize del formulario y del picturebox superior que actúa como simple menú de opciones.

Descargar

 

 

Nota: En este enlace podés ver un ejemplo simple que hice de como hacer un Scroll en un gráfico mediante la función PaintPicture, para desplazar la imagen cuando la misma es superior ( Alto y ancho ) al contenedor, es decir a al PictureBox o Formulario

Page 151: ARREGLOS Y VECTORES

Hacer scroll de un gráfico

Ejemplo que hace un Scroll de un gráfico utilizando la función PaintPicture de vb, para desplazar una imagen que es superior en alto y ancho a las dimensiones de un Picturebox

 

El Scroll en este ejemplo no se hace con controles scrollBar, si no que se utilizan unos CommandButton, y se redibuja la imagen con PaintPicture hasta llegar al límite, aunque los botones son opcionales y se podría usar cualquier otra cosa

 

 

 

 

Page 152: ARREGLOS Y VECTORES

 

Para modificar el valor de desplazamiento de la imagen, es decir la velocidad, hay que modificar la variable Avance.

 

Colcocar en un formulario

un control PictureBox llamado Picture1 y cargarle un gráfico grande.

Colocar cuatro CommandButton en un arreglo de controles:

 

Command1(0) para mover a la izquierda, Command1(1) para mover la imagen hacia arriba, Command1(2) para la derecha y Command1(3) para desplazar el gráfico hacia abajo.

 

Código fuente en un formulario:

Texto plano Copiar código fuente Imprimir

1. Option Explicit  2.   3. 'Variables   4.   5. 'Posiciones x y para utilizarn PaintPicture   6. Private Pos_x As Long  7. Private Pos_y As Long  8.   9. 'variables para almacenar el ancho y Alto de la imagen a cargar _ 10.  en el control PictureBox   11. Private Ancho_Pic  As Single  12. Private Alto_Pic As Single  13.   14. 'Indica si estamos pulsando el mouse en el Command   15. Private Mouse_Abajo As Boolean  16. 'Para variar el desplazamiento   17. Private Avance As Single  18.   19.   20. Private Sub Combo1_Click()   21.     Avance = CSng(Combo1)   22. End Sub  23.   24. Private Sub Command1_MouseDown( _   25.         Index As Integer, _   26.         Button As Integer, _   

Page 153: ARREGLOS Y VECTORES

27.         Shift As Integer, _   28.         X As Single, Y As Single)   29.   30.     'Coloca el Flag en True   31.     Mouse_Abajo = True  32.   33.     Select Case Index   34.         Case 0   35.             'Desplaza la imagen hacia la derecha   36.             While Pos_x > 0 And Mouse_Abajo   37.                 Pos_x = Pos_x - Avance   38.                 Picture1.PaintPicture Picture1.Picture, 0, 0, 

, , _   39.                                       Pos_x, Pos_y, Picture1.

ScaleWidth, _   40.                                       Picture1.ScaleHeight   41.                   42.                 DoEvents   43.             Wend  44.   45.         Case 1   46.             'Desplaza la imagen hacia arriba   47.             While Pos_y < (Alto_Pic - Picture1.ScaleHeight) A

nd Mouse_Abajo   48.   49.                 Pos_y = Pos_y + Avance   50.                 Picture1.PaintPicture Picture1.Picture, 0, 0, 

, , Pos_x, Pos_y, _   51.                                     Picture1.ScaleWidth, Pict

ure1.ScaleHeight   52.   53.                 DoEvents   54.             Wend  55.             'Desplaza la imagen hacia la izquierda   56.         Case 2   57.             While Pos_x < (Ancho_Pic - Picture1.ScaleWidth) A

nd Mouse_Abajo   58.                    59.                 Pos_x = Pos_x + Avance   60.                 Picture1.PaintPicture Picture1.Picture, 0, 0, 

, , Pos_x, _   61.                                     Pos_y, ScaleWidth, Pictur

e1.ScaleHeight   62.                   63.                 DoEvents   64.             Wend  65.             'Desplaza la imagen hacia abajo   66.         Case 3   67.            68.         While Pos_y > 0 And Mouse_Abajo   69.                    70.                 Pos_y = Pos_y - Avance   71.                 Picture1.PaintPicture Picture1.Picture, 0, 0, 

, , Pos_x, Pos_y, _   

Page 154: ARREGLOS Y VECTORES

72.                        Picture1.ScaleWidth, Picture1.ScaleHeight   

73.                    74.                 DoEvents   75.         Wend  76.   77.     End Select  78.   79. End Sub  80.   81. Private Sub Command1_MouseUp(Index As Integer, Button As Inte

ger, _   82.                         Shift As Integer, X As Single, Y As S

ingle)   83.   84.     ' cuando se suelta el mouse en el Command finalizar   85.     Mouse_Abajo = False  86. End Sub  87.   88.   89. Private Sub Form_Load()   90.   91.     Dim i As Integer  92.     With Picture1   93.         .ScaleMode = vbTwips   94.         .AutoRedraw = False  95.        96.         'ancho y alto del gráfico cargado  en el Picture   97.         Ancho_Pic = CInt(.ScaleX(.Picture.Width, vbHimetric, 

.ScaleMode))   98.         Alto_Pic = CInt(.ScaleY(.Picture.Height, vbHimetric, 

.ScaleMode))   99.     End With  100.   101.     ' Valor que determina la velocidad de avance   102.     Avance = 10   103.   104.     ' El Autosize del Picture no es necesario que esté en Ttu

e   105.     Picture1.AutoSize = False  106.   107.     For i = 1 To 20   108.        Combo1.AddItem i   109.     Next  110.   111. End Sub  

Page 155: ARREGLOS Y VECTORES

 

Visualizar Mapa con Scroll

Este código lo realizó y lo envió a la web : Angel Yucra

El mismo , carga un gráfico jpg ( que es un mapa de una ciudad ) en un control picturebox y le agrega unos scrollbar para poder visualizar la imagen.

Y también , en otro Picbox , va mostrando el mapa en miniatura, y mediante un control shape la zona donde se está ubicado actualmente.

 

Como muestra esta captura :

Option Explicit

'Variables

'Posiciones x y para utilizarn PaintPicturePrivate Pos_x As LongPrivate Pos_y As Long

'variables para almacenar el ancho y Alto de la imagen a cargar _ en el control PictureBox

Page 156: ARREGLOS Y VECTORES

 

Descargar ejemplo

 

Y en este otro enlace, está el mismo proyecto pero con algunos añadidos. Nota: ( Agregar la imagen "vesg.gif" del primer ejemplo )

Listado de términos y definiciones de visual basic, del archivo de ayuda VEENDF98.CHM ( ordenados alfabeticamente )

Páginas : 1 - 2 - 3

Página 1 : Indice : A - H

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 módulos de todas las aplicaciones, a menos que Option Private Module esté en efecto. Cuando Option Private Module está en efecto, el módulo es privado y por lo tanto no es visible a los proyectos

Page 157: ARREGLOS Y VECTORES

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

 

Aplicación

Colección de código y elementos visuales que trabajan juntos como un programa único. Los programadores puede desarrollar y ejecutar aplicaciones dentro del entorno de programación, mientras que los usuarios normalmente ejecuta aplicaciones como archivos ejecutables fuera del entorno de programación.

aplicación host

Cualquier aplicación que acepta el uso de Visual Basic, Edición para aplicaciones. Por ejemplo, Microsoft Excel, Microsoft Project, etc.

 

archivo de recursos

Archivo en un proyecto de Visual Basic con una extensión 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 información sin modificar el código. Sólo se puede asociar un archivo de recursos con un proyecto.

enlaces relacionados : reproducir Sonido desde Archivos de recursos ,

archivo ejecutable

Una aplicación basada en Windows que se puede ejecutar fuera del entorno de programación. Un archivo ejecutable tiene una extensión de nombre de archivo .exe.

argumento

Page 158: ARREGLOS Y VECTORES

Constante, una variable o una expresión pasadas a un procedimiento.

Ejemplo :

Sub Procedimiento(Parametro As String)

MsgBox Parametro

End Sub

Private Sub Form_Load()

Call Procedimiento("Mensaje")

End Sub 

 

 

argumentos con nombre

Argumentos con nombres predefinidos en la biblioteca de objetos. En lugar de dar valores a los argumentos en el orden esperado por la sintaxis, puede utilizar argumentos con nombre para asignar valores en cualquier orden. Por ejemplo, suponga que un método acepta tres argumentos:

HaceAlgo nombrearg1, nombrearg2, nombrearg3

Asignando valores a los argumentos con nombre, puede utilizar la siguiente instrucción:

HaceAlgo nombrearg3 := 4, nombrearg2 := 5, nombrearg1 := 20

Observe que los argumentos no necesitan estar en el orden normal.

biblioteca de objetos

Un archivo con una extensión de nombre de archivo .OLB que proporciona a los controladores de Automatización OLE (como Visual Basic) información sobre los objetos de Automatización OLE disponibles. Puede utilizar el Examinador de objetos para examinar el contenido de una biblioteca de objetos y obtener información sobre los objetos que proporciona.

Page 159: ARREGLOS Y VECTORES

biblioteca de tipos

Un archivo o un componente incluido en un archivo que contiene descripciones estándar de Automatización OLE de objetos, propiedades y métodos expuestos. Los archivos de biblioteca de objetos (.olb) contienen bibliotecas de tipos.

biblioteca de vínculos dinámicos (DLL)

Una biblioteca de rutinas cargadas y vinculadas en las aplicaciones durante el tiempo de ejecución. Los archivos DLLs se crean con otros lenguajes de programación como C, MASM o FORTRAN.

carácter de continuación de línea

La combinación de un espacio seguido de un subrayado ( _); se utiliza en el entorno de desarrollo para ampliar una sola línea lógica del código hasta dos o más líneas físicas. Observe que los caracteres de continuación de línea no se pueden utilizar para continuar una línea de código dentro de una expresión de tipo cadena.

carácter de declaración de tipo

Un carácter adjunto al nombre de una variable que indica el tipo de datos de una variable. Como opción predeterminada, las variables son del tipo Variant, a menos que la instrucción Del tipo correspondiente esté presente en el módulo.

clase

Definición formal de un objeto. La clase actúa como plantilla desde la que se crea una instancia de un objeto en tiempo de ejecución. La clase define las propiedades del objeto y los métodos utilizados para controlar su comportamiento.

Enlaces relacionados : módulos de clase

 

Page 160: ARREGLOS Y VECTORES

clase de base

Clase original de la que otras clases se derivan por herencia.

código de caracteres

Número que representa un carácter en particular de un juego de caracteres, como el juego de caracteres ANSI.

colección

Objeto que contiene un conjunto de objetos relacionados. La posición de un objeto en la colección puede cambiar cada vez que se produzca un cambio en la colección; por lo tanto, la posición de un objeto específico de la colección puede variar.

comentario

Texto agregado a un código por un programador, que explica cómo funciona el código. En Visual Basic cada línea de comentario comienza con un apóstrofo (') o con la palabra clave Rem seguida por un espacio.

Ejemplo

'Esto es un comentario

Dim x As Long

x = 100

x = x + 250 

 

comparación bit a bit

Comparación bit a bit de los bits ubicados en posiciones idénticas en dos expresiones numéricas.

Page 161: ARREGLOS Y VECTORES

comparación de cadenas

Una comparación de dos secuencias de caracteres. Utilice Option Compare para especificar comparación de texto o binaria. En español, las comparaciones binarias reconocen mayúsculas y minúsculas; las comparaciones de texto no reconocen mayúsculas ni minúsculas.

complemento

Herramienta que agrega capacidades al entorno de programación de Visual Basic.

enlaces relacionados : MZ-Tolls - Complemento para el IDE del vb , complemento para usar el scroll en el ide

 

configuración regional

Conjunto de información que corresponde a un idioma y país determinado. Los valores de la configuración regional afectan al idioma de los términos como palabras clave y define los valores de la configuración regional específica como los separadores decimales y de listas, formatos de fecha y ordenación de caracteres.

Los valores de la configuración regional del sistema afectan al comportamiento del funcionamiento de la configuración regional independiente, por ejemplo, cuando muestra números o convierte cadenas a fechas. Establezca la configuración regional del sistema utilizando los programas del Panel de Control que proporciona el sistema operativo.

Aunque la configuración regional del código y del sistema generalmente tienen el mismo valor, puede ser diferentes en algunas situaciones. Por ejemplo, en Visual Basic edición estándar y Visual Basic edición profesional, el código no se traduce del Inglés (Estados Unidos). La configuración regional del sistema se puede establecer al idioma y el país del usuario, pero la configuración regional del código se establece siempre a Inglés (Estados Unidos) y no se puede cambiar. En este caso se utilizan los separadores del Inglés (Estados Unidos), marcadores de posición de formatos y ordenación.

Enlaces relacionados : Obtener datos de la configuración regional de windows , abrir el cuadro de diálogo con la función shell

Page 162: ARREGLOS Y VECTORES

constante

Un elemento con nombre que mantiene un valor constante a través de la ejecución de un programa. Las constantes pueden ser cadenas o literales numéricos, otras constantes o cualquier combinación que incluya operadores aritméticos o lógicos exceptuando Is y la exponenciación. Cada aplicación principal puede definir su propio conjunto de constantes. El usuario puede definir constantes adicionales con la instrucción Const. Puede utilizar constantes en cualquier lugar del código 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 algún valor numérico.

Ejemplo

Const MENSAJE As String = "hola mundo"

 

constante de compilación condicional

Un identificador de Visual Basic que se define utilizando la directiva de compilador #Const, o bien en la aplicación principal y se utiliza en otras directivas de compilador para determinar si determinados bloques de código Visual Basic están compilados, y cuándo.

 

constantes intrínsecas

Constante proporcionada por una aplicación. 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 intrínsecas, no puede crear una constante definida por el usuario con el mismo nombre.

 

Page 163: ARREGLOS Y VECTORES

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, métodos y eventos reconocidos. Puede utilizar controles para recibir entradas del usuario, mostrar resultados y desencadenar procedimientos de evento. Puede manipular la mayoría de los controles utilizando métodos. Algunos controles son interactivos (responden a acciones del usuario) mientras que otros son estáticos (sólo son accesibles mediante código).

 

control ActiveX

Objeto que coloca en un formulario para habilitar o deshabilitar la interacción del usuario con una aplicación. Los controles ActiveX tienen eventos que se pueden incorporar en otros controles. Estos controles tienen una extensión 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 específicos 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 después se mueven a un registro diferente, los cambios se guardan automáticamente en la base de datos.

 

Page 164: ARREGLOS Y VECTORES

cuadro Objeto

Cuadro de lista que aparece en la esquina superior izquierda de la ventana Código que enumera el formulario y los controles de formulario al que se adjunta el código 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 Código y la ventana Depuración 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 carácter, que permite representar más de 256.

declaración

Código no ejecutable que asigna nombre a una constante, variable o procedimiento y especifica sus características (como el tipo de datos). Para procedimientos DLL, las declaraciones especifican nombres, bibliotecas y argumentos.

 

directivas de compilación

Comando utilizado para modificar la acción del compilador.

diseñador

Page 165: ARREGLOS Y VECTORES

Proporciona un generador de ventana visual en el entorno de programación 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 autónomo creado con una aplicación y se especifica con un nombre de archivo único.

Empty

Un valor que indica que una variable Variant no tiene asignado ningún valor inicial. Las variables Empty son iguales a 0 (en un contexto numérico) o de longitud cero ("") (en un contexto de cadena).

en proceso

Ejecución en el mismo espacio de direcciones como una aplicación.

enfoque

La capacidad para recibir clics del mouse (ratón) o entradas por teclado en cualquier momento. En el entorno de Microsoft Windows, solamente una ventana, un formulario o un control tienen esta capacidad simultáneamente. El objeto que "tiene el foco" se indica normalmente por un título o una barra de títulos resaltados. Se puede establecer el foco tanto por el usuario como por la aplicación.

entorno de programación

Parte de la aplicación donde escribe el código, crea controles, establece las propiedades del control y el formulario, etc... Esto es lo contrario a la ejecución de la aplicación.

Page 166: ARREGLOS Y VECTORES

error de sintaxis

Un error que ocurre cuando el sistema no comprende una línea de código que acaba de ser introducida.

Observe que las reglas de sintaxis para palabras clave individuales están definidas en la sección 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 en tiempo de ejecución

Un error que ocurre cuando el código se está ejecutando. Un error de ejecución aparece cuando una instrucción intenta llevar a cabo una operación no válida.

error lógico

Un error de programación que hace que el código produzca resultados incorrectos o que detenga la ejecución. Por ejemplo, un error puede ser causado por nombres de variables incorrectos, tipos de variables incorrectos, bucles infinitos, fallos en las comparaciones lógicas o problemas de matrices.

etiqueta de línea

Una etiqueta de línea se usa para identificar una sola línea de código. Puede ser cualquier combinación de caracteres que comience con una letra y que termine con dos puntos (:). Las etiquetas de línea no distinguen mayúsculas y minúsculas y deben empezar en la primera columna.

 

Examinador de objetos

Un cuadro de diálogo que le permite examinar el contenido de una biblioteca de objetos para obtener información sobre los objetos que proporciona.

expresión

Page 167: ARREGLOS Y VECTORES

Una combinación de palabras clave, operadores, variables y constantes, que produce una cadena, un número o un objeto. Una expresión puede realizar un cálculo, manipular caracteres o verificar datos.

expresión Boolean

Expresión cuyos valores son True o False.

expresión de cadena

Cualquier expresión cuyo valor es equivalente a una secuencia de caracteres contiguos. Los elementos de la expresión pueden incluir una función que devuelve una cadena, un literal de cadena, una constante de cadena, una variable de cadena, una cadena Variant o una función que devuelve una cadena Variant (VarType 8).

expresión de fecha

Toda expresión que se puede interpretar como una fecha. Esto incluye cualquier combinación de literales de fechas, números que parecen fechas, cadenas que parecen fechas y fechas devueltas por funciones. Una expresión de fecha se limita a números o cadenas, en cualquier combinación, que pueda representar una fecha desde el 1 de enero del año 100 hasta el 31 de diciembre del año 9999.

Las fechas se guardan como parte de un número real. Los valores a la izquierda del decimal representan la fecha; los valores a la derecha del decimal representan la hora. Los números 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

 

expresión de hora

Cualquier expresión que puede ser interpretada como una hora. Esto incluye cualquier combinación de literales de hora, números que parecen horas, cadenas que parecen horas y horas devueltas por funciones.

Page 168: ARREGLOS Y VECTORES

Las horas se almacenan como parte de un número real. Los valores a la derecha del decimal representan la hora. El mediodía (12:00 P.M.) se representa con 0,5.

Enlaces : Ver enlace anterior

expresión de inspección

Expresión definida por el usuario que le permite observar el comportamiento de una variable o expresión. Las expresiones de inspección aparecen en la ventana Inspección del Editor de Visual Basic y se actualiza automáticamente cuando entra en el modo de interrupción. La ventana Inspección muestra el valor de una expresión dentro de un contexto determinado. Las expresiones de inspección no se guardan con el código.

expresión de objeto

Una expresión que especifica un objeto particular. Esta expresión puede incluir cualquier elementos del objeto. Por ejemplo, si la aplicación tiene un objeto Aplicación que contiene un objeto Documento, el cual a su vez contiene un objeto Texto.

expresión de tipo variant

Cualquier expresión que se pueda evaluar a datos numéricos, de cadena o de fecha, así como a los valores especiales Empty y Null.

expresión numérica

Cualquier expresión que puede ser evaluada como un número. Los elementos de una expresión pueden incluir cualquier combinación de palabras clave, variables, constantes y operadores que dan como resultado un número.

formato automático

Característica que da formato a códigos automáticamente, a medida que se introducen, colocando mayúsculas en la primera letra de las palabras clave,

Page 169: ARREGLOS Y VECTORES

igualando los espacios, agregando la puntuación y configurando los colores del primer plano y del fondo.

formato de fecha universal

El formato de fecha universal es #aaaa-mm-dd hh:mm:ss#. Sin embargo, tanto el componente de fecha (#aaaa-mm-dd#) como el componente de hora (#hh:mm:ss#) se pueden representar por separado.

formulario

Ventana o cuadro de diálogo. Los formularios son contenedores para controles. Una formulario de interfaz de múltiples documentos (MDI) también puede actuar como un contenedor para formularios secundarios y algunos controles.

formulario MDI

Ventana que compone el segundo plano de una aplicación de interfaz de múltiples documentos (MDI). El formulario MDI es el contenedor de cualquiera de los formularios secundarios MDI en la aplicación.

icono

Representación gráfica 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 tamaño máximo de 32 x 32 píxeles. Los iconos tienen una extensión de nombre de archivo .ico.

Enlaces : paquete de íconos - Extractor

identificador

Elemento de una expresión que hace referencia a una constante o una variable.

indicador de margen

Page 170: ARREGLOS Y VECTORES

Icono mostrado en la barra del Indicador de margen en la ventana Código. Los indicadores de margen proporcionan guías visuales durante la modificación del código.

instrucción

Una unidad sintácticamente completa que expresa un tipo de acción, declaración o definición. Normalmente una instrucción tiene una sola línea aunque es posible utilizar dos puntos (:) para poner más de una instrucción en una línea. También se puede utilizar un carácter de continuación de línea (_) para continuar una sola línea lógica en una segunda línea física.

Ejemplo :

Dim cadena As String

cadena = "Una linea" & _

"Otra" & _

"otras mas" 

 

intercambio dinámico de datos (DDE)

Un protocolo establecido para intercambiar datos a través de vínculos activos entre aplicaciones que se ejecutan bajo Microsoft Windows.

Enlaces : Ejemplo simple de intercambio dinámico de datos - DDE

 

juego de caracteres ANSI

Juego de caracteres de 8 bits del Instituto Americano de Normas Nacionales (ANSI), usado por Microsoft Windows, que permite representar hasta 256 caracteres (0–255) con el teclado. Los primeros 128 caracteres (0–127) corresponden a las letras y símbolos de un teclado estándar de EE.UU. Los siguientes 128 caracteres (128–255) representan caracteres especiales, como letras de otros alfabetos, acentos, símbolos de moneda y fracciones.

Page 171: ARREGLOS Y VECTORES

 

juego de caracteres ASCII

Juego de caracteres de 7 bits denominado ASCII (Código Americano Estándar para Intercambio de Información), ampliamente utilizado para representar letras y símbolos de en un teclado estándar de EE.UU. El juego de caracteres ASCII es igual que los primeros 128 caracteres (0–127) del juego de caracteres ANSI.

 

línea de comandos

Información de ruta, nombre de archivo y argumento proporcionada por el usuario para ejecutar un programa.

 

literal de cadena

Cualquier expresión que consiste en una secuencia de caracteres contiguos rodeados de comillas y que se interpreta literalmente como los caracteres encerrados entre comillas.

Dim Variable_String As StringVariable_String = "valor"

 

literal de fechas

Toda secuencia de caracteres con un formato válido ubicada dentro de símbolos de número(#). Formatos válidos incluyen el formato de fecha especificado por la configuración correspondiente a la localidad del código 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, Español-España es la configuración

Page 172: ARREGLOS Y VECTORES

correspondiente a la localidad de la aplicación. El uso de literales de fecha maximiza la transportabilidad a través de los diferentes lenguajes nacionales.

 

llamada a procedimiento

Instrucción en código 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 píxeles y almacenada como una colección de bits en la que cada bit corresponde a un píxel. En equipos con pantalla en color, a cada píxel le corresponde más de un bit. Normalmente un mapa de bits tiene una extensión de nombre de archivo .bmp.

 

marco de ventana vinculada

Page 173: ARREGLOS Y VECTORES

Marco de ventana que contiene múltiples ventanas que se han vinculado juntas.

matriz

Conjunto de elementos que tienen el mismo tipo de datos y que están ordenados secuencialmente. Cada elemento de una matriz posee un número de índice único que lo identifica. Los cambios efectuados a un elemento de una matriz no afectan a los demás elementos.

Enlaces relacionados : Arreglos y matrices vectores , Desordenar una matriz , Declarar una función como matriz , ordenar un vector , Eliminar duplicados , función ParamArray

 

 

matriz de controles

Grupo de controles que comparten un nombre, tipo y procedimientos de evento comunes. Cada control en una matriz tiene un número de índice único que se puede utilizar para determinar qué control reconoce un evento.

Enlaces relacionados : Pasar matriz de controles como parámetro , Crear matriz de controles

 

MDI secundario

Formulario contenido dentro de un formulario MDI en una aplicación de interfaz de múltiples documentos (MDI). Para crear un formulario secundario, establezca la propiedad MDIChild del formulario MDI a True.

Tags : Ejemplo de formulario MDI

 

metarchivo

Page 174: ARREGLOS Y VECTORES

Archivo que almacena una imagen como objetos gráficos tanto líneas, círculos y polígonos como píxeles. Hay dos tipos de metarchivos, estándar y ampliado. Los metarchivos estándar normalmente tiene una extensión de nombre de archivo .wmf. Los metarchivos ampliados normalmente tiene una extensión de nombre de archivo .emf. Los metarchivos preservan una imagen más exacta que los píxeles cuando la imagen se cambia de tamaño.

 

método

Un procedimiento que se aplica a un objeto.

 

método gráfico

Método que opera en objetos como Form, PictureBox o Printer y ejecuta operaciones de dibujo en tiempo de ejecución como animación o simulación. Los métodos gráficos 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 interrupción

Suspensión temporal de la ejecución 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 ejecución. Se entra en modo interrumpir:

Al encontrar un punto de interrupción durante la ejecución del

programa.

Page 175: ARREGLOS Y VECTORES

Al presionar Ctrl+Pausa durante la ejecución del programa.

Al encontrar una instrucción Stop o un error de ejecución no

detectado durante la ejecución del programa.

Agregando una expresión Interrumpir cuando el valor sea

Verdadero. La ejecución se detiene cuando el valor de la

expresión bajo inspección cambia y se convierte en True.

Agregando una expresión Interrumpir cuando el valor cambie.

La ejecución se detiene cuando el valor de la expresión bajo

inspección cambie.

 

módulo

Un conjunto de declaraciones y procedimientos.

módulo de clase

Módulo que contiene la definición de una clase (sus definiciones de propiedad y método).

Enlaces : Manual sobre módulos de clase

 

módulo de código

Módulo que contiene código público que se puede compartir entre todos los módulos de un proyecto. Los módulos de código se denominan módulos estándar en versiones posteriores de Visual Basic.

 

módulo de formulario

Page 176: ARREGLOS Y VECTORES

Archivo en un proyecto de Visual Basic con una extensión de nombre de archivo .frm que puede contener descripciones gráficas 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.

 

módulo de objeto

Módulo que contiene un código específico a un objeto, por ejemplo, módulo de clase, módulo de formulario y módulo de documento. Los módulos objeto contienen el código detrás de sus objetos asociados. Las reglas para módulos objeto difieren de las de los módulos estándar.

 

módulo estándar

Un módulo que contiene solamente declaraciones y definiciones de procedimiento, tipo y datos. Las declaraciones y definiciones a nivel de módulo de un módulo estándar son Public de manera predeterminada. Un módulo estándar se denomina módulo de código en versiones anteriores de Visual Basic.

 

nivel de módulo

Código en la sección de declaraciones de un módulo. Cualquier código fuera de un procedimiento se denomina código de nivel de módulo. 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 código ejecutable.

Page 177: ARREGLOS Y VECTORES

Observe que el código de nivel de módulo reside fuera del bloque de procedimiento.

Null

Un valor que indica que una variable contiene datos no válidos. Null es el resultado de una asignación explícita de una variable como Null o cualquier operación entre expresiones que contienen Null.

 

número de archivo

Número utilizado en la instrucción Open para abrir un archivo. Utilice los números de archivo en el intervalo 1–255 inclusive, para archivos no accesibles desde otras aplicaciones. Utilice números de archivo en el intervalo 256–511 inclusive, para archivos accesibles desde otras aplicaciones.

Enlaces relacionados : trabajar con Archivos en visual basic

 

número de error

Un número 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 número representa un mensaje de error determinado.

 

número de línea

Un número de línea se usa para identificar una sola línea de código. Este número puede ser cualquier combinación de dígitos que sea única dentro del módulo donde se usa. Los números de línea deben comenzar en la primera columna.

Page 178: ARREGLOS Y VECTORES

 

objeto

Combinación de código y datos que se pueden tratar como una unidad, por ejemplo, un control, un formulario o un componente de una aplicación. Cada objeto se define por una clase.

 

objeto ActiveX

Objeto que se expone a otras aplicaciones o herramientas de programación mediante interfaces de Automatización.

Enlaces relacionados : Tips para crear controles ocx , Descargar ocx

 

objeto de Automatización

Objeto que se ofrece para otras aplicaciones o herramientas de programación a través de las interfaces de Automatización.

 

objeto insertable

Objeto de aplicación que es un tipo de control personalizado, como una hoja de cálculo de Microsoft Excel.

 

objeto origen de evento

Objeto que es el origen de eventos que se producen en respuesta a una acción. Una propiedad devuelve un origen de evento. Por ejemplo, la propiedad CommandBarEvents devuelve el objeto CommandBarEvents.

Page 179: ARREGLOS Y VECTORES

 

operador de comparación

Símbolo o un carácter que indica la relación entre dos o más valores, o expresiones. Esto operadores incluyen menor que (<), menor o igual que (<=), mayor que (>), mayor o igual que (>=), distinto (<>) e igual (=). Los operadores de comparación adicionales incluyen Is y Like. Observe, sin embargo, que Is y Like no se pueden utilizar como operadores de comparación en la instrucción Select Case.

 

orden

Un principio de secuencia que se usa para ordenar datos; por ejemplo, alfabético, numérico, ascendente, descendente, etc.

orden de tabulación

Orden en el que el enfoque se mueve de un campo al siguiente cuando presiona Tab o Mayús+Tab.

Enlaces relacionados. : Cambiar el foco al otro textbox al presionar enter

orden z

Disposición visual de controles en un formulario a lo largo del eje z del formulario (profundidad). El orden z determina qué controles están por delante de los otros.

Ejemplo :

Picture1.ZOrder 0Picture2.ZOrder 1

 

palabra clave

Page 180: ARREGLOS Y VECTORES

Una palabra o un símbolo reconocido como parte del lenguaje de programación; por ejemplo, una instrucción, un nombre de función o un operador.

 

panel de código

Panel contenido en una ventana de código que se utiliza para introducir y modificar código. Una ventana de código puede contener uno o más paneles de código.

 

parámetro

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 matemática 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 dirección 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.

Page 181: ARREGLOS Y VECTORES

Enlaces Ejemplo

por valor

Modo de pasar un argumento a un procedimiento pasando su valor en vez de su dirección. 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 sólo son visibles en el módulo 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 módulo. Todo el código 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 específica dentro de un programa y devuelve un valor. Un procedimiento Function comienza con una instrucción Function y finaliza con una instrucción End Function.

procedimiento general

Procedimiento que se debe llamar explícitamente desde otro procedimiento. Por el contrario, un procedimiento de evento se invoca automáticamente en respuesta a una acción de usuario o del sistema.

Page 182: ARREGLOS Y VECTORES

procedimiento Property

Procedimiento que crea y manipula propiedades para un módulo de clase. Un procedimiento Propiedad comienza con una instrucción Property Let, Property Get o Property Set y termina con una instrucción End Property.

Enlaces : Crear Propiedades

procedimiento Sub

Procedimiento que ejecuta una tarea específica dentro de un programa, pero devuelve un valor no explícito. Un procedimiento Sub comienza con una instrucción Sub y termina con una instrucción End Sub.

propiedad

Un atributo con nombre de un objeto. Las propiedades definen características de objetos, como tamaño, color y ubicación en la pantalla, o comportamientos de objetos, como si está o no habilitado.

proyecto

Un conjunto de módulos.

proyecto al que se hace referencia

El proyecto en el cual se está trabajando se denomina proyecto actual. Se pueden crear vínculos a otros proyectos desde el proyecto actual. El proyecto al que se vincula se denomina proyecto referido directamente. Sus símbolos Public no son accesibles al proyecto actual, excepto mediante calificación con el nombre del proyecto. Cualquier combinación de referencias directas e indirectas entre proyectos es válida, siempre y cuando no resulte en un ciclo completo.

 

proyecto de referencia

Page 183: ARREGLOS Y VECTORES

El proyecto actual se denomina proyecto de referencia directa. La forma de crear un vínculo con un proyecto depende de la aplicación principal. Por ejemplo, en Excel puede hacer referencia directamente a un proyecto eligiéndolo en el cuadro de diálogo Referencias del menú Herramientas. Los símbolos Public de un proyecto referido directamente son visibles para el proyecto de referencia directa, pero los símbolos Public de un proyecto de referencia directa no son visibles para un proyecto referido directamente.

Public

Variables declaradas utilizando la instrucción Public que son visibles a todos los procedimientos en todos los módulos y en todas las aplicaciones a menos que Option Private Module esté activa. En este caso, las variables son públicas sólo dentro del proyecto en el que residen.

punto

Un punto es 1/72 de pulgada. Los tamaños de fuente normalmente se miden en puntos.

punto de interrupción

Una línea seleccionada del programa en la cual la ejecución del programa se detiene automáticamente. Los puntos de interrupción no se guardan con su código.

Listado de términos y definiciones de visual basic, del archivo de ayuda VEENDF98.CHM ( ordenados alfabeticamente )

Páginas : 1 - 2 - 3

Página 1 : Indice : R - Z

registro

En Windows versión 3.1, la información de registro OLE y las asociaciones de archivo se almacenan en la base de datos de registro, y la configuración del programa se almacena en archivos de inicialización del sistema (.INI) de Windows. En Windows 95, el registro de Windows sirve como base de datos central de configuración para información específica del ordenador, de usuario

Page 184: ARREGLOS Y VECTORES

y de aplicación, incluyendo la información 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 expresión de cadena que especifica la ubicación de un directorio o carpeta; puede incluir una especificación de unidad de disco.

 

semilla

Un valor inicial usado para generar números pseudoaleatorios. Por ejemplo, la instrucción Randomize crea un número semilla que usa la función Rnd para crear secuencias de números pseudoaleatorios únicas.

Enlaces : crear números aleatorios no repetidos , otro ejemplo del uso de RND

separadores de fecha

Caracteres utilizados para separar el día, el mes y el año cuando se da formato a valores que representan fechas. Los caracteres están determinados por las configuraciones de sistema o por la función 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 compilación

Momento en el que el código de origen se traduce a código de ejecución.

Page 185: ARREGLOS Y VECTORES

tiempo de diseño

El tiempo durante el cual se genera una aplicación en el entorno de desarrollo agregando controles, estableciendo propiedades de controles o formularios, etc. Por el contrario, durante el tiempo de ejecución se interactúa con la aplicación como lo haría un usuario.

tiempo de ejecución

El tiempo durante el cual se está ejecutando código. Durante el tiempo de ejecución, se interactúa con el código como lo haría un usuario.

tipo de datos

Característica 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 específicos de objetos.

Enlaces : tipos de datos en vb

tipo de datos Boolean

Tipo de datos que sólo tiene dos valores posibles, True (-1) o False (0). Las variables Boolean se almacenan como números de 16 bits (2 bytes).

tipo de datos Byte

Tipo de datos utilizado para contener números enteros positivos en el intervalo de 0 a 255. Las variables de tipo Byte se almacenan como Single, números sin signo de 8 bits (1 byte).

tipo de datos Currency (Moneda)

Tipo de datos con un intervalo de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. Utilice este tipo de datos para cálculos de tipo

Page 186: ARREGLOS Y VECTORES

monetario y cálculos de punto fijo donde es especialmente importante la exactitud. El carácter de declaración de tipo es (@) que representa el tipo Currency en Visual Basic.

tipo de datos Date (Fecha)

Tipo de datos utilizado para almacenar fechas y horas como un número real. Las variables de tipo Date se almacenan como números de 64 bits (8 bytes). El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora.

tipo de datos Double (Doble)

Tipo de datos que contiene números de doble precisión de punto flotante como números de 64 bits en el intervalo de -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos y de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos. El carácter de declaración de tipo es el signo de número (#) que representa el tipo Double en Visual Basic.

tipo de datos Integer (Entero)

Tipo de datos que contiene variables enteras almacenadas como números enteros de 2 bytes en el intervalo de -32.768 a 32.767. El tipo de datos Integer también se utiliza para representar valores en listas. El carácter de declaración de tipo es el signo de porcentaje (%) que representa un tipo Integer en Visual Basic.

tipo de datos Long (Entero largo)

Un entero de cuatro bytes, un número completo entre -2.147.483.648 y 2.147.483.647. El carácter de declaración de tipo es (&) que representa un tipo Long en Visual Basic.

tipo de datos numérico

Cualquier tipo de datos numérico intrínseco (Byte, Boolean, Integer, Long, Currency, Single, Double o Date).

Page 187: ARREGLOS Y VECTORES

tipo de datos Object

Tipo de datos que representa cualquier referencia a un tipo Object. Las variables Object se almacenan como direcciones de 32 bits (4 bytes) que hacen referencia a objetos.

tipo de datos Single (Sencillo)

Tipo de datos que almacena variables de precisión sencilla de punto flotante como números de punto flotante de 32 bits (4 bytes) en el intervalo de valores de -3,402823E38 a -1,401298E-45 para valores negativos y de 1.401298E-45 a 3.402823E38 para valores positivos. El carácter de declaración de tipo es el signo de admiración (!) que representa el tipo Single en Visual Basic.

tipo de datos String (Texto)

Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por sí mismos en vez de sus valores numéricos. Un tipo String puede incluir letras, números, espacios en blanco y signos de puntuación. El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de 0 a aproximadamente 63000 caracteres y cadenas dinámicas en un intervalo de longitud de 0 a aproximadamente 2 mil millones de caracteres. El carácter de declaración de tipo es el signo de dólar ($) que representa el tipo String en Visual Basic.

tipo de datos Variant

Un tipo de datos especial que contiene datos numéricos, de cadena o de fecha así como tipos definidos por el usuario y los valores especiales Empty y Null. El tipo de datos Variant tiene un tamaño de almacenamiento numérico de 16 bytes y puede contener datos hasta el intervalo de un tipo Decimal o un tamaño de almacenamiento de caracteres de 22 bytes (más la longitud de cadena) y puede almacenar cualquier texto. La función VarType define el tratamiento que reciben los datos de un Variant. Todas las variables son del tipo Variant a menos que se declaren explícitamente como de cualquier otro tipo.

tipo de objeto

Page 188: ARREGLOS Y VECTORES

Un tipo de objeto expuesto por una aplicación por medio de la Automatización. Por ejemplo, Aplicación, Archivo, Intervalo y Hoja de cálculo. Utilice el Examinador de objetos o consulte la documentación de la aplicación para obtener una lista completa de objetos disponibles.

tipo definido por el usuario

Cualquier tipo de datos definido usando la instrucción Type. Los tipos de datos definidos por el usuario pueden contener uno o más elementos de cualquier tipo de datos. Las matrices de tipos definidos por el usuario y de otros tipos de datos se crean con la instrucción Dim. Se pueden incluir matrices de cualquier tipo dentro de tipos definidos por el usuario.

tipo numérico

Cualquier tipo de datos numérico intrínseco (Byte, Boolean, Integer, Long, Currency, Single, Double o Date) cualquier subtipo numérico Variant (Empty, Integer, Long, Single, Double, Currency, Decimal, Date, Error, Boolean o Byte).

tipos de datos decimales

Tipo de datos que contiene números decimales en escala de una potencia de 10. Para números de escala cero, o sea, números sin posiciones decimales, el intervalo es de +/-79.228.162.514.264.337.593.543.950.335. Para números con 28 posiciones decimales el intervalo es +/-7,9228162514264337593543950335. El número más pequeño distinto de cero que se puede representar como un tipo Decimal es 0,0000000000000000000000000001.

Observe que en este momento el tipo de datos Decimal sólo se puede utilizar dentro de un tipo Variant. No puede declarar una variable de tipo Decimal. Sin embargo, puede crear un tipo Variant cuyo subtipo es Decimal utilizando la función CDec.

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 ubicación y proporción de los elementos de la pantalla en la aplicación son los mismos en todos los tipos de pantallas. Hay aproximadamente 1440 twips en una pulgada

Page 189: ARREGLOS Y VECTORES

lógica o 567 twips en un centímetro lógico (la longitud de un elemento de pantalla que mide una pulgada o un centímetro cuando se imprime).

Unicode

Carácter estándar de la Organización internacional de estándares (International Standards Organization) (ISO). Unicode utiliza un esquema de códigos de 16-bits (2 bytes) que permite 65.536 espacios de caracteres distintos. Unicode incluye las representaciones de signos de puntuación, símbolos matemáticos 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 ejecución 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 carácter alfabético, deben ser únicos dentro del mismo ámbito, no deben contener más de 255 caracteres y no pueden contener un punto o carácter de declaración de tipo.

variable de módulo

Una variable declarada fuera del código de los procedimientos Function, Sub o Property. Las variables de módulo se deben declarar antes de cualquier procedimiento en el módulo. Existen mientras el módulo está cargado, y son visibles en todos los procedimientos del módulo.

variable de objeto

Variable que contiene una referencia a un objeto.

ventana acoplada

Ventana que se adjunta al marco de la ventana principal.

Page 190: ARREGLOS Y VECTORES

ventana Propiedades

Ventana que se utiliza para mostrar o cambiar las propiedades de un formulario seleccionado en tiempo de diseño. Algunos controles personalizados tienen ventanas Propiedades personalizadas.

ventana Proyecto

Ventana que muestra una lista del formulario, la clase y los módulos estándar; 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.

verificación de sintaxis

Es una característica que verifica el código para asegurarse de que la sintaxis es correcta. Si la verificación de sintaxis está activada, se mostrará un mensaje cuando se introduzca código que tenga un error de sintaxis y la parte de código correspondiente aparecerá resaltada.