Está en la página 1de 18

Aplicacin de ejemplo en VB.

NET

Lus Rodrguez Baena


Universidad Pontifica de Salamanca en Madrid
Facultad de Informtica 2009

Aplicacin de ejemplo en VB.NET

Aplicacin de ejemplo en VB.NET


1. Propsito de la aplicacin
Esta gua es un tutorial que explica el desarrollo completo de una aplicacin en Visual Basic .NET. La aplicacin formara parte de otra mayor para la compra-venta de coches usados. En concreto permitira la visualizacin de los vehculos a partir de su matrcula. La interfaz de la aplicacin presentara un aspecto similar al siguiente:

Al introducir la matrcula y pulsar sobre el botn ACEPTAR, se visualizar una foto con la imagen del vehculo, apareciendo su matrcula en la barra de ttulo del formulario. El botn SALIR finalizara la aplicacin.

2. Crear un nuevo proyecto1


Una vez abierto el entorno de desarrollo, es necesario crear un nuevo proyecto, ya sea desde la pgina de inicio del entorno o mediante la opcin PROYECTO del men ARCHIVO/NUEVO (CTRL+MAYS+N).

En este cuadro de dilogo se debe elegir la plantilla APLICACIN PARA W INDOWS de la parte derecha. Adems es conveniente dar un nombre a la aplicacin para que la solucin generada no tome el nombre por omisin (WindowsApplicationXXX).

Para todas las pantallas y referencias al entorno de desarrollo, se supondr que se est utilizando la Configuracin de desa rrollo de Visual Basic. Dicha configuracin se puede cambiar mediante la opcin IMPORTAR Y EXPORTAR CONFIGURACIONES del men HERRAMIENTAS.

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

Tambin es posible dar un nombre a la solucin y al proyecto, as como indicar la carpeta donde se guardar cuando por primera vez se da la opcin GUARDAR TODO (CTRL+MAYS+S) del men ARCHIVO.

3. Aadir componentes y establecer propiedades


Los componentes de la aplicacin sern: Un contenedor heredado de System.Windows.Form para el formulario principal. Un campo de texto esttico (control de la clase Label) para la etiqueta del cuadro de texto. Un campo de texto editable (control de la clase TextBox) para introducir la matrcula. Dos botones (controles de la clase Button) etiquetados como ACEPTAR y SALIR. Un control de la clase PictureBox que actuar como contenedor de archivo de imagen de los vehculos. Adems sern necesarias imgenes en formato JPG cuyo nombre ser la matrcula del vehculo con extensin .jpg y con un tamao de 140x100 pxel (algunas de estas imgenes estn disponibles en el Campus Virtual o en la pgina www.colimbo.net).

3.1. El formulario principal


Al iniciar una aplicacin para Windows, el entorno de desarrollo crea automticamente un componente de la clase Form que actuar como formulario principal de la aplicacin. El nombre por omisin del archivo que contiene el formulario es Form1.vb y el nombre del objeto Form1. Sin embargo, es interesante cambiar dichos nombres por otros ms significativos. Para cambiar el nombre del archivo se puede recurrir a las propiedades del archivo, seleccionndolo desde el explorador de proyectos. La versin actual del entorno de desarrollo Visual Studio 2005, cambiar tambin automticamente la propiedad Name del objeto de la clase Form. En el formulario, tambin es importante cambiar el valor de la barra de ttulos del formulario mediante la propiedad Text, y puede ser interesante cambiar el icono predeterminado de la aplicacin mediante la propiedad Icon. En el directorio de Visual Studio, en la subcarpeta VS2005ImageLibrary de la carpeta Common7, existen una serie de directorios con iconos y bitmaps que se pueden utilizar en las aplicaciones. Entre el material proporcionado en este tutorial, tambin aparece el archivo car_icon.ico, con el icono del formulario.

3.2. El control Label


Se utiliza para etiquetar otros campos, en este caso el cuadro de texto que contendr la matrcula. Aparte de las propiedades que podemos usar para cambiar su aspecto (colores, tamao, posicin o tipo de letra), debemos cambiar la propiedad Text que contendr el texto esttico de la

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

etiqueta. En estos controles (ocurrir lo mismo en los botones de la aplicacin), el carcter ampersand (&) antes de una letra definir la tecla de acceso al control.

3.3. El control TextBox


Se utiliza para introducir texto editable por el usuario. En este control es muy conveniente cambiar la propiedad Name del control (por ejemplo, por el identificador txtMatrcula, utilizando el prefijo txt para indicar que se trata de un cuadro de texto.), ya que nos referiremos a l en el cdigo del formulario. La propiedad Text permitir referirnos al texto para obtener su valor o cambiarlo mediante la expresin Matrcula.Text.

3.4. Controles Button


En este caso, tambin ser conveniente cambiar las propiedades Name y Text utilizando en esta ltima el carcter ampersand (&) para especificar la tecla de acceso. En el caso de la propiedad Name, para indicar que se trata de referencias a objetos de la clase Button, se puede utilizar el prefijo btn (los botones podran tener los nombres btnAceptar y btnSalir.

3.5. Control PictureBox


La clase PictureBox sirve como contenedor de objetos grficos. Adems de la propiedad Name (se puede utilizar pic cmo prefijo de las referencias a esta clase) podemos modificar otras propiedades para cambiar su aspecto. El control, por omisin, aparece sin ningn borde que permita distinguirlo en el formulario cuando no contiene ninguna imagen. Es posible crear un borde modificando en tiempo de diseo la propiedad BorderStyle, a la que se asigna algn valor de la enumeracin BorderStyle. La siguiente tabla muestra los miembros de esa enumeracin.
Nombre de miembro Fixed3D FixedSingle None Descripcin Borde tridimensional. Borde de una sola lnea. Sin borde.

De forma predeterminada, se muestra slo la parte de la imagen que cabe en el control, pero mediante la propiedad SizeMode, podemos obligar a cambiar, bien el tamao del control para que se adapta al tamao de la imagen, o bien el tamao de la imagen para que se adapte al tamao del control. El valor de SizeMode es algn miembro de la enumeracin PictureBoxSizeMode, cuyos miembros se puede ver en la tabla siguiente.
Nombre de miembro AutoSize CenterImage Descripcin El tamao de PictureBox debe ajustarse igual que el tamao de la imagen que contiene. La imagen se muestra en el centro si PictureBox es ms grande que la imagen. Si la imagen es ms grande que PictureBox, la imagen se coloca en el centro de PictureBox y se recortan los bordes exteriores. La imagen se coloca en la esquina superior izquierda de PictureBox. La imagen se recorta si es ms grande que el objeto PictureBox que la contiene. La imagen situada dentro de PictureBox se estira o encoge para ajustarse al tamao del mismo.

Normal StretchImage

3.6. Control del orden de tabulacin


Es importante verificar el orden de tabulacin de los controles. En los controles que pueden tomar el foco, el orden de tabulacin lo determina la propiedad TabIndex (tambin podemos evitar que esos controles entren en el orden de tabulacin estableciendo la propiedad TabStop a False).

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

El control Label no puede tomar el foco, aunque si tiene propiedad TabIndex. En este caso, la propiedad se utiliza para establecer que control tomar el foco al utilizar su tecla de acceso, que ser el siguiente en el orden de tabulacin. Podemos establecer manualmente la propiedad TabIndex, o bien utilizar la opcin ORDEN DE TABULACIN del men VER que permite establecerla de forma visual.

4. Codificacin de los eventos


Para dotar de funcionalidad a la aplicacin es necesario codificar los eventos seleccionados mediante el editor de cdigo. Existen distintas formas de abrir el editor de cdigo: Pulsando dos veces sobre un componente se abre el editor de cdigo y aparece una plantilla con el evento predefinido para ese componente (por ejemplo, Click para los controles Button, TextChanged para los TextBox, etc.). Pulsando F7 o meditante la opcin CDIGO del men VER se abre el editor y el cursor se pone sobre la primera lnea del cdigo del mdulo. Pulsando sobre el botn VER CDIGO de la parte superior del Explorador de soluciones.

En cualquiera de los casos aparecer la ventana de cdigo de la que podremos seleccionar un evento predefinido (seleccionando el componente en la lista de la izquierda) y el evento de la lista de la derecha o escribir nuestros propios procedimientos, declaraciones, etc.

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

Cada clase tiene una lista de eventos definidos para ella (que aparece en la lista de la derecha de la pantalla de cdigo). Cada procedimiento de evento no es ms que un procedimiento Sub con una cabecera ya definida. Por ejemplo, para el evento Click de un objeto de la clase Button sera:
Private Sub btnAceptar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAceptar.Click End Sub

La cabecera del procedimiento de evento tiene distintas partes. Por una parte el nombre del procedimiento que, por omisin toma el nombre del control, el carcter de subrayado y el nombre del evento (Aceptar_Click). Es posible cambiar el nombre del procedimiento, ya que quien controla el evento es la clusula Handles del procedimiento. Todos los eventos tienen dos argumentos. El argumento sender es una referencia al objeto que ha enviado al evento. A partir de ella podemos acceder a los distintos miembros del objeto. Sin embargo, su nico miembro accesible es el mtodo GetType, que devuelve una instancia del objeto Type que representa el tipo exacto de la clase actual. Por ejemplo, dentro del procedimiento de evento anterior sender.GetType.Name, devolvera el nombre de la clase del objeto que ha enviado el evento (en nuestro caso, Button). Si queremos acceder a los miembros del objeto que enva el evento, deberamos convertirlo un objeto de una case concreta de forma explcita haciendo una conversin de tipos con los mtodos CType o DirectCast.
Dim obj As Button = DirectCast(sender, Button)

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

El segundo argumento es una referencia a una instancia de la clase EventArgs o a alguna de sus derivadas y contiene informacin sobre el evento. Dependiendo del tipo de evento, este argumento ser de una clase distinta, con distintos miembros para representar cada una de sus caractersticas. Por ltimo, la clusula Handles indicar qu evento de qu control ser el que lance el procedimiento. En el procedimiento anterior, la clusula indica Aceptar.Click, por lo que se lanzar al hacer clic sobre el botn Aceptar. Como se ha dicho ms arriba, a diferencia de otras versiones de Visual Basic, se controlar ese evento independientemente del nombre del procedimiento. En la clusula Handles pueden coexistir varios eventos de distintos controles separados por comas, con lo que un nico procedimiento de evento podr controlar varios eventos. Por ejemplo un procedimiento que incluyera la clusula Handles Button1.Click, Button2.Click, Button1.DoubleClick controlara los enventos Click y DoubleClick de Button1 y el evento Click de Button2. La lista de eventos a codificar en la aplicacin de ejemplo sera la siguiente: Al pulsar sobre el botn SALIR (evento Salir.Click), terminar la aplicacin. Al pulsar sobre el botn ACEPTAR (evento Aceptar.Click), se cargar en el control PictureBox la foto correspondiente a la matrcula introducida en el cuadro de texto. Al mismo tiempo aparecer la matrcula en la barra de ttulo del formulario. Esta misma operacin se podr realizar al pulsar la tecla ENTER en el cuadro de texto (evento Matricula.KeyPress).

4.1. Evento Salir.Click


Existen dos formas de terminar una aplicacin Visual Basic. Una de ellas es utilizar la palabra reservada de Visual Basic End. End terminar la aplicacin al tiempo que cerrar todos los archivos abiertos meditante la instruccin Open y eliminar las variables de memoria, pero sin ejecutar el mtodo Dispose() del formulario. Este mtodo permite incluir cdigo de limpieza que permita cerrar streams abiertos, eliminar referencias de objetos, etc. Por ello, en muchas ocasiones es preferible utilizar una llamada directa al mtodo Close() del formulario de inicio para terminar la aplicacin.
Private Sub btnSalir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSalir.Click Me.Close() End Sub

La palabra clave Me hace referencia a la clase actual, en nuestro caso a CochesUsados.

4.2. Evento Aceptar.Click


Este evento permitir visualizar la imagen del vehculo en el PictureBox. La imagen de un PictureBox se almacena en un objeto de la clase System.Drawing.Image que posee un mtodo esttico FromFile() que sirve para cargar un bitmap almacenado en disco. El mtodo debe recibir como argumento una cadena que contenga la especificacin de archivo del mapa de bits. Estableciendo dicha propiedad al literal Nothing, desaparecer la imagen del control. El problema reside en averiguar cul es la especificacin del archivo que queremos cargar. Podemos utilizar una cadena con la direccin absoluta y concatenar el contenido del cuadro de texto y la extensin .jpg de la siguiente forma: imagen = "C:\Carpeta de imgenes\" & Matricula.Text & ".jpg"

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

pero requerira crear dicha carpeta en todas las mquinas en las que se ejecutara la aplicacin. Otra solucin sera utilizar el objeto Application que guarda informacin sobre la aplicacin que se est ejecutando. Dicho objeto tiene como miembro la propiedad StartUpPath que devuelve una cadena con el directorio de inicio de la aplicacin. Si se guardan las imgenes en una carpeta Fotos que cuelgue de, la especificacin de archivo podra ser: imagen = Application.StartupPath & "\Fotos\" & Matricula.Text & ".jpg"
Private Sub btnAceptar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAceptar.Click Const titulo = "Vehculos en venta" 'Ttulo base del formulario Dim imagen As String 'Especificacin del archivo que contiene la imagen imagen = Application.StartupPath & "\Fotos\" & txtMatrcula.Text & ".jpg" picCoche.Image = Image.FromFile(imagen) Me.Text = titulo & " - " & txtMatrcula.Text End Sub

Obsrvese que la aplicacin no es ni el archivo .vb ni la solucin, sino el archivo ejecutable creado en la compilacin. Dicho archivo se encuentra situado en la carpeta bin\Debug de la solucin, por lo que en nuestro caso la propiedad StartUpPath devolvera carpetaDelProyecto\bin. En nuestra aplicacin, sera esa la carpeta donde colocar los archivos grficos. Ntese tambin que la propiedad no aade la barra invertida final y (\) y la carpeta Fotos, por lo que es necesario aadirla en la expresin.

4.3. Evento Matricula.KeyPress


La deteccin de la tecla ENTER en un control se puede controlar con los eventos KeyPress, KeyDown o KeyUp, aunque como los dos ltimos se utilizan sobre todo para detectar la pulsacin de teclas especiales se utilizar KeyPress. El segundo argumento de KeyPress pertenece a la clase KeyPressEventArgs, uno de cuyos miembros es la propiedad KeyChar, que representa el carcter de la tecla pulsada; para detectar si se ha pulsado la tecla ENTER habr que comprobar si KeyChar coincide con el cdigo de la tecla (Keys.Enter). Si esto ocurre, la accin a realizar ser la misma que la del evento Click del botn aceptar. Esto se puede conseguir, adems de copiando el cdigo, llamando al evento Click de forma directa (mediante una llamada a Matricula_Click(sender,e)), creando un nuevo procedimiento que cargue la imagen (por ejemplo un procedimiento Sub MostrarVehiculo()), o utilizando el mtodo PerformClick de la clase Button. (Aceptar.PerformClick)
Private Sub txtMatrcula_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) _ Handles txtMatrcula.KeyPress If AscW(e.KeyChar) = Keys.Enter Then MostrarVehculo() 'Tambin se podran haber utilizado las siguientes llamadas: ' 'Aceptar.PerformClick() ' 'Aceptar_Click(sender, e) End If End Sub Private Sub MostrarVehculo() Const titulo = "Vehculos en venta" 'Ttulo base del formulario Dim imagen As String 'Especificacin del archivo que contiene la imagen imagen = Application.StartupPath & "\Fotos\" & txtMatrcula.Text & ".jpg" picCoche.Image = Image.FromFile(imagen) Me.Text = titulo & " - " & txtMatrcula.Text

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

