Ajouter un SplashScreen à votre application



Les SplashScreen sont importants pour vos applications. Ils fournissent des fonctions d'attente pendant la création de l'apparence et de l'interface visuelle de votre application. Ils communiquent avec les utilisateurs de votre application.

Utiliser un Ecran de Bienvenue à votre application peut servir à la distinguer des autres. Il existe différentes sortes d'Ecrans de Bienvenue. Les plus courants sont ceux que vous voyez au démarrage d'une application, comme celui de Delphi par exemple. Ils affichent généralement le nom de l'application, l'auteur, la version, le copyright et l'image ou l'icône qui identifient l'application. Cependant, quelques applications utilisent les Ecrans de Bienvenue pour afficher et avertir l'utilisateur de la progression d'un processus gourmand en temps machine. Un bon exemple serait un écran de bienvenue qui communiquerait le pourcentage d'avancement d'une tâche sur une base de donnée, ou sur des tâches numériques. L'Ecran de Progression offre à l'utilisateur la possibilité d'être informé et d'estimer la durée du calcul, plutôt que d'attendre devant le moniteur sans la moindre idée du temps restant.

Mise en place

Tout d'abord, creez un nouveau projet (Menu Fichier\Nouveau\Application), et ajoutez-y une nouvelle fiche (Menu Fichier\Nouveau\Fiche). Un écran de Bienvenue est une fiche comme les autres.

Mettez les propriétés de la fiche comme indiqué ci-dessus:

Propriétés

BorderStylebsNone
NameSplashScreen
PositionpoScreenCenter



Personnalisez votre fiche en y ajoutant différents composants comme des TLabel, TPanel, TImage, TShape, et TBevel, pour faire un joli écran de bienvenue ;-)

Maintenant, nous allons retirer la nouvelle fiche de la liste des fiches crées normalement par le projet. Pour cela, il faut aller dans le menu Projet\Options, et retirer SplashScreen de la liste des Fiches créées automatiquement.

A la place, nous allons creer cette fiche dynamiquement avant le chargement du projet. Pour cela, allez dans le menu Projet\Voir le source (ou Voir\Source du Projet sous Delphi 1, 2 & 3). Ajoutez le code suivant après le mot clé begin mais avant la section qui touche à Application :

Code à ajouter au source du projet

SplashScreen := TSplashScreen.Create(Application);
SplashScreen.Show;
SplashScreen.Refresh;



Ce morceau de code va forcer la création et l'affichage du splashscreen avant que le reste du projet ne soit chargé... Maintenant, il faut aussi penser à fermer le splashscreen lors de l'affichage de la fiche principale du projet. Pour cela, il faut tout d'abord ajouter l'unité contenant le splashscreen à la clause uses de l'unité contenant la fiche principale:

Ajout de l'unité à la clause uses

unit Unit1; 

interface

uses
  (* Dans cet exemple, TsplashScreen a été déclaré 
     dans l'unité Unit2. *)
  Windows, Messages, SysUtils, Classes, Graphics, Controls, 
  Forms, Dialogs, ExtCtrls, StdCtrls, Unit2;



Puis demandez la libération du SplashScreen à l'affichage de la fiche principale : Editez l'événement OnShow de la fiche principale de votre application et mettez-y le code suivant :

Libération du SplashScreen

// On vérifie qu'on ne le libère pas plusieurs fois
if (Assigned(SplashScreen)) then
  begin
    SplashScreen.Release;
    SplashScreen := nil;
  end;



Si vous Executez le projet maintenant, vous appercevrez très brièvement l'écran de bienvenue, voire pas du tout si votre ordinateur est rapide. Pour l'afficher un peu plus longtemps, ajoutez le code suivant à l'évennement OnCreate de la fiche principale:

Code à ajouter à l'évennement OnCreate

// On attend 1000 millisecondes, soit une seconde
Sleep(1000);




Ecran de progression

L'implémentation d'un Ecran de progression n'est pas très différente de cet exemple. Le concept est que vous créez et affichez l'écran de progression avant le calcul et vous le détruisez quand le calcul a été effectué. La différence est que vous pouvez avoir envie d'implémenter un système de communication entre l'écran et le processus pour afficher la progression.

Pour transformer votre Ecran de Bienvenue en Ecran de Progression, ajoutez simplement un composant TProgressBar à votre SplashScreen (appelé ici ProgressBar1) et remplacez le code de l'évennement OnCreate de la fiche principale par le suivant:

Code du OnCreate de la fiche principale

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  // On active le double buffering pour éviter le scintillement
  SplashScreen.ProgressBar1.DoubleBuffered := true;
  for i := 0 to 100 do
    begin
      // On attend 10 millisecondes
      Sleep(10);
      // On affiche la progression
      SplashScreen.ProgressBar1.Position := i;
      // On rafraichit l'affichage
      SplashScreen.ProgressBar1.Refresh;
    end;
end;



Ainsi, lors du chargement de la fiche, l'application incrémentera la progression sur l'écran de chargement, et s'affichera une fois le chargement fini.


3 requête(s) SQL executée(s) en 0.452 Secs - Temps total de génération de la page : 0.459 Secs