[Delphi] Splash screen, cos’è e come crearlo.

L’immagine visualizzata nel momento in cui viene avviato un software e prima di caricare la finestra principale dello stesso, prende il nome di splash screen, generalmente in questa immagine vengono riportate le seguenti informazioni:

  1. logo, nome e versione dell’applicazione;
  2. autore;
  3. indirizzo e-mail ed eventuale sito internet dell’autore;
  4. copyright.

In Delphi è possibile creare uno splash screen seguendo i passi successivi:

  1. aprire il progetto nel quale inserire lo splash screen;
  2. aggiungere una nuova form al progetto;
  3. selezionare la form, cambiare il nome in frmSplashScreen ed effettuare un salva con nome in UnitSplashScreen;
  4. settare borderStyle a bsNone e position a poScreenCenter;
  5. inserire sullo splash screen i componenti desiderati (labels, button, ecc.) adattandole alle proprie esigenze;


Inserire sullo splash screen le due procedure seguenti:
procedure SetTransparentForm(AHandle : THandle; AValue : byte = 0);
var
Info: TOSVersionInfo;
SetAttributiFinestra: TAttributiFinestra;
begin
 // Verifico che tipo di windows uso
  Info.dwOSVersionInfoSize := SizeOf(Info);
  GetVersionEx(Info);
 if (Info.dwPlatformId = VER_PLATFORM_WIN32_NT) and
 (Info.dwMajorVersion >= 5) then
  begin
  SetAttributiFinestra := GetProcAddress(GetModulehandle(user32), 'SetLayeredWindowAttributes');
  if Assigned(SetAttributiFinestra) then
  begin
  SetWindowLong(AHandle, GWL_EXSTYLE, GetWindowLong(AHandle, GWL_EXSTYLE) or WS_EX_LAYERED);
  // Crea la form trasparente
  SetAttributiFinestra(AHandle, 0, AValue, LWA_ALPHA);
  end;
  end;
end;

procedure TfrmSplashScreen.MakeSplash;
var i:integer;
begin
  Show;
  Update;
  for i:=0 to 255 do
  begin
  SetTransparentForm(Handle, i);
  Application.ProcessMessages;
  end;
end;

A questo punto, accedere al file di progetto in modalità code ed inserire:

program MioProgetto;uses  Forms,
  Windows,
  UnitMain in 'UnitMain.pas' {frmMain},  UnitMain in 'UnitSplashScreen.pas' {frmSplashScreen},

{$R *.res}

var

  splash:TfrmSplashScreen;

begin

    splash:=TfrmSplashScreen.Create(Application);
    try
      splash.MakeSplash;
      Application.Initialize;
      Application.Title:='Nome dell'applicazione';
      Application.CreateForm(TfrmMain, frmMain);

     splash.Close;
    finally
      frmSplashScreen.Free;
    end;
  Application.Run;
end.

Ritornare nella form dello splash screen ed inserire un oggetto timer, cliccare su ed assegnare un valore alla voce interval, esempio 5000 (equivalente a 5 secondi), successivamente fare doppio click sull'oggetto TTimer ed aggiungere il codice in grassetto:
procedure TfrmSplashScreen.Timer1Timer(Sender: TObject);
begin
  Close;
  Release;

end;

Avviare l'applicazione e lo splash screen è servito.

Lascia un commento

Occorre aver fatto il login per inviare un commento