End Sub Private Sub btnAceptar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAceptar.Click MostrarVehculo() End Sub

Otra forma de ejecutar las mismas acciones cuando se pulsa la tecla ENTER es convertir el botn Aceptar en el botn predeterminado del formulario. Para ello habra que modificar la propiedad AcceptButton del formulario y asignarla al botn Aceptar. El botn quedara rodeado de un recuadro negro y se activara al pulsar la tecla ENTER desde cualquier parte del formulario.

5. Ejecucin y depuracin
5.1. Generacin de cdigo y control de errores sintcticos
La ejecucin del proyecto se realizar mediante la opcin INICIAR del men DEPURAR (o pulsando la tecla F5). Se generar entonces el ejecutable de la solucin y comenzar la ejecucin en modo de depuracin hasta encontrar un punto de interrupcin, un error o hasta que se detenga la ejecucin de forma manual. Tambin es posible ejecutar la solucin paso a paso (teclas F10 o F11). Si se detecta un error sintctico, no se podr generar la solucin y aparecer una ventana indicndolo.

Si se contina la ejecucin se ejecutar la ltima solucin generada. Si se interrumpe, aparecer en la ventana LISTA DE DE ERRORES informacin del error y se podr ir a la lnea que ha producido el error.

Lus Rodrguez Baena (UPSAM), 2009

