{"id":2298,"date":"2011-06-23T00:15:54","date_gmt":"2011-06-22T22:15:54","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=2298"},"modified":"2023-03-12T15:00:08","modified_gmt":"2023-03-12T14:00:08","slug":"delphi-taskbar-windows-7","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/","title":{"rendered":"Maximiser l&rsquo;utilisation de la barre des t\u00e2ches de Windows 7 avec Delphi"},"content":{"rendered":"<p>R\u00e9cemment, en voyant <a href=\"https:\/\/www.skype.com\/\" target=\"_blank\" rel=\"noopener\">Skype<\/a> s&rsquo;agr\u00e9menter de nouveaux boutons sous la pr\u00e9visualisation de sa fen\u00eatre principale, et sachant qu&rsquo;il est <a href=\"https:\/\/www.embarcadero.com\/rad-in-action\/application-showcase\" target=\"_blank\" rel=\"noopener\">\u00e9crit<\/a> en <a href=\"https:\/\/www.embarcadero.com\/fr\/products\/delphi\" target=\"_blank\" rel=\"noopener\">Delphi<\/a>, j&rsquo;ai eu envie de comprendre et savoir comment d\u00e9velopper la m\u00eame chose&#8230;<\/p>\n<div id=\"attachment_2302\" style=\"width: 181px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2302\" class=\"size-full wp-image-2302\" title=\"Pr\u00e9visualisation Skype\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/skype.jpg\" alt=\"Pr\u00e9visualisation Skype\" width=\"171\" height=\"175\" \/><p id=\"caption-attachment-2302\" class=\"wp-caption-text\">Pr\u00e9visualisation Skype<\/p><\/div>\n<p>J&rsquo;ai d\u00e9j\u00e0 utilis\u00e9 la barre de progression que l&rsquo;on peut afficher sous la t\u00e2che dans des applications, par exemple dans <a href=\"\/whiler\/2010\/06\/23\/doodle-google-logos\/\">wGL<\/a>, mais je n&rsquo;avais pas encore regard\u00e9 de pr\u00e8s ces boutons&#8230;<\/p>\n<div id=\"attachment_2308\" style=\"width: 251px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2308\" class=\"size-full wp-image-2308\" title=\"Barre de progression\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/wgl_feedback.jpg\" alt=\"Barre de progression\" width=\"241\" height=\"195\" \/><p id=\"caption-attachment-2308\" class=\"wp-caption-text\">Barre de progression<\/p><\/div>\n<p>Dans cet article, je vais utiliser, avec <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Delphi_(informatique)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Delphi\" style=\"\" >Delphi<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>, diff\u00e9rentes m\u00e9thodes expos\u00e9es par des interfaces de l&rsquo;API de <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Windows_7\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Windows 7\" style=\"\" >Windows 7<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>&nbsp;:<\/p>\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/bb774652%28v=VS.85%29.aspx\" target=\"_blank\" rel=\"noopener\">ITaskbarList<\/a>\n<ul>\n<li>Initialisation&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/bb774650(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">HrInit<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Ajout\/Suppression de pr\u00e9visualisations\/t\u00e2ches&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/bb774646(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">AddTab<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/bb774648(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">DeleteTab<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391692%28v=VS.85%29.aspx\" target=\"_blank\" rel=\"noopener\">ITaskbarList3<\/a>\n<ul>\n<li>Ajout d&rsquo;une info-bulle sur une pr\u00e9visualisation&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391702(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">SetThumbnailTooltip<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Barre de progression&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391697(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">SetProgressState<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391698(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">SetProgressValue<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Ic\u00f4ne suppl\u00e9mentaire sur la t\u00e2che&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391696(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">SetOverlayIcon<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Ajout de boutons sous la pr\u00e9visualisation&nbsp;:\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391704(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">ThumbBarSetImageList<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391703(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">ThumbBarAddButtons<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd391705(v=VS.85).aspx\" target=\"_blank\" rel=\"noopener\">ThumbBarUpdateButtons<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div id=\"attachment_2311\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a title=\"Cliquer pour t\u00e9l\u00e9charger l'application exemple\" href=\"\/whiler\/wp-content\/uploads\/2011\/06\/windows7taskbar.zip\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2311\" class=\"size-full wp-image-2311\" title=\"Cliquer pour t\u00e9l\u00e9charger l'application exemple\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/w7tb.jpg\" alt=\"Interface de l'exemple\" width=\"300\" height=\"242\" \/><\/a><p id=\"caption-attachment-2311\" class=\"wp-caption-text\">Interface de l&#39;exemple<\/p><\/div>\n<p>Retrouvez le code utilis\u00e9 sur la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/2\/\">page suivante<\/a>&#8230;<br \/>\n<!--nextpage--><br \/>\nLorsqu&rsquo;une application se lance, par d\u00e9faut, la fen\u00eatre principale se retrouve automatiquement dans la barre des t\u00e2ches depuis les derni\u00e8res versions de Delphi. Si l&rsquo;on migre un vieux projet, on peut ajouter une ligne dans le code source du projet de son application&nbsp;: <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">&nbsp; Application<span class=\"sy1\">.<\/span><span class=\"me1\">MainFormOnTaskbar<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><\/span><\/code><br \/>\nTypiquement, si la pr\u00e9visualisation ne fonctionne pas correctement sous Windows Vista, il y a de fortes chances que cette ligne soit manquante ou que la valeur soit \u00e0 <code class=\"codecolorer delphi dawn\"><span class=\"delphi\"><span class=\"kw2\">False<\/span><\/span><\/code>.<\/p>\n<p>Au lancement de la fiche principale, je vais commencer par v\u00e9rifier que l&rsquo;on utilise bien Windows 7, puis initialiser les variables permettant d&rsquo;acc\u00e9der aux deux interfaces d\u00e9crites dans la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/\">premi\u00e8re page<\/a>.<\/p>\n<p>&nbsp;<br \/>\nD\u00e9claration de deux variables&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/><\/div><\/td><td><div class=\"delphi codecolorer\">&nbsp; <span class=\"kw1\">private<\/span><br \/>\n&nbsp; &nbsp; tbl <span class=\"sy1\">:<\/span> ITaskbarList<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">:<\/span> ITaskbarList3<span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Fournis de nombreuses fonctions suppl\u00e9mentaires<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\n\u00c9v\u00e9nement <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnCreate<\/span><\/code> de la fiche&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">FormCreate<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Windows 7<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> CheckWin32Version<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Cr\u00e9ation des objets n\u00e9cessaires<\/span><br \/>\n&nbsp; &nbsp; tbl <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> CreateComObject<span class=\"br0\">&#40;<\/span>CLSID_TaskbarList<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">as<\/span> ITaskbarList<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; tbl<span class=\"sy1\">.<\/span><span class=\"me1\">HrInit<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Initialisation<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Supports<\/span><span class=\"br0\">&#40;<\/span>tbl<span class=\"sy1\">,<\/span> IID_ITaskbarList3<span class=\"sy1\">,<\/span> tbl3<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ On n'est pas sous Windows 7<\/span><br \/>\n&nbsp; &nbsp; MessageDlg<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Ces exemples ne fonctionnent que sous Windows 7 !'<\/span><span class=\"sy1\">,<\/span> mtInformation<span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>mbOK<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p>Ce code n\u00e9cessite les unit\u00e9s suivantes&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">uses<\/span><br \/>\n&nbsp; SysUtils<span class=\"sy1\">,<\/span> Dialogs<span class=\"sy1\">,<\/span> ComObj<span class=\"sy1\">,<\/span> ShlObj<span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3>Mise en \u0153uvre des fonctions AddTab &amp; DeleteTab<\/h3>\n<p>J&rsquo;ai ajout\u00e9 deux <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TButton<\/span><\/code> sur la fiche et un <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TSpeedButton<\/span><\/code>. J&rsquo;ai \u00e9galement cr\u00e9\u00e9 une autre fiche que j&rsquo;ouvrirai lorsque l&rsquo;on clique sur le <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TSpeedButton<\/span><\/code>.<\/p>\n<p>J&rsquo;ajoute le code suivant sur les \u00e9v\u00e9nements <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnClick<\/span><\/code> de ces 3 composants&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnDisplayTaskClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Affiche la pr\u00e9visualisation et la t\u00e2che avec la fen\u00eatre actuelle<\/span><br \/>\n&nbsp; tbl<span class=\"sy1\">.<\/span><span class=\"me1\">AddTab<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; btnDisplayTask<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; btnHideTask<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnHideTaskClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Suppression de la pr\u00e9vusialisation et de la t\u00e2che<\/span><br \/>\n&nbsp; tbl<span class=\"sy1\">.<\/span><span class=\"me1\">DeleteTab<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; btnDisplayTask<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; btnHideTask<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"delphi codecolorer\">&nbsp; <span class=\"kw1\">if<\/span> spbtnToolWindow<span class=\"sy1\">.<\/span><span class=\"me1\">Down<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Affiche une seconde fen\u00eatre<\/span><br \/>\n&nbsp; &nbsp; frmToolWindow<span class=\"sy1\">.<\/span><span class=\"me1\">Show<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ On masque la fen\u00eatre<\/span><br \/>\n&nbsp; &nbsp; frmToolWindow<span class=\"sy1\">.<\/span><span class=\"me1\">Close<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p>Si l&rsquo;on teste d&rsquo;ores et d\u00e9j\u00e0 le code, on remarque que la t\u00e2che apparait et disparait comme pr\u00e9vu. Cependant, la seconde fiche apparait et disparait \u00e0 l&rsquo;\u00e9cran, mais sa pr\u00e9visualisation n&rsquo;est jamais visible.<br \/>\nPour cela, on va modifier la structure de cette fiche afin que la t\u00e2che ne soit pas masqu\u00e9e, ce qui est le comportement par d\u00e9faut des autres fiches que la principale, lorsque l&rsquo;on d\u00e9veloppe une application avec Delphi.<br \/>\n&nbsp;<br \/>\nOn modifie ainsi la fiche&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">uses<\/span><br \/>\n&nbsp; Windows<span class=\"sy1\">,<\/span> Classes<span class=\"sy1\">,<\/span> Controls<span class=\"sy1\">,<\/span> Forms<span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\">&nbsp; <span class=\"kw1\">protected<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> CreateParams<span class=\"br0\">&#40;<\/span><span class=\"kw1\">var<\/span> Params<span class=\"sy1\">:<\/span> TCreateParams<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"kw1\">override<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"co1\">\/\/ Surcharge de la m\u00e9thode du parent pour que la t\u00e2che soit visible sur la barre des t\u00e2ches<\/span><br \/>\n<span class=\"kw1\">procedure<\/span> TfrmToolWindow<span class=\"sy1\">.<\/span><span class=\"me1\">CreateParams<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">var<\/span> Params<span class=\"sy1\">:<\/span> TCreateParams<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">inherited<\/span> CreateParams<span class=\"br0\">&#40;<\/span>Params<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">with<\/span> Params <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; ExStyle &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> ExStyle <span class=\"kw1\">or<\/span> WS_EX_APPWINDOW<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; WndParent <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetDesktopwindow<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p>Dor\u00e9navant, les pr\u00e9visualisations de nos deux fiches sont visibles&nbsp;:<br \/>\n<div id=\"attachment_2326\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/2-previews.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2326\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/2-previews-300x158.jpg\" alt=\"Pr\u00e9visualisation des deux fiches\" title=\"Pr\u00e9visualisation des deux fiches\" width=\"300\" height=\"158\" class=\"size-medium wp-image-2326\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/2-previews-300x158.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/2-previews.jpg 577w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2326\" class=\"wp-caption-text\">Pr\u00e9visualisation des deux fiches<\/p><\/div><\/p>\n<p>&nbsp;<\/p>\n<h3>Mise en \u0153uvre de la fonction SetThumbnailTooltip<\/h3>\n<p>On peut \u00e9galement ajouter une info-bulle sur chaque pr\u00e9visualisation. Pour cela, il suffit d&rsquo;utiliser une ligne de code comme celle-ci&nbsp;:<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\">&nbsp; &nbsp; <span class=\"co1\">\/\/ Affichage d'une info-bulle au-dessus de la pr\u00e9visualisation<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetThumbnailTooltip<\/span><span class=\"br0\">&#40;<\/span>frmToolWindow<span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'Jolie Belly !'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\n<div id=\"attachment_2332\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/hint.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2332\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/hint-300x158.jpg\" alt=\"Info-bulle\" title=\"Info-bulle\" width=\"300\" height=\"158\" class=\"size-medium wp-image-2332\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/hint-300x158.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/hint.jpg 577w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2332\" class=\"wp-caption-text\">Info-bulle<\/p><\/div><\/p>\n<p>&nbsp;<br \/>\nSur la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/3\/\">page suivante<\/a>, nous allons voir comment ajouter une barre de progression \u00e0 notre t\u00e2che en utilisant les couleurs disponibles&#8230;<br \/>\n<!--nextpage--><\/p>\n<h3>Mise en \u0153uvre des fonctions SetProgressState &#038; SetProgressValue<\/h3>\n<p>J&rsquo;ai ajout\u00e9 deux <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TButton<\/span><\/code> sur la fiche et un <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TTrackBar<\/span><\/code>.<br \/>\nLes \u00e9v\u00e9nements <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnClick<\/span><\/code> et <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnChange<\/span><\/code> sont cod\u00e9s ainsi&nbsp;:<br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnDisplayProgressClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressState<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> TBPF_NORMAL<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ en vert<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Affiche une barre de progression sur le fond de la t\u00e2che<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> trckbrProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Position<\/span><span class=\"sy1\">,<\/span> trckbrProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Max<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; btnHideProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnHideProgressClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Masque la progression sur la t\u00e2che<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressState<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> TBPF_NOPROGRESS<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; btnHideProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">trckbrProgressChange<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">case<\/span> trckbrProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Position<\/span> <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">20<\/span><span class=\"sy1\">:<\/span> &nbsp;tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressState<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> TBPF_ERROR<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ en rouge<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">21<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">50<\/span><span class=\"sy1\">:<\/span> tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressState<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> TBPF_PAUSED<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ en jaune<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span> &nbsp; &nbsp;tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressState<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> TBPF_NORMAL<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ en vert<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Affiche une barre de progression sur le fond de la t\u00e2che<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetProgressValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> trckbrProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Position<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\n<div id=\"attachment_2335\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/feedback.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2335\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/feedback-300x286.jpg\" alt=\"Barre de progression\" title=\"Barre de progression\" width=\"300\" height=\"286\" class=\"size-medium wp-image-2335\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/feedback-300x286.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/feedback.jpg 343w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2335\" class=\"wp-caption-text\">Barre de progression<\/p><\/div><\/p>\n<p>&nbsp;<br \/>\nSur la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/4\/\">page suivante<\/a>, nous allons voir comment ajouter une seconde ic\u00f4ne sur notre t\u00e2che&#8230;<br \/>\n<!--nextpage--><\/p>\n<h3>Mise en \u0153uvre de la fonction SetOverlayIcon<\/h3>\n<p>J&rsquo;ai ajout\u00e9 deux <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TButton<\/span><\/code> sur la fiche et un <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TImageList<\/span><\/code>.<br \/>\nJ&rsquo;ajoute une ic\u00f4ne dans le <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TImageList<\/span><\/code>.<br \/>\nLes \u00e9v\u00e9nements <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnClick<\/span><\/code> sont cod\u00e9s ainsi&nbsp;:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnDisplayIconClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; iLogo <span class=\"sy1\">:<\/span> TIcon<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; iLogo <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TIcon<span class=\"sy1\">.<\/span><span class=\"me1\">Create<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">try<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e8re une ic\u00f4ne depuis un TImageList<\/span><br \/>\n&nbsp; &nbsp; imglIcon<span class=\"sy1\">.<\/span><span class=\"me1\">GetIcon<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> iLogo<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Ajoute l'ic\u00f4ne sur celui de la barre des t\u00e2ches : ne fonctionne que si de grandes ic\u00f4nes sont affich\u00e9es dans la barre des t\u00e2ches<\/span><br \/>\n&nbsp; &nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetOverlayIcon<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> iLogo<span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Whiler'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; btnDisplayIcon<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; btnHideIcon<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">finally<\/span><br \/>\n&nbsp; &nbsp; iLogo<span class=\"sy1\">.<\/span><span class=\"me1\">Free<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnHideIconClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>tbl3<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Masque l'ic\u00f4ne de la t\u00e2che<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">SetOverlayIcon<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> <span class=\"kw1\">nil<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; btnDisplayIcon<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; btnHideIcon<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\n<div id=\"attachment_2336\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/icon.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2336\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/icon-300x286.jpg\" alt=\"Ic\u00f4ne suppl\u00e9mentaire\" title=\"Ic\u00f4ne suppl\u00e9mentaire\" width=\"300\" height=\"286\" class=\"size-medium wp-image-2336\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/icon-300x286.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/icon.jpg 343w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2336\" class=\"wp-caption-text\">Ic\u00f4ne suppl\u00e9mentaire<\/p><\/div><\/p>\n<p>&nbsp;<br \/>\nSur la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/5\/\">page suivante<\/a>, nous allons voir comment ajouter des boutons sous une pr\u00e9visualisation de notre t\u00e2che&#8230;<br \/>\n<!--nextpage--><\/p>\n<h3>Mise en \u0153uvre des fonctions ThumbBarSetImageList, ThumbBarAddButtons &#038; ThumbBarUpdateButtons<\/h3>\n<p>J&rsquo;ai ajout\u00e9 deux <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TButton<\/span><\/code> sur la fiche et un <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TImageList<\/span><\/code>.<br \/>\nJ&rsquo;ajoute trois ic\u00f4nes dans le <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">TImageList<\/span><\/code>.<br \/>\nJe d\u00e9finis deux constantes qui contiendront le texte de mes info-bulles&nbsp;:<br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">const<\/span><br \/>\n&nbsp; TEXT_0 &nbsp; &nbsp; <span class=\"sy3\">=<\/span> <span class=\"st0\">'Vert'<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; TEXT_1 &nbsp; &nbsp; <span class=\"sy3\">=<\/span> <span class=\"st0\">'Jaune'<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; TEXT_2 &nbsp; &nbsp; <span class=\"sy3\">=<\/span> <span class=\"st0\">'Rouge'<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\nLes \u00e9v\u00e9nements <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnClick<\/span><\/code> sont cod\u00e9s ainsi&nbsp;:<br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnDisplayThumbButtonsClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; abtnButtons<span class=\"sy1\">:<\/span> <span class=\"kw1\">array<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span> TThumbButton<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Sp\u00e9cification des boutons \u00e0 ajouter &nbsp;https:\/\/msdn.microsoft.com\/en-us\/library\/dd391559%28v=vs.85%29.aspx<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Un identifiant unique<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iBitmap<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ L'index dans le TImageList utilis\u00e9<\/span><br \/>\n&nbsp; <span class=\"kw3\">StrCopy<\/span><span class=\"br0\">&#40;<\/span>abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">szTip<\/span><span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>TEXT_0<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"co1\">\/\/ L'info-bulle du bouton<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_BITMAP <span class=\"kw1\">or<\/span> THB_TOOLTIP <span class=\"kw1\">or<\/span> THB_FLAGS<span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Une image avec une info-bulle &nbsp;https:\/\/msdn.microsoft.com\/en-us\/library\/dd562322%28v=vs.85%29.aspx<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_ENABLED <span class=\"kw1\">or<\/span> THBF_NOBACKGROUND<span class=\"sy1\">;<\/span> &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Voir les diff\u00e9rents flags possible &nbsp;https:\/\/msdn.microsoft.com\/en-us\/library\/dd562321%28v=vs.85%29.aspx<\/span><br \/>\n<br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iBitmap<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_BITMAP <span class=\"kw1\">or<\/span> THB_TOOLTIP <span class=\"kw1\">or<\/span> THB_FLAGS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_ENABLED <span class=\"kw1\">or<\/span> THBF_DISMISSONCLICK<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">StrCopy<\/span><span class=\"br0\">&#40;<\/span>abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">szTip<\/span><span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>TEXT_1<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iBitmap<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_BITMAP <span class=\"kw1\">or<\/span> THB_TOOLTIP <span class=\"kw1\">or<\/span> THB_FLAGS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_DISABLED<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">StrCopy<\/span><span class=\"br0\">&#40;<\/span>abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">szTip<\/span><span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>TEXT_2<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Premier affichage ou mise \u00e0 jour<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>btnDisplayThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Tag<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ TImageList \u00e0 utiliser<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">ThumbBarSetImageList<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> imglThumbs<span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Ajout de 3 boutons<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">ThumbBarAddButtons<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"sy1\">,<\/span> <span class=\"sy2\">@<\/span>abtnButtons<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Mise \u00e0 jour des boutons pr\u00e9d\u00e9demment cr\u00e9\u00e9s<\/span><br \/>\n&nbsp; &nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">ThumbBarUpdateButtons<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"sy1\">,<\/span> <span class=\"sy2\">@<\/span>abtnButtons<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; btnDisplayThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; btnHideThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; btnDisplayThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Tag<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> btnDisplayThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Tag<\/span> <span class=\"sy3\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">btnHideThumbButtonsClick<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; abtnButtons<span class=\"sy1\">:<\/span> <span class=\"kw1\">array<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span> TThumbButton<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_FLAGS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_HIDDEN<span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ Bouton masqu\u00e9<\/span><br \/>\n<br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_FLAGS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_HIDDEN<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">iId<\/span> &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwMask<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THB_FLAGS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_HIDDEN<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; tbl3<span class=\"sy1\">.<\/span><span class=\"me1\">ThumbBarUpdateButtons<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">Self<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Handle<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"sy1\">,<\/span> <span class=\"sy2\">@<\/span>abtnButtons<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; btnDisplayThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; btnHideThumbButtons<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Lorsque des boutons sont cr\u00e9\u00e9s, ils sont persistants tant qu&rsquo;on ne supprime pas la t\u00e2che, comme on l&rsquo;a vu en <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/2\/\">page&nbsp;2<\/a>. C&rsquo;est pourquoi, lorsque je veux les cacher, je modifie simplement une de leurs propri\u00e9t\u00e9s&nbsp;: <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">abtnButtons<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">dwFlags<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> THBF_HIDDEN<\/span><\/code><\/p>\n<p>Si l&rsquo;on teste l&rsquo;application telle qu&rsquo;elle est actuellement, les boutons sont visibles, mais aucun \u00e9v\u00e9nement ne leur est encore associ\u00e9.<br \/>\n<div id=\"attachment_2337\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/buttons.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2337\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/buttons-300x286.jpg\" alt=\"Boutons\" title=\"Boutons\" width=\"300\" height=\"286\" class=\"size-medium wp-image-2337\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/buttons-300x286.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/buttons.jpg 343w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2337\" class=\"wp-caption-text\">Boutons<\/p><\/div><\/p>\n<p>&nbsp;<br \/>\nPour leur associer du code, il faut ajouter une proc\u00e9dure qui va utiliser les identifiants uniques que l&rsquo;on a d\u00e9finis sur chaque bouton&nbsp;:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\">&nbsp; <span class=\"kw1\">protected<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> WMCommand<span class=\"br0\">&#40;<\/span><span class=\"kw1\">var<\/span> <span class=\"kw1\">Message<\/span><span class=\"sy1\">:<\/span> TWMCommand<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"kw1\">message<\/span> WM_COMMAND<span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">WMCommand<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">var<\/span> <span class=\"kw1\">Message<\/span><span class=\"sy1\">:<\/span> TWMCommand<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; sMsg<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Clic un bouton de la t\u00e2che<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw1\">Message<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">NotifyCode<\/span> <span class=\"sy3\">=<\/span> THBN_CLICKED <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Test de l'identifiant du bouton<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"kw1\">Message<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">ItemID<\/span> <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy1\">:<\/span> sMsg <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TEXT_0<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy1\">:<\/span> sMsg <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TEXT_1<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy1\">:<\/span> sMsg <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TEXT_2<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; MessageDlg<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Vous avez cliqu\u00e9 sur l'<\/span><span class=\"st0\">'ic\u00f4ne '<\/span> <span class=\"sy3\">+<\/span> sMsg <span class=\"sy3\">+<\/span> <span class=\"st0\">' !'<\/span><span class=\"sy1\">,<\/span> &nbsp;mtInformation<span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>mbOK<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">inherited<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Si l&rsquo;on teste l&rsquo;application, un message est effectivement affich\u00e9 lorsque l&rsquo;on clique sur un des deux premiers boutons&nbsp;:<br \/>\n<div id=\"attachment_2338\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/message.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2338\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/message-300x104.jpg\" alt=\"Message\" title=\"Message\" width=\"300\" height=\"104\" class=\"size-medium wp-image-2338\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/message-300x104.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/message.jpg 376w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2338\" class=\"wp-caption-text\">Message<\/p><\/div><\/p>\n<p>Cependant, si on ex\u00e9cute l&rsquo;application en tant qu&rsquo;administrateur, l&rsquo;\u00e9v\u00e9nement du bouton n&rsquo;est pas d\u00e9clench\u00e9.<br \/>\n<div id=\"attachment_2339\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/admin.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2339\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/admin-300x52.jpg\" alt=\"Ex\u00e9cuter en tant qu&#039;administrateur\" title=\"Ex\u00e9cuter en tant qu&#039;administrateur\" width=\"300\" height=\"52\" class=\"size-medium wp-image-2339\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/admin-300x52.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/admin.jpg 323w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2339\" class=\"wp-caption-text\">Ex\u00e9cuter en tant qu&#039;administrateur<\/p><\/div><br \/>\nEn effet, la t\u00e2che ne faisant pas partie de l&rsquo;application elle-m\u00eame, l&rsquo;\u00e9v\u00e9nement qu&rsquo;elle envoie lors d&rsquo;un clic \u00e0 l&rsquo;application est ignor\u00e9 du fait de l&rsquo;isolation entre le profil normal et celui de l&rsquo;administrateur. Pour que cet \u00e9v\u00e9nement soit transmis \u00e0 l&rsquo;application, celle-ci doit sp\u00e9cifier qu&rsquo;elle accepte cet \u00e9v\u00e9nement.<br \/>\nPour cela, j&rsquo;ai ajout\u00e9 une constante et modifi\u00e9 le code de l&rsquo;\u00e9v\u00e9nement <code class=\"codecolorer delphi dawn\"><span class=\"delphi\">OnCreate<\/span><\/code> de la fiche principale&nbsp;:<br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">const<\/span><br \/>\n&nbsp; MSGFLT_ADD <span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">procedure<\/span> TfrmMain<span class=\"sy1\">.<\/span><span class=\"me1\">FormCreate<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">type<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Pour obtenir les notifications des boutons de la t\u00e2che lorsque l'application est lanc\u00e9e en tant qu'administrateur<\/span><br \/>\n&nbsp; TChangeWindowMessageFilterFunction <span class=\"sy3\">=<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>msg<span class=\"sy1\">:<\/span> <span class=\"kw4\">Cardinal<\/span><span class=\"sy1\">;<\/span> action<span class=\"sy1\">:<\/span> <span class=\"kw4\">Word<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">BOOL<\/span><span class=\"sy1\">;<\/span> <span class=\"kw1\">stdcall<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; hUser32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">Cardinal<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; ChangeWindowMessageFilter<span class=\"sy1\">:<\/span> TChangeWindowMessageFilterFunction<span class=\"sy1\">;<\/span><br \/>\n&nbsp; iLoop<span class=\"sy1\">,<\/span> iMax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Windows 7<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> CheckWin32Version<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Cr\u00e9ation des objets n\u00e9cessaires<\/span><br \/>\n&nbsp; &nbsp; tbl <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> CreateComObject<span class=\"br0\">&#40;<\/span>CLSID_TaskbarList<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">as<\/span> ITaskbarList<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; tbl<span class=\"sy1\">.<\/span><span class=\"me1\">HrInit<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Initialisation<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Supports<\/span><span class=\"br0\">&#40;<\/span>tbl<span class=\"sy1\">,<\/span> IID_ITaskbarList3<span class=\"sy1\">,<\/span> tbl3<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Appel dynamique pour permettre le &quot;fonctionnement&quot; sous XP, ...<\/span><br \/>\n&nbsp; &nbsp; hUser32 <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> LoadLibrary<span class=\"br0\">&#40;<\/span><span class=\"st0\">'user32.dll'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>hUser32 &lt;&gt; <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"sy2\">@<\/span>ChangeWindowMessageFilter <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetProcAddress<span class=\"br0\">&#40;<\/span>hUser32<span class=\"sy1\">,<\/span> <span class=\"st0\">'ChangeWindowMessageFilter'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">Assigned<\/span><span class=\"br0\">&#40;<\/span>ChangeWindowMessageFilter<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Pour obtenir les notifications des boutons de la t\u00e2che lorsque l'application est lanc\u00e9e en tant qu'administrateur<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ChangeWindowMessageFilter<span class=\"br0\">&#40;<\/span>WM_COMMAND<span class=\"sy1\">,<\/span> MSGFLT_ADD<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; MessageDlg<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Les messages des boutons de la t\u00e2che ne peuvent pas fonctionner si l'<\/span><span class=\"st0\">'application est ex\u00e9cut\u00e9e en tant qu'<\/span><span class=\"st0\">'administrateur !'<\/span><span class=\"sy1\">,<\/span> &nbsp;mtWarning<span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>mbOK<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; FreeLibrary<span class=\"br0\">&#40;<\/span>hUser32<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; MessageDlg<span class=\"br0\">&#40;<\/span><span class=\"st0\">'User32.dll n'<\/span><span class=\"st0\">'a pas \u00e9t\u00e9 trouv\u00e9 !'<\/span><span class=\"sy1\">,<\/span> &nbsp;mtWarning<span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>mbOK<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ On n'est pas sous Windows 7 ; les composants sont d\u00e9sactiv\u00e9s<\/span><br \/>\n&nbsp; &nbsp; iMax <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">Pred<\/span><span class=\"br0\">&#40;<\/span>ControlCount<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span> iLoop <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span> <span class=\"kw1\">to<\/span> iMax <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>Controls<span class=\"br0\">&#91;<\/span>iLoop<span class=\"br0\">&#93;<\/span> <span class=\"kw1\">is<\/span> TButton<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; TButton<span class=\"br0\">&#40;<\/span>Controls<span class=\"br0\">&#91;<\/span>iLoop<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; trckbrProgress<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; MessageDlg<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Ces exemples ne fonctionnent que sous Windows 7 !'<\/span><span class=\"sy1\">,<\/span> mtInformation<span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>mbOK<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\nSur la <a href=\"\/whiler\/2011\/06\/23\/delphi-taskbar-windows-7\/6\/\">derni\u00e8re page<\/a>, vous pourrez t\u00e9l\u00e9charger une archive avec le code source de l&rsquo;application utilis\u00e9e pour les captures d&rsquo;\u00e9cran de cet article&#8230;<br \/>\n<!--nextpage--><br \/>\nNous avons pass\u00e9 en revue une partie des fonctions associ\u00e9es aux fonctionnalit\u00e9s li\u00e9es aux boutons de la barre des t\u00e2ches sous Windows 7. Elles peuvent \u00eatre cumul\u00e9es pour donner le r\u00e9sultat escompt\u00e9 vis-\u00e0-vis de vos exigences fonctionnelles.<br \/>\n<div id=\"attachment_2340\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/all_together.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2340\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/all_together-300x230.jpg\" alt=\"Tous ensemble\" title=\"Tous ensemble\" width=\"300\" height=\"230\" class=\"size-medium wp-image-2340\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/all_together-300x230.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/all_together.jpg 455w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2340\" class=\"wp-caption-text\">Tous ensemble<\/p><\/div><\/p>\n<p>Vous pouvez t\u00e9l\u00e9charger le code source depuis <a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/windows7taskbar-src.zip\">ce lien<\/a>.<\/p>\n<p>De nombreuses &#038; pr\u00e9cieuses informations pour impl\u00e9menter cette application ont \u00e9t\u00e9 trouv\u00e9es sur ces sites&nbsp;:<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/www.drbob42.com\/examine\/examinC5.htm\" rel=\"noopener\">Dr.Bob<\/a>  <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/yes.gif\" alt=\"(y)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/li>\n<li><a target=\"_blank\" href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dd378460%28v=vs.85%29.aspx\" rel=\"noopener\">MDSN<\/a><\/li>\n<\/ul>\n<p>Comme toujours, si vous avez des questions, n&rsquo;h\u00e9sitez pas \u00e0 laisser un commentaire&nbsp;!  <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/wink.gif\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n<blockquote><p>Si vous avez trouv\u00e9 cet article int\u00e9ressant, que vous souhaitez en voir d&rsquo;autres, prenez une \u00bd seconde pour cliquer sur le bouton <em>Merci<\/em> ci-dessous&#8230; <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/dull.gif\" alt=\"|-(\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p><\/blockquote>\n<p>Je n&rsquo;ai eu aucune question sur la barre des t\u00e2ches de Windows 7 durant la <a href=\"\/whiler\/2011\/06\/22\/certification-delphi\/\">certif<\/a>  <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/tmi.gif\" alt=\"(tmi)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>R\u00e9cemment, en voyant Skype s\u2019agr\u00e9menter de nouveaux boutons sous la pr\u00e9visualisation de sa fen\u00eatre principale, et sachant qu\u2019il est \u00e9crit en Delphi, j\u2019ai eu envie de comprendre et savoir comment d\u00e9velopper la m\u00eame chose\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[7,6],"tags":[125,15,27,154,108,151],"class_list":["post-2298","post","type-post","status-publish","format-standard","hentry","category-delphi","category-dev","tag-b3lly","tag-api","tag-coloration-syntaxique","tag-delphi","tag-script","tag-windows-7"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=2298"}],"version-history":[{"count":1,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2298\/revisions"}],"predecessor-version":[{"id":6371,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2298\/revisions\/6371"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=2298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=2298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=2298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}