Cuadros de Mensajes.

 

Los tipos de cuadros de mensajes que existen son:

         ShowMessage

         ShowMessagePos

         MessageDlg

         MessageDlgPos

         MessageBox

ShowMessage es el m�s sencillo de todos ellos. El cuadro aparece por defecto en el centro, el t�tulo del mismo es el nombre de la aplicaci�n, el texto lo indicamos nosotros, y tiene solo un bot�n. Vamos a probarlos, en una aplicaci�n nueva pon un boton, haz doble clic en �l para que aparezca el editor de c�digo en el evento doble clic, y dentro de �l escribe esto: ShowMessage ('!Super cuadro a la vista!');

Ejecuta la apliaci�n y si todo va bien, al pulsar el bot�n veras un cuadro en el centro de la apliaci�n. Pulsa el boton y cierra la aplicaci�n, que vamos a compliacarlo un poquito m�s con una variante de showMessage, que es ShowMessagePos.Esta tipo es igual al anterior pero tiene dos detalles m�s, que son dos valores que indican las coordenadas donde se mostrar� el cuadro. Para indicar unas coordenadas dentro de la pantalla tienes que conocer el tama�o de la misma. Esto se puede obtener preguntando al sistema por el ancho y el largo de la pantalla. Hay un objeto llamado Tscreen que contiene estas propiedades, pero no te voy a liar la cabeza con cosas de programaci�n orientada al objeto, si tienes algo de conocimiento de programaci�n "cl�sica" imaginate, en este caso, que es algo as� como un registro, sino tienes ni idea de esto, pues simplemente piensa que es una funci�n o un servicio de windows, como los cuadros que estamos viendo, que los invocas y windows se ocupa de todo. Pues a lo que iba, si pones Screen.Height, obtienes el valor del alto de la pantalla, y lo mismo para Screen.Width pero para el ancho.

As� que el ShowMessagePos necesita que le indiques el texto, y adem�s las coordenas, primero el ancho y luego el largo. A�ade un nuevo bot�n al proyecto y en su evento dobleclic pon esta l�nea: ShowMessagePos ('Cuadro con Coordenadas', Screen.Width div 3,Screen.Height div 3);

Prueba el programa y veras que el cuadro sale en el centro, eso es porque las coordenadas, prueba a cambiar estos datos.

La verdad es que mostrar un mensaje y no dejar que el probre usuario pueda expresar su opinion al respecto es un poco dictador, as� que para saber lo que piensa al respecto pues nada mejor que un referendum. La posibilidad se nos brinda con MessageDlg, pero por contra se complica un poco, pero no mucho. De nuevo el primer dato que recibe la funci�n es el texto que deseamos mostrar, luego el tipo de cuadro que mostraremos segun una lista pr�definida por windows, el tercero es son los botonos que se van a mostrar, y para terminar el cuarto es indice que esta relacionado con la ayuda de la apliacci�n que creemos si colocamos un bot�n de ayuda en el cuadro.

Los tipos de cuadro que exiten estan indicados en la lista que a continuac�on muestro, ten en cuenta que seg�n el tipo de cuadro windows pinta un icono en tu cuadro, por ejemplo un cuadro de informaci�n mostrar� un icono de exclamaci�n.

         mtIformation

         mtWarning

         mtError

         mtConfirmation

         mtCustom

Los tipos de botones que podemos poner son los siguientes:

         mbYes

         mbNo

         mbOk

         mbCancel

         mbAbort

         mbRetry

         mbIgnore

         mbAll

         mbHelp

Cuando pones los tipos de botones que deseas debes ponerlos entre corchetes ([ ]), y seguidos de una coma. Otra opci�n es poner un serie de botones predefinidos, pero si lo haces no pongas los corchetes. Los tipos de botones predefinidos son:

         mbYesNoCancel

         mbAbortRetryIgnore

         mbOkCancel

Pon otro bot�n en el proyecto y escribe dentro de su evento doble clik lo siguiente:
If MessageDlg ('�Es chuli mi apliaciaci�n?', mtwarning,[mbyes,mbno],0) = mrYes Then ShowMessage ('�Guai!')
else
ShowMessage ('Mal amigo');

Observa que aqui hay m�s novedades, y es que MessageDlg deuvelve el valor del bot�n pulsado por el usuario. El valor devuelto es una constante que puede tomar los siguientes valores:

         mrNone

         mrAbort

         mrYes

         mrOk

         mrRetry

         mrNo

         mrCancel

         mrIgnore

         mrAll

Observa que el valor de la constante tiene el nombre del bot�n pulsado, as� en el ejemplo cuando es pulsado el bot�n mbYes, el valor devuelto es mrYes. Ten cuidado no vallas a esperar la pulsaci�n de un bot�n que nos has puesto en el cuadro, porque nunca te devolver� ese valor la funci�n. Un inciso para los lectores con menos conocimientos, y es una breve explicaci�n de la instrucci�n If.
La instrucci�n if comprueba condiciones, as� en el ejemplo estoy evaluando el valor que existe a la derecha del if, con el de la izquierda. Si la condici�n es igual ejecuta la linea que ahi inmediatamente debajo, en otro caso (else) ejecuta la linea que hay despues del else.Tambien se puede omitir el else, pero no tendriamos una segunda alternativa. Para m�s informaci�n mira la ayuda de delphi, o un libro de metodolog�a de la programaci�n si es que no tienes conocimientos previos de programaci�n.

La variante de MessageDlg es MessageDlgPos, que es igual pero tiene un par de datos m�s, que es, al igual que ShowMessagePos, las coordenadas donde se situar� el cuadro cuando se muestre. Su formato es:
MessageDlgPos ('texto',tipo de cuadro,botones,indice de ayuda, coordenada X, coordenada Y);

Te habr�s dado cuenta que todos estos cuadros estan en ingl�s, pero tenemos la opci�n de ponerlos en castellano, y es usando MessageBox, pon esta linea en otro boton:
Application.MessageBox ('Mensaje','Titulo',mb_okCancel+mb_IconExclamation);
Fijate de nuevo el mensaje a mostrar, luego el titulo, despues los botones que queremos poner, y el icono tambi�n a nuestra voluntad. No voy a entrar en detalles sobre este tipo de cuadro, ya que este individuo es una llamada a la api de windows, ese es el motivo porque saque los textos de los botones en castellanos, si lo pruebas sin cambiar nada en un ordenador con un windows en otro idioma, los botones saldran en ese otro idioma.

Fiajate que si deseas comprobar el tipo de boton que devuelve la funci�n debes usar estas constantes, no las anteriores:

         IdAbort

         IdCancel

         IdIgnore

         IdNo

         IdOk

         IdRetry

         IdYes

Los botones que puedes utilizar son solo las combinaciones de botones predefinidas que list� m�s arriba. Y los tipos de iconos son:

         Mb_IconAsterisk

         Mb_IconError

         Mb_IconExclamation

         Mb_iconHand

         Mb_IconInformation

         Mb_IconQuestion

         Mb_IconStop

         Mb_IconWarning

En esta p�gina has aprendido los cuadros de mensajes predefinidos, la pr�xima p�gina explica como hacer un cuadro de dialogo propio, que funciona igual que estos, pero le puedes poner lo que quieras. Ahora si quieres puedes bajar los ficheros de un programa que realiza todo lo que he explicado aqui. Te invito a que experimentes todas las variaciones que se te ocurran sobre los ejemplos que he puesto.