Aplicacin de ejemplo en VB.NET

Obsrvese que la llamada dentro del procedimiento es a MostrarVehiculo() (sin acento), mientras que el procedimiento declarado se llama MostrarVehculo() (con acento).

5.2. Errores en tiempo de ejecucin


Cuando el entorno detecta un error en tiempo de ejecucin, aparecer una ventana indicando el error.

En la ventana de cdigo aparecer sealada la lnea que ha producido el error. En la ventana del error aparecer el tipo de error que se ha producido (en este caso una excepcin del tipo FileNotFoundException, es decir, archivo no encontrado), una explicacin ms detallada de la instruccin que ha producido el error (en este caso el nombre del archivo que no se ha encontrado), algunas sugerencias para controlar el problema, y la posibilidad de ver el detalle de la excepcin.

5.3. Depuracin del cdigo en tiempo de ejecucin


Una vez cerrada la ventana de error, ser posible corregir la lnea o lneas de cdigo errneas y continuar la ejecucin seleccionando la opcin CONTINUAR del men DEPURAR o pulsando la tecla F5. Tambin es posible ver el valor de las variables sacando la ventana AUTOMTICO que permite visualizar las variables utilizadas en esa lnea y en la lnea de cdigo anterior, o la ventana de VARIABLES LOCALES, que permite visualizar las variables locales del procedimiento actual. Para seleccionar esas ventanas hay que acceder a la opcin VENTANAS del men DEPURAR.

