|
Tutoriaux
- Ecran de veille |
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.
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).
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] [
ecranveille.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|