I. Présentation▲
Toutes les applications possèdent un système de favoris de fichiers dans leur menu. Ce type de système est beaucoup utilisé. Il consiste à enregistrer les derniers fichiers ouverts et de les mettre par ordre dans un menu. Cela permet donc de restituer un fichier sans être obligé d'aller le rechercher à nouveau sur le disque dur. Notre programme en Delphi pourra gérer quatre favoris. Vous pourrez changer le nombre de favoris grâce à une constante.
Le programme d'exemple aura pour but de lire des bitmaps dans une image.
Ce programme est divisé en plusieurs étapes.
- Ouverture du fichier.
- Enregistrement du fichier comme favori.
- Adapter.
- Organisation dans le menu.
- Appel des procédures (lors de la création ou la destruction de la form).
- Lecture des bitmaps.
Pour l'enregistrement ou la restitution des favoris, nous utiliserons un fichier ini. L'utilisation du fichier ini permet une grande rapidité.
Pour commencer, insérez dans la form, un composant TMainMenu, TImage et TOpenDialog.
Mettez la disposition de votre menu comme l'image ci-dessous.
Ensuite, mettez la propriété « AutoSize » du composant TImage à True. Cela permet le redimensionnement de l'image automatiquement.
Mettez comme filtre « Fichier BMP|*.bmp » du composant TOpenDialog.
Changez la propriété « AutoHotKeys » du composant TMainMenu en le mettant à « maManuel ».
Insérez l'unité « IniFiles » dans la partie uses.
Uses
IniFiles;
private
{ Déclarations privées }
Favlist: TStringList;
Favchange: Boolean
;
procedure
Ouvrirfav;
procedure
Organiserfav;
procedure
Adaptefav(const
Filename: String
);
procedure
Ecrirefav;
procedure
Ouvrir(const
Filename: String
);
end
;
Passons maintenant aux différentes étapes.
L'enregistrement se fait par un fichier ini que l'on appellera « Monfichier ». Ce fichier sera par défaut dans le dossier Windows. On travaillera avec un TStringlist qui permettra d'effectuer des opérations.
II. Récupérer les chemins de fichier à partir du fichier ini▲
Cette procédure permet de récupérer les différents chemins de fichier dans le stringlist.
procedure
TForm1.Ouvrirfav;
Var
FichierIni: TIniFile;
i: Integer
;
St: String
;
begin
//Crée un stringlist
FavList:=TStringList.Create;
//Crée le fichier ini s'il n'existe pas
FichierIni:=TIniFile.Create('Monfichier.ini'
);
for
i:=1
to
Maxfav do
//Pour chaque favoris ...
begin
//Lit les différents chemins de fichier
St:=FichierIni.ReadString('Favoris'
,Concat('fav'
,IntToStr(i)),''
);
//On ajoute les différents chemins de fichier stringlist
FavList.Add(St);
end
;
//S'il y a des blancs, on les supprime dans le stringlist
while
FavList.IndexOf(''
) <> -1
do
Favlist.Delete(FavList.IndexOf(''
));
end
;
III. Enregistrer les chemins des fichiers dans un fichier ini▲
Pour commencer, on vérifie s'il y a eu un changement dans le menu puis on enregistre dans l'ordre, les chemins des fichiers.
procedure
TForm1.Ecrirefav;
Var
FichierIni: TIniFile;
i: Integer
;
begin
if
FavChange then
//S'il y a eu un changement dans le menu alors...
begin
//Crée le fichier ini s’il n'existe pas
FichierIni:=TIniFile.Create('Monfichier.ini'
);
//Initialise la variable "i" à 0
i:=0
;
//Pour chaque item "fav" du menu...
while
(i < (Favlist.Count)) and
(i < Maxfav) do
begin
//Enregistre les chemins des fichiers des items du menu
FichierIni.WriteString('Favoris'
,concat('fav'
,IntToStr(i+1
)),Favlist.Strings[i]);
//Incrémente la variable i
Inc(i);
end
;
end
;
end
;
IV. Manipuler le stringlist▲
Cette procédure permet d'effectuer certaines opérations sur le stringlist. Soit on ajoute le nouveau chemin de fichier et supprime le dernier, soit on change la position du chemin de fichier s'il n'y a pas de nouveau chemin de fichier :
procedure
TForm1.Adaptefav(const
Filename: String
);
begin
//Indique qu'il y a eu un changement dans le menu
FavChange:=True
;
//Si le nouveau chemin de fichier n'a pas été trouvé alors...
if
FavList.IndexOf(Filename)=-1
then
begin
//On insère le nouveau chemin de fichier à la première place
FavList.Insert(0
,Filename);
//Si le nombre de strings est supérieur au nombre maximum de favoris dans le menu
if
FavList.Count > MAXfav then
//Supprime le dernier chemin de fichier
FavList.Delete(MAXfav);
end
else
//Sinon...
//Change la position d'un chemin de fichier déjà existant dans le stringlist en la mettant en premier
FavList.Move(FavList.IndexOf(Filename),0
);
//Appelle la procédure "Organiserfav"
Organiserfav;
end
;
V. Affichage dans le menu▲
Cela consiste à afficher dans le menu le texte des chemins de fichier à partir du stringlist et de mettre ou non la barre du menu (séparant les favoris et l'option Quitter) si nécessaire.
procedure
TForm1.Organiserfav;
Var
MenuItem: TMenuItem;
i: Integer
;
begin
//Initialise la variable "i" à 0
i:=0
;
//Pour chaque item "fav" du menu...
while
(i < (Favlist.Count)) and
(i < Maxfav) do
begin
//Recherche dans les différents items du menu portant le nom de fav(fav1,fav2,...)
MenuItem:=TMenuItem(FindComponent(concat('fav'
,IntToStr(i+1
))));
//Affiche l'item du menu
MenuItem.Visible:=True
;
//Enregistre le texte de l'item dans le stringlist
MenuItem.Caption:=FavList.Strings[i];
//Incrémente la variable i
Inc(i);
end
;
//S'il y a alors on affiche une barre dans le menu
favbarre.Visible:=fav1.Visible;
end
;
VI. Appel des procédures▲
Lorsque la form va se créer ou se détruire, il faut alors appeler certaines procédures :
procedure
TForm1.FormCreate(Sender: TObject);
begin
Ouvrirfav; //Appelle la procédure "Ouvrirfav"
Organiserfav; //Appelle la procédure "Organiserfav"
end
;
procedure
TForm1.FormDestroy(Sender: TObject);
begin
Ecrirefav; //Appelle la procédure "Ecrirefav"
Favlist.Free; //Détruit l'objet
end
;
VII. Lecture d'une image bitmap▲
Voici le reste du programme qui permet de lire les bitmaps soit en cliquant sur l'option « Ouvrir », soit en cliquant sur les favoris :
procedure
TForm1.Ouvrir(const
Filename: String
);
begin
//Ouvre le fichier dans le composant TImage
Image1.Picture.LoadFromFile(FileName);
//Appelle la procédure "Adaptefav" avec comme paramètre "OpenDialog1.FileName"
Adaptefav(FileName);
end
;
procedure
TForm1.Ouvrir1Click(Sender: TObject);
begin
//Lance la fenêtre d'ouverture de fichier et si l'utilisateur clique sur le bouton "Ouvrir"
if
OpenDialog1.Execute then
//Appelle la procédure "Ouvrir" avec comme paramètre "OpenDialog1.FileName"
Ouvrir(OpenDialog1.FileName);
end
;
procedure
TForm1.fav1Click(Sender: TObject);
begin
//Appelle la procédure "Ouvrir" avec le paramètre "fav1.Caption"
Ouvrir(fav1.Caption);
//"fav1.Caption" correspond au chemin du fichier
end
;
procedure
TForm1.fav2Click(Sender: TObject);
begin
Ouvrir(fav2.Caption);
end
;
procedure
TForm1.fav3Click(Sender: TObject);
begin
Ouvrir(fav3.Caption);
end
;
procedure
TForm1.fav4Click(Sender: TObject);
begin
Ouvrir(fav4.Caption);
end
;
Télécharger le programme [8 Ko]