Lus Rodrguez Baena (UPSAM), 2009

10

Aplicacin de ejemplo en VB.NET

Se puede modificar el valor de las variables pulsando dos veces sobre la variable, modificando su valor y pulsando la tecla ENTER. Tambin se puede modificar la ejecucin normal del programa y desplazar la lnea actual a otra posicin. Para ello hay que pulsar sobre la flecha que indica la lnea actual y desplazar la flecha a otra nueva lnea.

Mientras se est en el modo de depuracin interrumpido (y siempre antes de arrancar la depuracin), es posible ejecutar las instrucciones una a una, haciendo un seguimiento preciso del flujo del programa. Podemos avanzar paso a paso de las siguientes formas: Paso a paso por instrucciones (F11). Ejecuta la siguiente instruccin. Paso a paso por procedimientos (F10). Ejecuta la siguiente instruccin, pero si se trata de una lnea de cdigo con una llamada a una funcin, la ejecuta totalmente y salta a la siguiente instruccin dentro del mbito actual. Paso a paso para salir (SHIFT+F11). Termina la funcin actual y lleva el cursor a la ltima llamada. Otra posibilidad de depuracin es forzar la detencin de la ejecucin colocando puntos de interrupcin en las instrucciones ejecutables. Para establecer un punto de interrupcin, simplemente hay que pulsar en el margen de la ventana de edicin de cdigo en cualquier lnea que contenga una instruccin ejecutable. Aparecer entonces un punto rojo indicando el breakpoint y la ejecucin se detendr en ese punto. Al llegar la ejecucin del programa a ese punto, el programa se detendr, aparecer en el ttulo de la ventana de Visual Studio la aclaracin (Depurando) y se marcar como lnea activa la lnea donde est colocado el punto de interrupcin.

