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:
- logo, nome e versione dell’applicazione;
- autore;
- indirizzo e-mail ed eventuale sito internet dell’autore;
- copyright.
In Delphi è possibile creare uno splash screen seguendo i passi successivi:
- aprire il progetto nel quale inserire lo splash screen;
- aggiungere una nuova form al progetto;
- selezionare la form, cambiare il nome in frmSplashScreen ed effettuare un salva con nome in UnitSplashScreen;
- settare borderStyle a bsNone e position a poScreenCenter;
- 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.
