Escribo este "tutorial" para mis amigos que me preguntaban como hacer una ventana de bienvenida... asi que ahora solo los linkeo a esta página y listo! Tmb par ami que mi memoria es muy mala y tengo que abrir proyectos anteriores para fijarme "como era que se hacia tal cosa..." así que ahora ya lo tengo aca... Y tmb para todos aquellos que puedan necesitar esta información ya que no se consigue facilmente en internet, x lo menos yo no la conseguí de manera facil...
El Splash Screen, también llamada ventana de inicio, ventana de bienvenida, Intro, y otras varias formas mas... (pongo todas las formas que conozco de decirle para que aparezca en el búscador del foro, ustedes pongan los nombres que conocen tmb así le facilitamos a la gente que busque info sobre esto...) aunque no es muy util, mejora estéticamente el programa y es muy usado ultimamente;
Empecemos:Un Splash Screen sencillo y rápido es posible hacerlo creando un
formulario nuevo, luego le cambiamos el nombre a "SplashScreen" en el ObjetInspector (opcional), luego le ponemos la
opcion AutoSize en true para que no se la pueda dimensionar con el mouse, luego le damos a la
opcion BorderStyle y elegimos bsNone;
Hasta aquí ya tenemos el formulario pelado, si quieren compilen y fijense como les queda (van a ver un cuadrado solo)
Luego le
insertamos un TImage que se encuentra en la solapa Additional, una vez insertado el Image le damos a las siguientes opciones: en
Align elegimos alClient lo que alineará el TImage a todo el formulario, luego
en Strech elejimos true que dimensiona la foto automáticamente al tamaño del Image.
Hasta aquí ya va tomando forma nuestro SplashScreen, solo resta
elegir la imagen que se puede hacer seleccionando los 3 puntitos suspensivos de la Opción picture y elijiendo la imagen emdiante el Dialog que aparece o tmb mediante código
SplashScreen->Image1->Picture->LoadFromFile("Direcion fisica del archivo");
(obviamente todas las opciones del objet inspector se pueden hacer mediante código tmb...)
Luego solo nos resta
abrir el archivo principal Project1.cpp o el que sea de acuerdo al nombre del programa que le dieron, x ej: miprograma.cpp[/size] que contiene las invocaciones de las funciones de mas alto nivel de nuestro programa...
Y cambiar el código indicado en las respectivas partes por el mismo código que dice pero con el nombre que le dieron ustedes (si es que no le pusieron SplashScreen como yo) :
IMPORTANTE:
Mi formaulario se llama SplashScreen y mi header (.h) se llama Unit4.h
//---------------------------------------------------------------------------
#include "Unit4.h" //ESTA LINEA LA PUSE YO |Incluir el .h correspondiente al form Splash Screen
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
USEFORM("Unit3.cpp", Form3);
USEFORM("Unit4.cpp", SplashScreen);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try{//ESTA LINEA LA PUSE YO | Creen un try
try
{
Application->Initialize();
SplashScreen = new TSplashScreen(NULL);/*ESTA LINEA LA PUSE YO | cambiar SplashScreen x el nombre que le hayan puesto ustedes*/
SplashScreen->Show();//ESTA LINEA LA PUSE YO
SplashScreen->Repaint();//ESTA LINEA LA PUSE YO |
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm3), &Form3);
Application->CreateForm(__classid(TSplashScreen), &SplashScreen);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
}//ESTA LINEA LA PUSE YO | cierren aqui el try luego de los catch
__finally{ //ESTA LINEA LA PUSE YO
if(SplashScreen) //ESTA LINEA LA PUSE YO
delete SplashScreen;//ESTA LINEA LA PUSE YO
} //ESTA LINEA LA PUSE YO
return 0;
}
//---------------------------------------------------------------------------
Una vez alterado el código de este archivo solo resta
ir al evento OnShow del formulario que aparece primero, en mi caso Form1 y poner el siguiente código:
#include "Unit4.h"//recuerden incluir el header!!!
void __fastcall TForm1::FormShow(TObject *Sender)
{
if(SplashScreen){
::Sleep(4000); //demora 4 segundos la aprición del Form1
delete SplashScreen;
SplashScreen = NULL;
} //end if
}
Solo resta compilar y fijarse!!!
Pero con esto ya deberían tener un SplashScreen funcionando x 4 segundos
Spero les haya servido! Y si se les ocurren mejoras posteanlas!
Tanto trabajo merece
jajaja Me fuí! Salute!