Curso de VisualBasic.NET.

Entrada de datos.

Toda aplicación lleva detrás de su diseño y construccion un equipo técnico que se encarga de evaluar el impacto y la necesidad de dicha aplicación. En esta práctica vamos a crear un programa de VideoClub para que podamos guardar los títulos de nuestras películas en un orden establecido y con su carátula correspondiente. Entonces sabiendo lo que queremos, empezaremos diseñando un programa de manera que tendrá que tener las siguientes propiedades:

Entrada de datos.
La aplicación deberá ser capaz de poder agregar, modificar y guardar cierto cantidad de datos de diferente tipos, en un formato común para su visualización, busqueda o rectificación, sin que el usuario tenga que instalar un programa adicional para su funcionamiento. Ademas proporcionarán los soportes virtuales para esos datos.

Tratamiento de datos.
De tal manera que, una vez insertado los datos, podamos buscarlos, abrirlos o modificarlos a nuestro antojo, previa autorización para tal fin (en caso de modificarlos o borrarlos).

En la gestión básica de la aplicación se pueden tener otros valores como por ejemplo, si va a tener conexión a internet para descargar contenido como por ejemplo, caratulas o información extra de las películas.

La aplicación que voy a diseñar es básica y solo tendrá los primeros puntos mencionados anteriormente, pero dejaremos abierto el proyecto para crear más funcionalidad después.

Creándo el proyecto: VideoClub.

Abre tu IDE de VB.NET (en tu versión favorita) y crea una nueva aplicación de escritorio.

Nuevo proyecto

Vamos a empezar por agregar un control MenuStrip para tener un menú de archivos en el formulario. Este formulario principal va a ser el formulario de inicio de la aplicación. En este formulario los valores que tendrá sus propiedades son:

● MaximunSize:292; 165
● MinimunSize: 292; 165
● MaximizeBox: False
● MinimizeBox: False
● Size: 292; 165
● StartPosition: CenterScreen
● Text: VideoClub

El icono selecciona un icono a tu gusto o utiliza el de la aplicación. El control del MenuStrip tendrá los menus de Archivo (con un submenú de Inicio), Edición (con el submenú de Buscar), Ayuda y Salir, de tal forma que queda asi de momento.

formulario de inicio

Ahora vamos a crear un nuevo formulario en donde se editarán los títulos de las películas. Vete al menú Proyecto de VS.NET y selecciona Agregar Windows Forms, se te abre la ventana de selección de elemento y selecciona nuevo Windows Forms. Como nombre ponle Films.

Agregar elemento al proyecto

Este nuevo formulario va a tener unas propiedades como las que te indico:

●Size: 920; 700
● MinimunSize: 920; 700
● StartPosition: CenterScreen
● Font: Comic Sans MS; 9,75pt; style=Italic

Rellenándo el formulario Films

El formulario Films va a ser el formulario principal en el cual se crearán, y editarán los títulos de las películas, por lo tanto será en este formulario en el cual se agregarán las mayorías de los controles.

TabPage.
Vamos a utilizar un control TabPage con dos pestañas para las opciones de Insertar y de Buscar. En la opción de Insertar, insertaremos los controles para crear, borrar, insertar y guardar la lista de películas. En la pestaña de Buscar, los controles para dicho sistema de busqueda. También dentro de Films, insertaremos:

● 4 Button
● 3 TextBox
● 3 Label
● 1 ListBox (este irá dentro de la pestaña Insertar del TabControl).

Ajusta los botones para que se muestre el texto que será el que se muestra en pantalla respectivamente.

formulario Films

Por último reordena el formulario y ordena los elementos correctamente para que se representen bonitos cuando se ejecute la aplicación.

Adaptación a la pantalla.
Es importante el hecho de que este formulario se puede ampliar y minimizar y adaptarse a la pantalla. Para ello utiliza la propiedad Anchor en cada elemento que quieras adaptar a la pantalla de forma que cuando seleccionas el elemento, en la ventana de propiedades te sale una representación del espacio que quieres que ocupe cuando se agrande.

