Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como pongo un mensaje de aviso (https://www.clubdelphi.com/foros/showthread.php?t=24451)

Antuan 21-08-2005 13:26:02

Como pongo un mensaje de aviso
 
Hola tengo que poner un mensaje de espera mientras se ejecuta una funcion.
pero no tiene que tener botones.
Una vez que la funcion termine. El mensaje tiene que desaparecer solo.
Es para avisar al usuario que el programa esta haciendo algo para que no vea se ha quedado colgado.
Pero como soy novato no se como se puede hacer.
Asi que si me podeis decir como puedo hacerlo.
Muchas gracias

dec 21-08-2005 13:54:21

Hola,

Prepara un formulario o créalo en tiempo de ejecución incluyendo en el mismo un "TLabel" con un "Espera un momento..." o algo así. Muestra este formulario no con el método "ShowModal" (pues tu función se pararía hasta que el formulario se cerrase) pero con el método "Show". Sin embargo, asegúrate de que la propiedad "FormStyle" del formulario vale "fsStayOnTop", de tal manera que el usuario no pueda dejar de verlo (simulando un "ShowModal") y eso es todo. Cuando tu función termine, justo antes, cierra el formulario y libéralo, si lo ves menester.

dec 21-08-2005 14:40:51

1 Archivos Adjunto(s)
Hola,

Tal vez un ejemplo, aunque mejorable, te parezca algo mejor Antuan.

dec 21-08-2005 15:23:20

1 Archivos Adjunto(s)
Hola,

Cita:

Empezado por dec
(...) y eso es todo (...)

¿Pero qué es todo? Quiero decir que en el ejemplo anterior podrías toparte con alguna otra complicación, como, por decir una, que el usuario cerrar el formulario en que se le mostraba el mensaje "Un momento, por favor...".

He preparado otro sencillo ejemplo, que, esta vez, utiliza un "TPanel", en lugar de un "TForm", de tal manera que este no podrá ser cerrado por el usuario. También incluye alguna otra cosa, como una barra de progreso, propiamente.

Pero, piensa que si puedes crear estos elementos en tiempo de diseño (ya te decidas por un formulario, ya por un panel) el código de los ejemplos que te adjunto se reducirá drásticamente, puesto que no tendrás necesidad de crear los controles susomentados en tiempo de ejecución.

En fin. A ver si te resulta de alguna utilidad.

Antuan 21-08-2005 16:48:20

Gracias
 
He visto los dos ejemplos y el segundo es es que me va a vernir bien.
Intentare modificarlo para que el tiempo de espera no sea fijo sino que dependa del tiempo que tarde la funcion en desarrollarse.
He de presentar el mensaje en pantalla, ejecutar la funcion y cuando me presente el resultado borrar el mensaje.
Todo por programacion Asi que el segundo ejemplo lo veo muy bien.
Muchas gracias David.

dec 21-08-2005 22:31:21

Hola,

Cita:

Empezado por Antuan
Intentare modificarlo para que el tiempo de espera no sea fijo sino que dependa del tiempo que tarde la funcion en desarrollarse.

Por supuesto, Antuan, el "tiempo" era un mero ejemplo, pero tú podrás hacerlo de varias formas. Te iba a decir que incluso puedes llevar a cabo esta "larga tarea" en un hilo independiente de la aplicación, pero, tal vez con lo visto hasta ahora sea bastante para ambos ;)

Cita:

Empezado por Antuan
He de presentar el mensaje en pantalla, ejecutar la funcion y cuando me presente el resultado borrar el mensaje. Todo por programacion Asi que el segundo ejemplo lo veo muy bien.

Y, seguramente, si le das algunas vueltas, verás que puedes hacerlo de otras formas: ya he dicho otra vez que algo me cae bien especialmente de todo esto: la posibilidad de hacer la misma cosa, sí, pero, de distintas formas.

Antuan 23-08-2005 09:51:34

Intentar hacer una funcion
 
Hola con el segundo ejemplo he intentado hacer una funcion, pero mi nivel ya sabes que todavia nada de nada y no veo donde esta en primer contador del caption de panel. Pero aun viendolo creo que no sere capaz.
La idea de hacer una funcion en vez de un procedure sigue siendo la misma que el ejemplo que me has enviado con un procedure.
Sacar el mensaje, con el procedure del ejemplo que has puesto aqui o una funcion, mandar llamar a la funcion que te comente que tardaba un poquito en ejecutarse y una vez ejecutada y devolver el resultado. Borrar el menjsaje.
Si la mi funcion tarda tiempo en dar la respuesta el mensje permanecera en pantalla dependiendo del tiempo que tarde la funcion en cumplirse.
Bueno eso es todo pero que para mi es demasiado.
Crei ue Delphi tenia alguna funcion interna en la que presentase un mensaje de espera sin tener botones y que se cierre sola.


La franja horaria es GMT +2. Ahora son las 07:53:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi