[Lazarus-es] ¿Como hacer un Splash screen...?

Walter wmeson en gmail.com
Jue Dic 30 13:34:30 CET 2010


Hola Jose...
Nuevamente, gracias por tu ejemplo, lo implementé y funciona perfecto,
haciendo un mix con las demas sugerencias de los forista.Gracias a todos.
Me queda una sola duda, que es la siguiente :
Si bien con el ejemplo del splash se hace evidente, me pasa con todos los
ejecutables que voy creando.
Cada vez que le doy doble click al .exe y hasta que aparece el form
principal (en mi caso ahora seria el splash), hay un retardo casi del mismo
tiempo del que se muestra el splash.Reviso el sistema pero no veo nada que
se cargue en el inicio como para tener ese retardo...no medi el tiempo pero
me animaría a decir que es casi igual al timer que le puse al splash, 3000
ms.

¿Que podrá ser...?, o al menos, ¿que tendria que tener en cuenta para que se
acelere el arranque...?

Nuevamente, gracias....

El 29 de diciembre de 2010 18:06, José Mejuto <joshyfun en gmail.com> escribió:

> Hello Walter,
>
> Wednesday, December 29, 2010, 9:04:08 PM, you wrote:
>
> W> Si...también lo vi, pero hay algo que falta...yo tengo dos form, el
> splash y
> W> el principal, lo usé para mi ejemplo y me daba un error como que no
> existía
> W> el splash.Usé el .lpr de ese link...algo me está saliendo mal...
> W> El splash lo pongo en el autocreate, pero, el form principal, también
> hay
> W> que "autocrearlo" ?
>
> A ver, para hacer un splash, no necesitas el estilo splash, eso es
> simplemente para que salga por encima de todas las demás ventanas (si
> mal no recuerdo).
>
> Un buen modo de hacerlo es diseñas el splash y el formulario principal
> (o más si hay). Vas al "autocreate" y pones el splash de primero, y
> luego el principal de segundo y detrás el resto si hay.
> Yo luego al principal le añado un Timer con 500 ms. y con
> enabled:=false. Luego en el OnShow del principal hago:
>
> procedure MyForm.OnShow(...)
> begin
>  if Assigned(frmSplash) then SplashTimer.Enabled:=true;
> end;
>
> Y en el evento OnTimer del Timer pongo:
>
> procedure TTimer1.OnTimer(....)
> begin
>  FreeAndNil(frmSplash);
>  TTimer1.Enabled:=false;
> end;
>
> De este modo consigues que el splash salga al principio de todo, y que
> se quede 1/2 segundo visible después de que cargue el formulario
> principal, asegurando que el splash no aparezca/desaparezca muy rápido
> y de la sensación de que ha sucedido un error.
>
> En el .lpr puedes necesitar (especialmente si no es Windows) meter
> después de la linea que crea el splash, un "frmSplash.Show;
> Application.ProcessMessages;" para que se dibuje el splash por
> completo.
>
> La secuencia de eventos que suceden es:
>
> 1) Se crea el splash.
> 2) Se muestra el splash.
> 3) Se crea el principal.
> 4) Se muestra el principal.
> 5) Se ejecuta OnShow del principal, activando el timer.
> 6) 500 ms después de desactiva el timer, y se elimina el splash Y se
> pone la variable del splash a NIL de modo que aunque se vuelva a
> ejecutar el OnShow del principal el timer no se activará de nuevo.
>
> --
> Best regards,
>  José
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>



-- 
Walter Mesón
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20101230/48de3907/attachment-0002.html>


More information about the Lazarus-es mailing list