Anchor y su uso

Y con esto diseñado, podemos pasar a programar ya nuestra aplicación.

Administración del proyecto.

En toda aplicación informática se requiere de un soporte informático que administre los datos del programa. En nuestra primera parte, vamos a crear los archivos necesarios para que la aplicación tenga las carpetas donde se guardará el archivo. Para ello, y con el fin de crear una carpeta en el primer uso del programa, abriremos el Films en su evento Load para generar una instrucción en la cual, al cargar el mismo, se cree el directorio que voy a llamar Películas y que servirá de soporte para los datos.

crear carpeta principal

Esa carpeta puedes ver que es muy sencilla de crear y que si no existe dicha carpeta en el ordenador, en la ruta especificada que en dicho caso es el escritorio, se creará el directorio específico. Observa que la variable que guarda la ruta del directorio está dentro de la clase global y que la creación de la propia carpeta está ligada al evento load del Films.

Y como ya tenemos el soporte físico de los archivos, podemos empezar por programar las acciones de los botones.

Botón Borrar.
Este botón borrará el elemento seleccionado en el control ListBox1 (pues tiene que existir una forma de borrar un elemento que se haya introducido erroneamente, ¿no?).

borrar selescción

Si observas, tenemos que seleccionar sobre un elemento del ListBox1 para que nos permita activar el Button1 (que por defecto en el load del formulario lo he modificado a Button1.Enabled = false, ya que no quiero que se pulse a lo loco.

Para eliminar el elemento invocamos la instrucción Items.RemoveAt(Listbox1.SelectedIndex).

Por eso invoco al evento SelectedIndexChanged del ListBox1 para que me active el botón cada vez que selecciono un elemento del mismo.

Al pulsar sobre un elemento del listbox se activa el botón de borrar

Borrar todo.
Quiza el más sencillo de todos porque borra todo el contenido del ListBox sin importar si tiene un registro o diez mil.

botón Borrar todo

Este botón utiliza otro condicional para el caso de que se pulse sobre el botón de confirmar el borrado con SI, elimina la lista limpiando el contenido con Clear().

Tengo que aclarar que los elementos del ListBox1 son referenciados como Items por VS.NET, por lo que cuando hacemos referencia a ListBox1.Items, estamos utilizándo los items del control ListBox1.

Introducir datos.
Como toda aplicación, que te permita borrar ciertos datos, deberá también de tener la forma de introducir nuevos datos. Y eso es lo que vamos a hacer. En los controles de Edición del programa puedes ver los 3 TextBox que hemos utilizado para tal fin. Cada vez que escribamos y pulsemos Intro, se nos va a introducir el texto dentro del control ListBox1. OJO, ten en cuenta que yo voy a utilizar 3 controles para introducir 3 cadenas de texto por cada item (título de película, género y ubicación). Esta forma de proceder es en favor de la rapidez del programa, pues mejores sistemas de información, mayores quebraderos de cabeza y tiempo.

Bien, a lo dicho, utilizaremos un nuevo Button5 para la opción de introducir datos. Como ya te puedes ir dando cuenta, la opción Items.Add() nos permitira introducir contenido dentro del ListBox1 y por supuesto como parámetros le pasamos el valor de los TextBox de inserción.

Así que cuando ingresemos texto en las cajas de texto y pulsemos el botón de insertar, se añadirá el texto a la lista. Además la propiedad Toupper(), nos pone el texto en mayúsculas, para resaltarlo. También el color del texto es rojo.

código de insertar texto

Guardar los títulos en archivo.
Esta es la parte más difícil sin duda del proyecto ya que tienes que guardar unos datos contenidos en un control en un archivo plano. La forma que tiene Visual Basic.NET de guardar en un archivo, cuando queremos guardar una lista como la que tenemos en el ListBox1, es que se guarde en el archivo plano (un Notepad por defecto)línea por línea mientras va leyendo las líneas el programa.

Para guardarlo, primero necesitaremos declarar una variable que nos servirá para almacenar el tipo de archivo. Y para eso procedemos igual que con la creación de la carpeta VideoClub que, será la que contendra el archivo de texto.

ruta y nombre de archivo

Observa que la declaración de lavariable se realiza dentro de la clase principal para que tenga el rango de global y todos los procesos puedan acceder a ella. Después tenemos que crear una estructura para que el pragrama vaya leyendo línea por linea del ListBox1 y vaya copiándo en el archivo de texto, con el formato idéntico.

función de grabación de datos

El código se basa en la utilización de librerías que Net. Framework utiliza mucho como la famosa IO que nos permite acceder a funciones de escritura y lectura de directorios y archivos.

Así que como lo que queremos es leer línea por línea el contenido del ListBox1, tenemos que declarar una variable del tipo integer que sera la que utilicemos para el contaje de los items del ListBox1. A continuación la línea siguiente es un condicional para el caso de que no exista el archivo, se cree a estructura para la creación del mismo, gracias a una nueva variable título a la que se asigna una librería de escritura con los datos especificos y asignados al nuevo archivo. El bucle Do while compara el valor del archivo y el contenido del ListBox1 de manera que mientras se realiza la lectura línea por línea del ListBox1 se vaya agregándo un nuevo valor a la variable específica.

Para ir terminándo, el loop libera y cierra los recursos de las variables para, una vez fuera del bucle (y que ya ha recorrido todo el contenido del ListBox1), guarde el archivo de texto en la ruta y con el nombre específico.

Es importante conocer que si existe el archivo y pulsas sobre Guardar, se sobreescribirá el antiguo archivo y perderás la información anterior. Y por eso antes de guardar, vamos a cargar.

Carga de archivo.
La carga de archivo te carga el archivo peliculas.txt dentro del ListBox1. Ocurre el proceso inverso anterior. Y como puedes ver, he creado un botón de cargar, pero lo ideal sería en una aplicación moderna, que cargaran los datos automaticamente. De momento lo vamos a asignar al Button4 (la carga de archivos), pero en la siguiente práctica haremos que se cargue de manera automática.

carga de archivos externos en listbox

Como puedes ver, la carga de archivos es más sencilla que el guardado de datos. Empezamos por poner el ListBox1 a cero (ya que si tienes algo escrito, lo perderás al guardarlo en la carga). Después en el bloque try, creamos una variable que será la encargada de guardar temperalmente los datos del archivo de texto.

Esta variable sr, está ligada a la librería System.IO, por lo que necesitarás exportarla en tu documento, en la parte global de la clase, dentro de la zona de importación de librerías externas.

importar librería system.io

Por último necesitamos un bucle para recorrer el archivo de texto, ya que sin el bucle, la variable sr, solo nos devolveria el primer registro del archivo; de ahí que cuando declaro que sr.peek >=0, vaya generándo línea por línea en el control ListBox1 según lo va leyendo.

Por último en el loop, cierro el uso de la variable, ya que si no lo cerrase, no me permitiría guardarlo posteriormente, ya que saldria un aviso de archivo está siendo usado por otra aplicación.

Para terminar, si se produce un fallo en la lectura del archivo, se muestra un mensaje de error y su tipo de error.

Bueno, vamos a dejarlo por ahora para no saturar al estudiante. En la siguiente práctica, terminaremos el programa VideoClub para pasar a otro proyecto. Espero que te haya parecido interesante y no olvides compartir éste enlace.

En el menú de abajo te puedes descargar el archivo de Visual Studio generado hasta ahora del proyecto. Este es una primera versión, y como ya he mencionado la terminaremos en el siguiente capítulo.

Gracias por tu visita y no dudes en seguir visitándome y aprendiendo gratis. Cualquier consulta estoy a tu disposición en los enlaces siguientes. Saludos.