• Viernes 8 de Noviembre de 2024, 16:44

Autor Tema:  Crear Un Splash Screen  (Leído 5397 veces)

el_shanky

  • Miembro MUY activo
  • ***
  • Mensajes: 177
    • Ver Perfil
Crear Un Splash Screen
« en: Viernes 4 de Abril de 2008, 11:44 »
0
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
Código: Text
  1.  
  2. SplashScreen->Image1->Picture->LoadFromFile("Direcion fisica del archivo");
  3.  
  4.  
(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

Código: Text
  1.  
  2.  
  3. //---------------------------------------------------------------------------
  4. #include "Unit4.h" //ESTA LINEA LA PUSE YO |Incluir el .h correspondiente al form Splash Screen
  5.  
  6. #include <vcl.h>
  7. #pragma hdrstop
  8. //---------------------------------------------------------------------------
  9. USEFORM("Unit1.cpp", Form1);
  10. USEFORM("Unit2.cpp", Form2);
  11. USEFORM("Unit3.cpp", Form3);
  12. USEFORM("Unit4.cpp", SplashScreen);
  13. //---------------------------------------------------------------------------
  14. WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  15. {
  16. try{//ESTA LINEA LA PUSE YO | Creen un try
  17.         try
  18.         {
  19.                  Application->Initialize();
  20.         SplashScreen = new TSplashScreen(NULL);/*ESTA LINEA LA PUSE YO | cambiar SplashScreen x el nombre que le hayan puesto ustedes*/
  21.         SplashScreen->Show();//ESTA LINEA LA PUSE YO
  22.         SplashScreen->Repaint();//ESTA LINEA LA PUSE YO |
  23.                  Application->CreateForm(__classid(TForm1), &Form1);
  24.                  Application->CreateForm(__classid(TForm2), &Form2);
  25.                  Application->CreateForm(__classid(TForm3), &Form3);
  26.                  Application->CreateForm(__classid(TSplashScreen), &SplashScreen);
  27.                  Application->Run();
  28.         }
  29.         catch (Exception &exception)
  30.         {
  31.                  Application->ShowException(&exception);
  32.         }
  33.         catch (...)
  34.         {
  35.                  try
  36.                  {
  37.                          throw Exception("");
  38.                  }
  39.                  catch (Exception &exception)
  40.                  {
  41.                          Application->ShowException(&exception);
  42.                  }
  43.         }
  44.        
  45.     }//ESTA LINEA LA PUSE YO | cierren aqui el try luego de los catch
  46.  
  47.     __finally{                             //ESTA LINEA LA PUSE YO
  48.                 if(SplashScreen)       //ESTA LINEA LA PUSE YO
  49.                 delete SplashScreen;//ESTA LINEA LA PUSE YO
  50.              }                                //ESTA LINEA LA PUSE YO
  51.  
  52.         return 0;
  53. }
  54. //---------------------------------------------------------------------------
  55.  
  56.  
  57.  
  58.  

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:

Código: Text
  1.  
  2.  
  3. #include "Unit4.h"//recuerden incluir el header!!!
  4.  
  5. void __fastcall TForm1::FormShow(TObject *Sender)
  6. {
  7.  
  8. if(SplashScreen){
  9.   ::Sleep(4000); //demora 4 segundos la aprición del Form1
  10.   delete SplashScreen;
  11.   SplashScreen = NULL;
  12.   } //end if
  13.  
  14. }
  15.  
  16.  
  17.  

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  :beer:  jajaja Me fuí! Salute!
"La programación hoy en día es una carrera entre los ingenieros de software intentado construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De lejos, el Universo está ganando." - Rich Cook



http://www.maxcode.com.ar

http://www.shanky.com.ar

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Crear Un Splash Screen
« Respuesta #1 en: Viernes 4 de Abril de 2008, 11:51 »
0
Por favor, publicalo en: Articulos que es donde deben estar los tutoriales.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

suxito

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Crear Un Splash Screen
« Respuesta #2 en: Viernes 8 de Agosto de 2008, 07:47 »
0
buenas amigo saludos desde venezuela... he estado probando tu codigo de pies a cabeza pero consigo uno que otro error al momento de compilar, soy studiante de ingenieria informatica ejecutando trabajos sencillos para ganar en cuanto a curriculum y experiencia, esto del splash screen me llamo mucho la atencion al darle un aspecto estetico muy bueno al trabajo realizado, pero esta llevandome mas trabajo de la cuenta y por ello stoy aki.

posees algun ejemplo q pueda descargar para observar en que me ekivoco?  me tira un error de link error, unresolved external, haciendo cada cosa q colocas alli. Gracias hermano