Système de favoris de fichiers dans un menu

Cet artcile a pour but la réalisation d'un système de favoris de fichiers dans un menu.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

1. 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 obliger d'aller le rechercher à nouveau sur le disque dure. 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 favoris.
- Adapter.
- Organisation dans le menu.
- Appel des procedures(lors de la création ou la destruction de la form).
- Lecture des bitmaps.
Pour l'enregistrement ou la restitutions 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.

Image non disponible

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 parties uses.

 
Sélectionnez

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 au 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.

2. Récupèrer les chemins de fichiers à partir du fichier ini

Cette procédure permet de récupèrer les différents chemins de fichiers dans le stringlist.

 
Sélectionnez

procedure TForm1.Ouvrirfav;
Var FichierIni: TIniFile;
i: Integer;
St: String;
begin
  //Crée un stringlist
  FavList:=TStringList.Create;
  //Crée le fichier ini si il n'existe pas
  FichierIni:=TIniFile.Create('Monfichier.ini');
  for i:=1 to Maxfav do //Pour chaque favoris ...
  begin
    //Lit les différents chemin de fichier
    St:=FichierIni.ReadString('Favoris',Concat('fav',IntToStr(i)),'');
    //On ajoute les différentes chemin de fichier stringlist
    FavList.Add(St);
  end;
  //Si il y a des blancs, on les supprime dans le stringlist
  while FavList.IndexOf('') <> -1 do
    Favlist.Delete(FavList.IndexOf(''));
end;

3. 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.

 
Sélectionnez

procedure TForm1.Ecrirefav;
Var FichierIni: TIniFile;
    i: Integer;
begin
  if FavChange then //Si il y a eu un changement dans le menu alors...
  begin
    //Crée le fichier ini si 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 chemin 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;

4. 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.

 
Sélectionnez

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 string est supérieur au nombre de favoris maximum 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);
  //Appel la procedure "Organiserfav"
  Organiserfav;
end;

5. Affichage dans le menu

Cela consiste à afficher dans le menu le texte des chemins de fichiers à partir du stringlist et de mettre ou non la barre du menu (séparant les favoris et l'option Quitter) si nécessaire.

 
Sélectionnez

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 item 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;
  //Si il y a alors on affiche une barre dans le menu
  favbarre.Visible:=fav1.Visible;
end;

6. Appel des procédures

Lorsque la form va se créer ou se détruire, il faut alors appeler certaines procédure.

 
Sélectionnez

procedure TForm1.FormCreate(Sender: TObject);
begin
  Ouvrirfav; //Appel la procedure "Ouvrirfav"
  Organiserfav; //Appel la procedure "Organiserfav"
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Ecrirefav; //Appel la procedure "Ecrirefav"
  Favlist.Free; //Détruit l'objet
end;

7. 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.

 
Sélectionnez

procedure TForm1.Ouvrir(const Filename: String);
begin
  //Ouvre le fichier dans le composant TImage
  Image1.Picture.LoadFromFile(FileName);
  //Appel la procedure "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
    //Appel la procedure "Ouvrir" avec comme paramètre "OpenDialog1.FileName"
    Ouvrir(OpenDialog1.FileName);
end;

procedure TForm1.fav1Click(Sender: TObject);
begin
  //Appel la procedure "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]

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.