Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Ecran de veille

Présentation

Un écran de veille, également appelé économiseur d'écran est un programme se lançant lorsqu'une action n'a pas été faite depuis un certain moment. Il existe de nombreux types d'écran de veille. Cela peut aller du simple écran noir à l'utilisation d'OpenGL.

Voici à ce que ressemblera l'écran de veille que nous allons réaliser.



Le texte "Delphipage" se déplace aléatoirement sur l'écran.
La couleur et le texte seront paramètrables.


Transformer un exécutable en écran de veille

Pour réaliser un écran de veille, il suffit de créer un exécutable au format SCR. En effet, un écran de veille est en réalité un simple fichier exécutable.
Pour transformer votre EXE en SCR, cliquez dans le menu "Projet" de Delphi puis sur "Options".



Ensuite, choisissez l'onglet "Application" et tapez ".scr" dans la partie "Extension du fichier de destination :". Cliquez sur le bouton "OK" pour valider.
Maintenant, lorsque vous exécuterez votre programme, le fichier crée ne sera plus d'extension EXE mais SCR.


Création des paramètres

Le programme utilisera deux fiches : Form1 et Form2.
"Form1" constitue l'écran de veille et "Form2" contiendra les paramètres de l'écran de veille.

Créez une nouvelle application et ajoutez une deuxième fiche.
Ajoutez deux composants TLabel, un TEdit et un TComboBox.
Disposez ces composants comme ceci.



Mettez la propriété "BorderStyle" de la form2 à "bsSingle" et la propriété "Position" à "poScreenCenter".
"bsSingle" permet de ne pas pouvoir redimensionner la fenêtre.
"poScreenCenter" permet d'afficher la fenêtre au centre de l'écran.

Tapez "OK" dans la propriété "Caption" du composant Button1.
Tapez "Annuler" dans la propriété "Caption du composant Button2.
Tapez "Delphipage" dans la propriété "Text" du composant Edit1.
Tapez "Rouge" dans la propriété "Text" du composant ComboBox1.
Insérez aussi ces lignes dans l'éditeur de liste de chaines du composant ComboBox1.
Pour cela, cliquez deux fois sur la propriété "Items" de ce composant.

Blanc
Bleu
Jaune
Noir
Rouge
Vert

Pour l'enregistrement des paramètres, on utilisera un fichier ini que l'on nommera "Delphipage.ini". Ceux-ci seront restituer au lancement du programme. On utilisera alors l'événement "OnCreate" de la Form2.

Pour commencer, on crée le fichier ini s'il n'existe pas. Puis, on enregistre les différents paramètres dans le fichier ini.

Uses IniFiles;

procedure
TForm2.FormCreate(Sender: TObject);
Var FichierIni : TIniFile;
begin
//Lecture des paramètres dans le fichier ini
FichierIni:=TIniFile.Create('Delphipage.ini');
Edit1.Text:=FichierIni.ReadString('Parametres','Texte','Delphipage');
ComboBox1.Text:=FichierIni.ReadString('Parametres','Couleur','Rouge');
FichierIni.Free;
end;


Lorsque l'utilisateur cliquera sur le bouton "OK" (Button1), il faut enregistrer les paramètres dans le fichier ini puis fermer la fiche. Par contre, si l'utilisateur cliquera sur le bouton "Annuler" (Button2), les paramètres ne seront pas enregistrés, on se contentera alors de fermer la fiche.

procedure TForm2.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
begin
//Enregistre les paramètres dans le fichier ini
FichierIni:=TIniFile.Create('Delphipage.ini');
FichierIni.WriteString('Parametres','Texte',Edit1.Text);
FichierIni.WriteString('Parametres','Couleur',ComboBox1.Text);
FichierIni.Free;
Close; //Ferme la form
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
end;



Création de l'écran de veille

Ajoutez un composant TLabel à la Form1. Insérez la variable "Point" de type "TPoint".
Dans l'événement "OnCreate" de la fiche, il faut lire les paramètres de l'écran de veille d'après le fichier ini.

Uses IniFiles;

