Mens Controles de tipo men El men es uno de los tipos de control ms frecuentemente utilizados en los formularios Windows. Consiste en un conjunto de opciones, a travs de las cuales, el usuario ejecutar algunos procesos de la aplicacin. Men Principal. MenuStrip Un control MainMenu, consiste en un conjunto de opciones que se sitan horizontalmente debajo del ttulo del formulario. A partir de cada opcin, podemos asociar a su vez, grupos de opciones que se mostraran verticalmente al hacer clic en la opcin principal o situada en la barra horizontal. Al hacer clic en la primera opcin del men, podemos dar nombre y propiedades a esa opcin. Al mismo tiempo, de un modo muy intuitivo, veremos las prximas opciones disponibles, tanto las desplegables a partir de dicho men, como las de la barra principal. Slo hemos de movernos en la direccin que necesitemos y dar nombre a las opciones, y valores a sus propiedades. Ing. Oscar Ascn Valdivia 2 Entre las propiedades disponibles para un MenuItem, podemos destacar las siguientes. Text. Contiene una cadena con el literal o texto descriptivo de la opcin de men. Enabled. Permite habilitar/deshabilitar la opcin de men. Cuando se encuentra deshabilitada, se muestra su nombre en un tono gris, indicando que no puede ser seleccionada por el usuario. Checked. Marca/desmarca la opcin. Cuando una opcin est marcada, muestra junto a su nombre un pequeo smbolo de verificacin o punteo. ShortCutKey. Se trata de un atajo de teclado, o combinacin de teclas que nos van a permitir ejecutar la opcin de men sin tener que desplegarlo. Al elegir esta propiedad, aparecer una lista con todos los atajos disponibles para asignar. Visible. Muestra u oculta la opcin de men. PRACTICA 1. Desarrollar un sistema que permita validar al usuario, si la clave es la correcta, este deber llamar a un formulario que contenga un Menu que interactu con los dos casos siguientes. 2. Disear un formulario que permita registrar los datos de alumnos (DNI, Nombres, Apellidos, Carrera), solo debe permitir registrar 10 alumnos de Ing. De Sistemas, 8 de Contabilidad, 5 de Medicina y 7 de Derecho. 3. Disear un formulario que permita registrar los datos de un trabajador (DNI, Nombres, Apellidos, Sueldo), solo debe permitir registrar 10 trabajadores, el programa debe permitir agregar y eliminar trabajadores, adems debe de mostrar el movimiento de la cantidad de trabajadores y el monto de los sueldos. Ing. Oscar Ascn Valdivia 3 MANIPULACIN DE ERRORES Errores, ese mal comn Difcil es, por no decir imposible, encontrar al programador que no tenga errores en su cdigo. Por mucho cuidado que pongamos al codificar nuestras aplicaciones, los errores de ejecucin sern ese incmodo, pero inevitable compaero de viaje que seguir a nuestros programas all donde estos vayan. En primer lugar, antes de abordar el tratamiento de errores en nuestras aplicaciones, y los elementos que nos proporciona el entorno para manipularlos, podemos clasificar los tipos de errores en una serie de categoras genricas. Errores de escritura Son los de localizacin ms inmediata, ya que se producen por un error sintctico al escribir nuestro cdigo, y gracias al IDE de Visual Studio .NET, podemos detectarlos rpidamente. Cuando escribimos una sentencia incorrectamente, dejamos algn parntesis sin cerrar, etc., el IDE subraya la parte de cdigo errnea, y nos muestra un mensaje informativo del error al situar el cursor del ratn sobre el mismo. Errores de ejecucin Este tipo de errores son los que provocan un fallo en la ejecucin del programa y su interrupcin. No obstante, si utilizamos los gestores de error que proporciona la herramienta de desarrollo correspondiente, podremos en algunos casos, evitar la cancelacin de la ejecucin, recuperando su control. El ejemplo del Cdigo fuente provoca un error, ya que se intenta asignar un valor que no corresponde al tipo de dato de una variable. Dim dtFecha As Date dtFecha = "prueba" Los errores de ejecucin son el objetivo del presente tema; sobre su captura y manipulacin nos centraremos a lo largo de la presente clase. Errores lgicos Estos errores son los de ms difcil captura, ya que el cdigo se encuentra correctamente escrito, producindose el problema por un fallo de planteamiento en el cdigo, motivo por el cual, por ejemplo, el control del programa no entra en un bucle porque una variable no ha tomado determinado valor; el flujo del programa sale antes de lo previsto de un procedimiento, al evaluar una expresin que esperbamos que tuviera un resultado diferente, etc. Errores y excepciones Dentro del esquema de gestin de errores del entorno .NET Framework, encontramos las figuras del error y la excepcin. Estos elementos son utilizados indistintamente en muchas ocasiones para hacer referencia genrica a los errores producidos; sin embargo, aunque complementarios, cada uno tiene su propia funcionalidad dentro del proceso de tratamiento de un error. Error. Un error es un evento que se produce durante el funcionamiento de un programa, provocando una interrupcin en su flujo de ejecucin. Al producirse esta situacin, el error genera un objeto excepcin. Excepcin. Una excepcin es un objeto generado por un error, que contiene informacin sobre las caractersticas del error que se ha producido. Ing. Oscar Ascn Valdivia 4 Manipuladores de excepciones Un manipulador de excepcin es un bloque de cdigo que proporciona una respuesta al error que se ha producido, y que se incluye en una estructura proporcionada por el lenguaje a tal efecto, es ecir, para la captura de excepciones. La estructura Try...End Try Esta estructura de control del lenguaje, proporciona el medio para definir un bloque de cdigo sensible a errores, y los correspondientes manipuladores de excepciones, en funcin del tipo de error producido. SINTAXIS Try ' cdigo que puede provocar errores ' .... ' .... [Catch [Excepcion [As TipoExcepcionA]] [When Expresin] ' respuesta a error de tipo A ' .... [Exit Try] ] [Catch [Excepcion [As TipoExcepcionN]] [When Expresin] ' respuesta a error de tipo N ' .... [Exit Try] ] [Finally ' cdigo posterior al control de errores ' .... ] End Try Analicemos con detalle los principales elementos de esta estructura. En primer lugar nos encontramos con su declaracin mediante la palabra clave Try. Todo el cdigo que escribimos a partir de dicha palabra clave, y hasta la primera sentencia Catch, es el cdigo que definimos como sensible a errores, o dicho de otro modo, el bloque de instrucciones sobre las que deseamos que se active el control de errores cuando se produzca algn fallo en su ejecucin. A continuacin, establecemos cada uno de los manipuladores de excepcin mediante la palabra clave Catch. Junto a esta palabra clave, situaremos de forma opcional, un identificador que contendr el objeto con la excepcin generada. Finalmente, y tambin de modo opcional, con la palabra clave When, especificaremos una condicin para la captura del objeto de excepcin. Podemos escribir uno o varios manipuladores Catch dentro de una estructura de control Try...End Try. Ing. Oscar Ascn Valdivia 5 Cada vez que se produzca un error, el flujo de la ejecucin saltar a la sentencia Catch ms acorde con el tipo de excepcin generada por el error, siempre y cuando hayamos situado varios manipuladores de excepciones en el controlador de errores. Tanto si se produce un error como si no, la sentencia Finally de la estructura Try...End Try, nos permite escribir un bloque de cdigo que ser ejecutado al darse una condicin de error, o bajo ejecucin normal del procedimiento. La clase Exception Como hemos explicado, cada vez que se produce un error, el entorno de ejecucin genera una excepcin con la informacin del error acaecido. Para facilitarnos la tarea de manipulacin de la excepcin producida, en un controlador de excepciones obtenemos un objeto de la clase Exception, o de alguna de sus derivadas, de forma que, a travs de sus miembros, podemos saber qu ha pasado. Entre las propiedades y mtodos que podemos utilizar, se encuentran las siguientes. Message. Descripcin del error. Source. Nombre del objeto o aplicacin que provoc el error. StackTrace. Ruta o traza del cdigo en la que se produjo el error. Casos Practicos 1. Implementar un formulario que permita controlar los errores, por ejemplo dividir un numero entre cero. Private Sub btndividir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndividir.Click Dim x, y, d As Double Try x = Me.txtnum1.Text 'Bloque de cdigo y = Me.txtnum2.Text d = x \ y Me.txtresultado.Text = d Catch ex As Exception 'Tratamiento del error MsgBox(ex.Message, MsgBoxStyle.OKOnly, "Controlador de error") End Try End Sub Ing. Oscar Ascn Valdivia 6 2. Disear e implementar un formulario que permita Agregar y eliminar elementos a listas. Private Sub btnagregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnagregar.Click Try Me.lstapellidos.Items.Add(Me.txtapellidos.Text) Me.lstdni.Items.Add(Me.txtdni.Text) Me.lstnombres.Items.Add(Me.txtnombres.Text) Catch err As Exception MessageBox.Show(err.Message) End Try End Sub