Lnea activa

Lnea con punto de interrupcin

Con el programa detenido, podremos analizar las variables, modificar el cdigo, cambiar la lnea activa o ejecutar paso a paso el programa tal y como se ha indicado anteriormente.

Lus Rodrguez Baena (UPSAM), 2009

11

Aplicacin de ejemplo en VB.NET

6. Control estructurado de excepciones


Cuando un mtodo detecta un problema en tiempo de ejecucin, se genera una excepcin (un error). Si el mtodo no est preparado para controlarla, se manda la excepcin al siguiente mtodo en la pila de llamadas y as sucesivamente hasta que se encuentra un controlador de excepciones que la capture o se llega al final de la pila de llamadas con lo que aparecer un mensaje indicando la excepcin que se ha producido y finalizando la aplicacin. Mediante el control estructurado de excepciones el cdigo que potencialmente pude producir un error se encapsula y captura las excepciones para las que ha sido programado mediante las instrucciones Try..Catch..Finally.
Try [ instrucciones protegidas ] [ Catch [ excepcin [ As tipoExcepcin ] ] [ instrucciones Catch ] ] [ Exit Try ] ... [ Finally [ instrucciones Finally ] ] End Try

El bloque Try..End Try se encarga de encerrar el cdigo que puede producir una excepcin. Si se produce algn error dentro de ese bloque, Visual Basic revisar todas las instrucciones Catch del bloque para comprobar si alguna de ellas hace referencia a la excepcin que se ha producido. De ser as, ejecutar las instrucciones de la clusula Catch correspondiente. Por ltimo, la clusula Finally se ejecutar tanto si se produce como si no se produce una excepcin. Un bloque Try puede tener tantas clusulas Catch como excepciones se deseen controlar. Cuando se produce una excepcin se establece el objeto global Err y se genera una instancia de la clase Exception o de alguna de sus derivadas. Visual Basic comprobar todas las clusulas Catch hasta encontrar una que coincida con el tipo de excepcin generada, ejecutndose el cdigo asociado. De no encontrar ninguna, se pasar esa excepcin al siguiente mtodo en la pila de llamadas. El objeto Err contiene informacin sobre el error producido, como las propiedades Err.Number, con el cdigo del error que se ha producido, Err.Source con el nombre del objeto o la aplicacin donde se ha producido, o Err.Description con la descripcin del error. La clase Exception tiene, entre otras, las propiedades Source, con informacin de la aplicacin o el objeto que la ha producido, Message, con informacin sobre la excepcin o StackTrace con una lista de la pila de llamadas cuando se produjo la excepcin actual. Adems cada una de las clases derivadas de Exception tiene su propiedades caractersticas (en la ayuda de Visual Studio, aparece la jerarqua de clases de Exception con sus clases derivadas, propiedades, mtodos, etc.)

6.1. Controlar excepciones en la aplicacin de ejemplo


La aplicacin que se est desarrollando puede generar una excepcin cuando no existe ninguna imagen del vehculo cuya matrcula se ha introducido al ejecutar la instruccin FromFile(). La excepcin producida pertenecera a la clase System.IO.FileNotFoundException, y, si no se controla, en la aplicacin definitiva aparecera el siguiente mensaje por pantalla y terminara la aplicacin.

Lus Rodrguez Baena (UPSAM), 2009

12

Aplicacin de ejemplo en VB.NET