public
{ Déclarations publiques }
Point :TPoint;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var FichierIni : TIniFile;
St : string;
begin
//Lecture des paramètres dans le fichier ini
FichierIni:=TIniFile.Create('Delphipage.ini');
Label1.Caption:=FichierIni.ReadString('Parametres','Texte','Delphipage');
St:=FichierIni.ReadString('Parametres','Couleur','Rouge');
if St='Blanc' then Label1.Font.Color:=clWhite;
if St='Bleu' then Label1.Font.Color:=clBlue;
if St='Jaune' then Label1.Font.Color:=clYellow;
if St='Noir' then Label1.Font.Color:=clBlack;
if St='Rouge' then Label1.Font.Color:=clRed;
if St='Vert' then Label1.Font.Color:=clLime;
FichierIni.Free;
GetCursorPos(Point); //Recupere les coordonnées X et Y de la souris
ShowCursor(False); //Fait disparaitre le curseur de souris
end;


Les coordonnées du curseur nous servirons dans l'événement OnMouseMove.

Pour afficher "Delphipage" aléatoirement, on utilisera la fonction "Random" et les propriétés "Top" et "Left" du label1.

procedure TForm1.Timer1Timer(Sender: TObject);
Var i1,i2 : Integer;
begin
Randomize; //Initailise la fonction Random
i1:=Random(Screen.Width-Label1.Width); //0 <= X < Screen.Width-Label1.Width
i2:=Random(Screen.Height-Label1.Height); //0 <= X < Screen.Height-Label1.Height
Label1.Left:=i1; //Positionne le label selon i1 et i2
Label1.Top:=i2;
end;



Gérer la fin d'un écran de veille

Un écran de veille se termine lorsqu'une touche est préssé (OnKeyPress), si un bouton de la souris est appuyé (OnMouseDown) ou si la souris a bougé (OnMouseMove).
Avant de quitter l'application, il faut afficher le curseur et supprimer la fenêtre (permet d'enelever le bouton de la barre des tâches).

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowCursor(True); //Affiche le curseur de souris
DestroyWindowHandle; //Supprime la fenêtre
Application.Terminate; //Termine l'application
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ShowCursor(True);
DestroyWindowHandle;
Application.Terminate;
end;


On ne peut pas mettre exactement le même code pour l'événement "OnMouseMove".
En effet, lorsque l'on va faire un aperçu de l'écran de veille, en relachant le bouton "Aperçu", la souris va bouger.
C'est ici que intervient la variable "Point". Si la souris bouge suffisamment alors l'application se termine.

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
//Si la souris bouge suffisamment alors on quitte
//En X
if (X<Point.X-10) or (X>Point.X+10) then
begin
ShowCursor(True);
DestroyWindowHandle;
Application.Terminate;
end;
//En Y
if (Y<Point.Y-10) or (Y>Point.Y+10) then
begin
ShowCursor(True);
DestroyWindowHandle;
Application.Terminate;
end;
end;



Traiter les messages envoyés par Windows

Lorsque l'utilisateur va cliquer sur les boutons "Paramètres..." et "Aperçu" de la fenêtre "Propriétés de Affichage", Windows va envoyer des messages.



On va se servir de ces messages pour lancer soit les paramètres de l'écran de veille ou soit l'écran de veille.

Mode
 Message
Aperçu
/s
Mot de passe
/a
Paramètres
/c
Prévisualisation
/p

A noté également que sur Windows NT, la gestion de la vérfication du mot de passe est effectué automatiquement. Par contre sous Windows 9.x, c'est au programme de gérer cela.

program Project1;

uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$E .scr}

{$R *.RES}

begin
if Copy(ParamStr(1),2,1)='c' then
begin
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.Run;
end;
if Copy(ParamStr(1),2,1)='s' then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.


"ParamStr(1)" donne le premier argument.
La fonction "Copy" permet de récupérér que le c dans ParamStr(1).


Tester le programme

Pour tester le programme, copier le fichier SCR dans le chemin "c:\Windows\".
Ensuite, allez dans les propriété d'affichage et choisissez l'onglet "Ecran de veille".
Sélectionnez notre écran de veille. Vous pouvez changer les paramètres en cliquant sur le bouton "Paramètres" et faire un aperçu de l'écran de veille en cliqaunt sur le bouton "Aperçu".

Ecran de veille    [ 12-08-2002 ]
 Exemple d'écran de veille en Delphi.
TÚlÚcharger :  [11 Ko] [Télécharger ecranveille.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/
 

Tous droits réservés - Contacts
Haut de la page