PDA

Ver la Versión Completa : ¿Centrar los MessageBox y ShowMessage?


judoboy
17-07-2003, 13:17:18
Hola, es que no se que he tocado pero ahora los ShowMessage, y los MessageBox, no me salen centrados en la pantalla, me aparecen abajo

¿Porque puede ser esto?

Magneto
18-07-2003, 06:40:55
Yo no estoy muy seguro, no suelo trabajar con esos componentes, es más, hace poco que aprendí (más o menos) a usarlos. Pero tengo entendido que si los creás, luego podés cambiar las propiedades que tengan. Los Forms, por ejemplo, tienen una propiedad que es Position, en la que se puede elegir una opcion ScreenCenter, que hace que aparezca en el centro de la pantalla (hay unas cuántas más opciones además de esa). No sé qué es lo que habrás tocado que ya no salen más centrados en la pantalla, pero si podés acceder a alguna propiedad parecida a la Position de los Forms, deberías poder centrarlo en la pantalla.
Espero que te sirva de ayuda.

madman
18-07-2003, 07:49:42
Texto escrito por magneto:
...no suelo trabajar con esos componentes...

Propiamente dicho los ShowMessage y MessageBox, son funciones y que nos ayudan a mostrar un mensaje simple o un cuadro de mensaje con varias opciones (Si,No,Guardar, etc.)

Sacado de la ayuda de Delphi.

ShowMessage(const Msg: WideString);

function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
Value Meaning

MB_ABORTRETRYIGNORE The message box contains three push buttons: Abort, Retry, and Ignore.
MB_OK The message box contains one push button: OK. This is the default.
MB_OKCANCEL The message box contains two push buttons: OK and Cancel.
MB_RETRYCANCEL The message box contains two push buttons: Retry and Cancel.
MB_YESNO The message box contains two push buttons: Yes and No.
MB_YESNOCANCEL The message box contains three push buttons: Yes, No, and Cancel.

MessageBox returns 0 if there isn’t enough memory to create the message box. Otherwise it returns one of the following values:

Value Numeric value Meaning

IDOK 1 The user chose the OK button.
IDCANCEL 2 The user chose the Cancel button.
IDABORT 3 The user chose the Abort button.
IDRETRY 4 The user chose the Retry button.
IDIGNORE 5 The user chose the Ignore button.
IDYES 6 The user chose the Yes button.
IDNO 7 The user chose the No button.

Ejemplo:
ShowMessage('Alerta el Windows se colapsará'); // Un ejemplo enfocado a la vida real :D

MessageBox('This should be on top.', 'Look', [mb_OK]);


Este otro te permite ponerlo en la posicion X,Y

procedure ShowMessagePos(const Msg: WideString; X, Y: Integer);



Texto escrito por magneto:
...si los creás, luego podés cambiar las propiedades que tengan. Los Forms, por ejemplo, tienen una propiedad que es Position, en la que se puede elegir una opcion ScreenCenter, que hace que aparezca en el centro de la pantalla (hay unas cuántas más opciones además de esa)....


Una solución temporal, es hacerte de tus propios Cuadros de
Mensaje con unos Forms. Y centrarlos...

Esto hasta que alguien te de con la respuesta que solicitas.

judoboy
18-07-2003, 12:26:05
Bueno pues gracias a los dos.
Mira lo de Mb_RetryCancel no lo sabía me viene de perlas.

Pues el asunto es que al final lo he resuelto copiando el backup de ayer. Me copio todos los días al servidor todo el código fuente de mi programa y así si tengo un problema que no se recurro a el y ya está.

delphi.com.ar
18-07-2003, 16:03:47
Hola JudoBoy, no creo que el problema sea el código fuente que recuperaste (aunque todo es posible), he visto en mas de una ocasión que Windows erráticamente empieza a mostrar los mensajes en cascada, hasta que como la cascada queda fuera de la pantalla, pone todos los nuevos mensajes en el margen inferior izquierdo.
Repito: Todo es posible!

Saludos!