Los Menús.


Los menús son un parte importante de los programas ya que permiten que el usuario realice en gran medida el trabajo que espera hacer con el programa. En C++ el diseño y gestión de menús es una tarea complicada, sobre todo para los programadores noveles. En cambio Delphi pone a nuestra disposición una herramienta para facilitarnos la tarea, además de tratar cada menú o submenú como un si fuese un componente más.

Para empezar a trabajar con los menús, lo primero es colocar un componente Tmenu, en el formulario. Así que desde la página Standard de Delphi, pincha el primer componente por la izquierda, si para el puntero del ratón, Delphi te indicará que se trata de un componente principal, ya que existe otro tipo de menús que son los emergentes, también conocidos por su nombre en inglés "Popup" y es el componente que está a continuación en esta página. Estos son los menús contextuales que ha introducido Windows 95, por lo tanto solo estarán disponible en la versión 2 o superior de Delphi. Por menú contextual se entiende el menú que es desplegado cuando pulsamos con el botón derecho en algún icono, o sobre el escritorio de Windows 95, por ejemplo.

Una vez que has colocado un componente menú sobre un formulario (los menús emergentes los explico más adelante), solo crea crear los menús. Para ello pulsa dos veces sobre el componente que acabas de colocar, y se despliega un nuevo formulario, el cual nos servirá de plantilla para trabajar, y todos lo cambios que realices sobre este formulario plantilla se reflejarán en el formulario normal.

Fíjate en la imagen que hay a al izquierda de este texto. Es un formulario de diseño que menús creado en Delphi. Debe ser parecido al que te aparezca a ti con excepción de que yo ya he creado un menú. Mira con atención y verás que hay unos rectángulos, a la derecha y debajo de Archivo estando este último resaltado en tres dimensiones. Lo que ocurre es que es ahí donde puedes construir tus menús. Cuando empiezas solo hay un rectángulo, y si pulsas ahí con el ratón puedes escribir el nombre del menú en la propiedad Caption en el inspector de Objetos. ¿Inspector de Objetos?, Si has leído bien, aunque yo no lo haya nombrado antes específicamente, aunque si relees el texto he comentado que los menús son objetos, por lo tanto deben tener propiedades, a las cuales puedes acceder con el inspector de objetos como si fuese un componente más. De hecho hasta que no le pones un nombre, el menú no es registrado como objeto. Pon el texto Archivo en la propiedad Caption, y fíjate que en la parte superior de la ventana ya aparece un componente llamado Archivo1, y es del tipo TmenuItem (Archivo1: TMenuItem). El número después del nombre se lo pone Delphi por si repites y contenido de Caption en otro menú. Recuerda que el contenido de la propiedad Caption no identifica un componente, sino que los componentes son identificados por su nombre (propiedad Name), y cuando pones la propiedad Caption a un menú nuevo sin antes no haber puesto su nombre en la propiedad Name, Delphi toma el contenido de Caption y le añade un número y se lo pone como nombre. Por su puesto que puedes poner el nombre que te plazca.

Como puedes deducir de la plantilla de creación de menús que tienes delante, todos los elementos que pongas debajo del menú que has creado (en mi caso se llama Archivo), serán submenú los cuales aparecerán al pulsar sobre el menú principal. Parece un poco trabalenguas pero lo mejor es que hagas un menú, con algunos submenus, y sin más ejecutes el programa y veas el resultado.



Para crear las clásicas barras separadoras que hay en los menús, solo tienes que poner en la propiedad Caption un guión. Así consigues el efecto que te muestro en la imagen a la derecha de este textocuando tu programa este ejecutándose. Mira que a la derecha de los menús hay teclas de acceso rápido. Las teclas de acceso rápido son combinaciones de teclas que realizan el mismo efecto que si pulsarás ese menú. Por ejemplo en Word cuando pulsas Ctrl+P accedes al cuadro de impresión, eso es porque el menú de impresión tiene asociado esas teclas. Si quieres que tus menús tengan teclas de acceso rápido (también llamados atajos de teclado), tienes que poner la combinación en la propiedad ShortCut del menú o submenú que desees. Si despliegas esta propiedad verás gran cantidad de combinaciones predefínidas. Observa que apenas hay alguna combinación defina con la tecla Alt. Esto es porque las combinaciones de Alt más una tecla esta asociadas al carácter subrayado del texto que muestran los controles a través de su propiedad Caption. Este carácter subrayado se obtiene poniendo antes del carácter deseado el símbolo &. Creo que ya lo he usado en algún ejemplo aunque no lo había comentado. Prueba a poner un menú o submenú con este símbolo incluido en su nombre, por ejemplo: &Cerrar. Tampoco existe la combinación Alt+F4, la cual es conocida por todo usuario de Windows con algo de experiencia, y que sirve para cerrar una aplicación. Una pequeña trampa para relacionar nuestro menú de salida con este atajo de Windows, es ponerlo su propiedad ShortCut, pero como no aparece en la lista pues simplemente teclea la combinación. He dicho teclear, no la ejecutes, sino escribe Alt+F4.Ten en cuenta que si usas este atajo tu programa es el responsable de cerrar la aplicación.

Otra propiedad interesante es Checked, la cual funciona de la misma manera que en el CheckBox que usamos en la alarma. Existen otras propiedades como RadioButton y GroupIndex, las cuales te explicaré cuando toque el tema de los grupos de botones, ya que funcionan igual y lo entenderás mejor.

Te habrás fijado que hay programas que dentro de los menús tienen otros menús que salen hacia un lado, esta indicado con una flecha. Pues para crear un menú de este tipo, solo tienes que ponerte encima del submenú y pulsas en tu teclado la tecla Control, más la tecla cursor hacia la derecha, y ya esta.

Te comento que para borrar un menú o submenú, selecciónalo y pulsa Control más la tecla suprimir. Para insertar pues Control más insertar. También los puedes cambiar de posición o de menú arrastrándolo.

Hasta ahora mucha teoría, pero quizás te estés preguntado que como se controlan los menús y submenús, pues muy fácil, si te digo que responden a un solo evento, funcionan de manera análoga a la de los botones, pues ya esta todo dicho. Pues en ese único evento que tienen los menús es donde debes escribir tu código.

Menús del Tipo PopUp.

Todo lo que te he contado hasta ahora es aplicable a un menú tipo emergente (popup), son iguales, pero lo único que los diferencia es que los menús emergentes se despliegan al pulsar sobre un control con el botón derecho del ratón. Pues para usar un menú de este tipo lo único de que debes hacer es colocar un control de este tipo sobre el formulario que contiene el control que hará uso del menú emergente (puede ser casi cualquier control, o el mismo formulario), configúralo como si se tratase de un menú normal, y ahora en el control que desea que tenga este menú emergente, selecciónalo en su propiedad PopUpMenu, y ya esta. Prueba tu programa y pulsa sobre el componente o formulario con el botón derecho del ratón.