Un nuevo procedimiento MostrarVehiculo() con el controlador de excepciones podra quedar de la siguiente forma.
Private Sub MostrarVehculo() Const titulo = "Vehculos en venta" 'Ttulo base del formulario Dim imagen As String 'Especificacin del archivo que contiene la imagen imagen = Application.StartupPath & "\Fotos\" & txtMatrcula.Text & ".jpg" Try 'Si no hay errores, se carga la imagen 'y se establece el ttulo del formulario picCoche.Image = Image.FromFile(imagen) Me.Text = titulo & " - " & txtMatrcula.Text Catch e As System.IO.FileNotFoundException 'Si no se encuentra el archivo aparece un cuadro de dilogo 'indicndolo, se vaca el cuadro de texto y 'se restablece el ttulo de la ventana MessageBox.Show("El vehculo con matrcula " & txtMatrcula.Text & _ " no tiene imagen asociada.", _ "Vehculos en venta", _ MessageBoxButtons.OK, _ MessageBoxIcon.Exclamation) 'Se vaca el texto del cuadro de texto txtMatrcula.Text = String.Empty 'Se vaca el PictureBox picCoche.Image = Nothing 'Se restablece el ttulo de la ventana Me.Text = titulo Catch e As Exception 'Si se produce cualquier otro error aparece un cuadro de dilogo 'indicando la circunstancia, el cdigo de error, 'la descripcin del error y la pila de llamadas. 'Adems se vaca el cuadro de texto y 'se restablece el ttulo de la ventana MessageBox.Show("No se ha podido cargar la imagen." & _ ControlChars.CrLf & _ "Error: " & Err.Number & " - " & e.Message & _ " " & e.StackTrace & ".", _ "Vehculos en venta", MessageBoxButtons.OK, _ MessageBoxIcon.Exclamation) 'Se vaca el PictureBox picCoche.Image = Nothing 'Se vaca el texto del cuadro de texto txtMatrcula.Text = String.Empty 'Se restablece el ttulo de la ventana Me.Text = titulo Finally 'De cualquier forma el foco vuelve al cuadro de texto txtMatrcula.Select() End Try End Sub

Lus Rodrguez Baena (UPSAM), 2009

13

Aplicacin de ejemplo en VB.NET

7. Distribucin de la aplicacin
A diferencia de las aplicaciones Win32, una aplicacin .NET no precisa instalar y registrar los componentes y referencias de la solucin para distribuir la aplicacin en otros equipos: un simple XCopy o un FTP del directorio de la aplicacin permitir ejecutarla sin problemas, siempre y cuando se encuentre instalado .NET Framework en los ordenadores donde se debe ejecutar la aplicacin. A pesar de esto, Visual Studio tiene entre sus plantillas de proyectos aplicaciones para instalar y distribuir aplicaciones. Este tipo de aplicaciones generarn un archivo Setup.exe que permitir instalar la aplicacin en otros equipos2. Para aadir un proyecto de instalacin a nuestra aplicacin, hay que seleccionar la opcin NUEVO PROYECTO del men ARCHIVO/AGREGAR. En la lista de plantillas habra que elegir entre los tipos de proyecto OTROS TIPOS DE PROYECTOS y PROYECTOS DE INSTALACIN E IMPLEMENTACIN y elegir la plantilla ASISTENTE PARA PROYECTOS DE INSTALACIN.

Se abrir entonces el asistente y, despus de la pantalla de bienvenida, habr que seleccionar el tipo de instalacin que deseamos hacer, que en nuestro caso ser una instalacin de una aplicacin para Windows.

Esa aplicacin tambin es una aplicacin .NET por lo que todava ser necesario tener instalado .NET Framework. Para ms informacin sobre cmo instalar tambin .NET Framework, se puede acceder a las pginas http://support.microsoft.com/default.aspx?scid=kb;en-us;324733 o http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnnetdep/html/vsredistdeploy.asp. Tambin es posible obtener ms informacin sobre los proyectos de instalacin en http://www.elguille.info/colabora/puntoNET/jmbeas_instaladores/jmbeas_InstaladoresNET.htm

Lus Rodrguez Baena (UPSAM), 2009

14

Aplicacin de ejemplo en VB.NET

La siguiente pantalla permite indicar que elementos de la aplicacin se incluirn en la instalacin. El RESULTADO PRINCIPAL DE COCHESUSADOS es el que incluye el archivo ejecutable de la instalacin y las DLL necesarias.

El paso siguiente ser indicar si se desea incluir algn archivo extra en la instalacin. Aqu se deberan incluir, si son necesarios, archivos grficos, archivos de tipo readme.txt, las bases de datos, etc. En nuestro caso puede ser interesante incluir las imgenes de los vehculos y el icono del programa.

Lus Rodrguez Baena (UPSAM), 2009

15

Aplicacin de ejemplo en VB.NET

Despus de la pantalla de despedida y pulsar el botn FINALIZAR se crear un nuevo proyecto. En la ventana del Explorador de soluciones aparecer una nueva carpeta en la solucin con el nombre de Instalar (este es el nombre que hemos dado al proyecto en la ventana Agregar nuevo proyecto) que ser el nuevo proyecto. La ventana de los diseadores de los proyectos de instalacin es distinta de las del diseador de proyectos. Lo que aparecer es el sistema de archivos que crear la instalacin, tanto en la carpeta de la aplicacin, como en el escritorio del usuario como en el men programas del usuario. En la ventana de la izquierda aparecen las carpetas y en el de la derecha su contenido. Es posible crear nuevas carpetas y aadir nuevos contenidos a los creados inicialmente mediante los mens contextuales.

Lus Rodrguez Baena (UPSAM), 2009

16

Aplicacin de ejemplo en VB.NET

El proyecto de instalacin, por omisin, crear una proyecto llamado Instalar, que se instalar en la carpeta de ARCHIVOS DE PROGRAMA con ese nombre y no crear ninguna entrada en el men Programas. Para cambiar esto es necesario modificar las propiedades del proyecto. Para cambiar las propiedades del proyecto es necesario marcar el proyecto Instalar del Explorador de proyecto. Algunas de las propiedades son: Autor, con el nombre del creador del programa. Aparece al pasar el cursor por el archivo .msi de la aplicacin. Description, es la descripcin del programa que aparecer en el archivo .msi Manufacturer, nombre de la compaa que ser de forma predeterminada el nombre de la carpeta donde se instalar la carpeta de la aplicacin. ProductName, nombre del producto que aparecer en el ttulo de la ventana del programa de instalacin. Title, ttulo del programa que aparecer en el archivo .msi. La carpeta de la aplicacin representa la ubicacin de la carpeta donde se ubicar el programa. Por omisin se instalar en [ProgramFilesFolder][Manufacturer]\[ProductName], pero podemos cambiar el destino mediante la propiedad DefaultLocation. En esta carpeta tambin se podran crear subcarpetas para determinadas funciones. Por ejemplo, podramos crear una subcarpeta Fotos donde se almacenaran las fotos, tal y como aparece en la figura anterior.

En MEN PROGRAMAS DEL USUARIO podemos crear la entrada que aparecer en el men de Inicio de Windows. Inicialmente esa carpeta permanece vaca, por lo que si deseamos crear un nuevo elemento, deberemos crear un nuevo acceso directo al resultado principal de la aplicacin. Para ello, se deber pulsar con el botn derecho en la ventana de la derecha y selecciona la opcin CREAR NUEVO ACCESO DIRECTO del men contextual.

Lus Rodrguez Baena (UPSAM), 2009

17

Aplicacin de ejemplo en VB.NET

En la ventana resultante deberemos seleccionar Resultado principal de CochesUsados de la Carpeta de la aplicacin. Pulsando sobre el nuevo acceso directo accedemos a sus propiedades: Name, con el nombre que aparecer en el men Programas. Description, con el texto que aparecer al pasar el cursor por la entrada del men. Icon, con el icono asociado a la aplicacin. El icono debe estar incluido en la carpeta de la aplicacin, y podemos aadirlo seleccionando la carpeta de la aplicacin y aadiendo el archivo .ico. Una vez modificadas las propiedades, seleccionando GENERAR del men secundario del proyecto Instalar, se generar el programa de instalacin. En la carpeta indicada al crear el proyecto, en la subcarpeta Debug, aparecern dos archivos: Instalar.msi, el programa de instalacin que se puede utilizar si la mquina cliente no tiene instalado Windows Installer, y setup.exe, el programa que es necesario utilizar si se tiene instalado Windows Installer. En condiciones normales, cualquiera de los dos ltimos permitir instalar la aplicacin.

Lus Rodrguez Baena (UPSAM), 2009

18

También podría gustarte