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.