Juin 23

Lorsqu’une application se lance, par défaut, la fenêtre principale se retrouve automatiquement dans la barre des tâches depuis les dernières versions de Delphi. Si l’on migre un vieux projet, on peut ajouter une ligne dans le code source du projet de son application :   Application.MainFormOnTaskbar := True;
Typiquement, si la prévisualisation ne fonctionne pas correctement sous Windows Vista, il y a de fortes chances que cette ligne soit manquante ou que la valeur soit à False.

Au lancement de la fiche principale, je vais commencer par vérifier que l’on utilise bien Windows 7, puis initialiser les variables permettant d’accéder aux deux interfaces décrites dans la première page.

 
Déclaration de deux variables :

1
2
3
  private
    tbl : ITaskbarList;
    tbl3: ITaskbarList3;  // Fournis de nombreuses fonctions supplémentaires

 
Événement OnCreate de la fiche :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  // Windows 7
  if CheckWin32Version(6, 1) then
  begin
    // Création des objets nécessaires
    tbl := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
    tbl.HrInit;  // Initialisation
    Supports(tbl, IID_ITaskbarList3, tbl3);
  end
  else
  begin
    // On n'est pas sous Windows 7
    MessageDlg('Ces exemples ne fonctionnent que sous Windows 7 !', mtInformation, [mbOK], 0);
  end;
end;

 

Ce code nécessite les unités suivantes :

1
2
uses
  SysUtils, Dialogs, ComObj, ShlObj;

 

Mise en œuvre des fonctions AddTab & DeleteTab

J’ai ajouté deux TButton sur la fiche et un TSpeedButton. J’ai également créé une autre fiche que j’ouvrirai lorsque l’on clique sur le TSpeedButton.

J’ajoute le code suivant sur les événements OnClick de ces 3 composants :

1
2
3
4
5
6
7
8
procedure TfrmMain.btnDisplayTaskClick(Sender: TObject);
begin
  // Affiche la prévisualisation et la tâche avec la fenêtre actuelle
  tbl.AddTab(Self.Handle);

  btnDisplayTask.Enabled := False;
  btnHideTask.Enabled    := True;
end;

 

1
2
3
4
5
6
7
8
procedure TfrmMain.btnHideTaskClick(Sender: TObject);
begin
  // Suppression de la prévusialisation et de la tâche
  tbl.DeleteTab(Self.Handle);

  btnDisplayTask.Enabled := True;
  btnHideTask.Enabled    := False;
end;

 

1
2
3
4
5
6
7
8
9
10
  if spbtnToolWindow.Down then
  begin
    // Affiche une seconde fenêtre
    frmToolWindow.Show;
  end
  else
  begin
    // On masque la fenêtre
    frmToolWindow.Close;
  end;

 

Si l’on teste d’ores et déjà le code, on remarque que la tâche apparait et disparait comme prévu. Cependant, la seconde fiche apparait et disparait à l’écran, mais sa prévisualisation n’est jamais visible.
Pour cela, on va modifier la structure de cette fiche afin que la tâche ne soit pas masquée, ce qui est le comportement par défaut des autres fiches que la principale, lorsque l’on développe une application avec Delphi.
 
On modifie ainsi la fiche :

1
2
uses
  Windows, Classes, Controls, Forms;

 

1
2
  protected
    procedure CreateParams(var Params: TCreateParams); override;

 

1
2
3
4
5
6
7
8
9
10
// Surcharge de la méthode du parent pour que la tâche soit visible sur la barre des tâches
procedure TfrmToolWindow.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle   := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
  end;
end;

 

Dorénavant, les prévisualisations de nos deux fiches sont visibles :

Prévisualisation des deux fiches

Prévisualisation des deux fiches

 

Mise en œuvre de la fonction SetThumbnailTooltip

On peut également ajouter une info-bulle sur chaque prévisualisation. Pour cela, il suffit d’utiliser une ligne de code comme celle-ci :

1
2
    // Affichage d'une info-bulle au-dessus de la prévisualisation
    tbl3.SetThumbnailTooltip(frmToolWindow.Handle, 'Jolie Belly !');

 

Info-bulle

Info-bulle

 
Sur la page suivante, nous allons voir comment ajouter une barre de progression à notre tâche en utilisant les couleurs disponibles…

Share

Pages : 1 2 3 4 5 6

Lien permanent vers Maximiser l’utilisation de la barre des tâches de Windows 7 avec Delphi Rédigé par Whiler \\ Tags : , , , , ,

Une réponse pour “Maximiser l’utilisation de la barre des tâches de Windows 7 avec Delphi”

Laisser une réponse

(requis)

(requis)

*

;) (lol) (y) |-( (hi) 8-) (angel) :s (clap) (bow) (tmi) (:| plus »

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.