![]() |
Cerrar Splash Imposible ...
No Consigo cerrar un Splash desde que puse el codigo para minimizar la pantalla principal como un icono en la barra de tareas al lado del reloj (trayicon), el Splash pasa de las lineas de cierre, he probado con un componente echo y con el truco de trucomania con iguales resultados:
splash.close; splash.free; splash:=nil; A que puede ser debido que el Splash siga visualizandose aunque yo lo cierre cuando se muestra el form principal... Gracias. |
¿Cómo lo estas mostrando?...
|
He utilizado el truco #32 de trucomania y me funciona a la perfección. Te recomiendo que hagas una revisión del código, te dejo el link para que lo verifiques http://www.q3.nu/trucomania/ftesp.html.
|
A ver utilize el truco de trucomania no para mostrar el splash sino para minimizar la ventana al lado del reloj (trayicon).
A ver tengo un formulario llamado Splash y ahi tengo una barra progressbar. En el principal el primero que se crea tengo:
y mas abajo tengo: Splash.Close; Splash.Free; Splash:=nil; Y Luego el Application.Run que era obvio por eso en una primera instancia no lo puse. |
Pues a mí me falta el Application.Run
saludos |
Es obvio que debe estar.... pero ¿donde? jejeje, si lo tenías antes del Splash.Free, era fácil la respuesta :D
En principio, sustituyo el Application.ProcessMessages por un Splash.Update. Como la aplicación no está corriendo al completo, no me queda claro si va a procesar los mensajes bien. Las lineas: Splash.Close; Splash.Free; Splash:=nil las sustituyo por FreeAndNil(Splash), es exactamente lo mismo. Prueba y me cuentas por fa. Saludos |
A ver lepe he probado lo que me has dicho, con iguales resultados, no se cierra, lo que pasa es que se queda detras y no me habia fijado hasta ahora yo creia que era debido al trayicon que habia añadido pero al mirar codigo antiguo me he dado cuenta que nunca lo cerro hasta que se cierra totalmente la aplicación. Simplemente al ponerme delante la form principal pues quedaba detras y no lo veia...
Bueno alguna sugerencia a que es raro que no lo cierre. Saludos. |
Solucion
En tu form principal, declara una variable pública llamada SplashScreenHandle:
var SplashScreenHandle:integer; En el fuente del projecto, añade una sección var como la siguiente: VAR SplashScreen:TSplashScreen; Dentro de la sección begin-end, añade el siguiente código al principio: Begin {Mostramos la Splash Screen} SplashScreen:=TSplashScreen.Create(Application); Splashscreen.show; SplashScreen.update; {Creamos la form principal} Application.createform(MainForm,MainFormUnit); MainFormUnit.SplashScreenHandle:=SplashScreen.handle; {Aqui el resto de tu projecto...} end. Y al Mostrar el Form: SendMessage(SplashScreenHandle,WM_CLOSE,0,0); Sacado del Rinconcito de Delphi. |
una sugerencia.
este es el codigo de mi proyecto donde uso una splashscreen, a mi me funciona bien. lo aprendi de Trucomania.
Código:
program CdAPProy;Código:
procedure TForm2.FormCreate(Sender: TObject); |
A mi me pasó algo parecido:
begin Application.Initialize; Application.Title := 'Project1'; SplashForm := TSplashForm.Create(Application); SplashForm.Show; SplashForm.Update; Application.CreateForm(TForm1, Form1); . . . Application.CreateForm(TForm3, Form3); Application.CreateForm(TSplashForm, SplashForm); SplashForm.Hide; SplashForm.Free; Application.Run; end. El problema era la linea roja, por que si lo estoy creando, ya no necesita ser creado de nuevo. |
| La franja horaria es GMT +2. Ahora son las 00:36:31. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi