Problème avec un composant TiconeBarreTache

seb_phildar Messages postés 2 Date d'inscription vendredi 9 septembre 2005 Statut Membre Dernière intervention 19 avril 2008 - 18 avril 2008 à 16:10
seb_phildar Messages postés 2 Date d'inscription vendredi 9 septembre 2005 Statut Membre Dernière intervention 19 avril 2008 - 19 avril 2008 à 19:12
Bonjour,

J'ai ouvert un programme Delphi fourni avec un livre. J'ai les sources du programme. Lorsque je lance le programme (F9), j'ai des erreurs par rapport à un composant => PIconeBarreTache. J'ai cherché sur Internet et je l'ai trouvé sur Phidels. Je l'ai installé dans les règles de l'art (Component => Install nex component).
Lorsque j'exécute le programme après installation du composant, j'ai encore les erreurs suivantes :
###############
[Error] Main.pas(100): Undeclared identifier: 'IntervalAnimation'
         => Code de la ligne 100 => PiconeBarreTache1.IntervalAnimation:=500;
[Error] Main.pas(133): Undeclared identifier: 'Animation'
         => Code de la ligne 133 => PiconeBarreTache1.Animation:=true;
[Error] Main.pas(194): Undeclared identifier: 'NumIconeAfficheImageList'
         => Code de la ligne 194 => PiconeBarreTache1.NumIconeAfficheImageList:=0;
###############

Au début du programme, le composant est bien déclaré :
#########
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls,
  IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer, IdStack,IdHTTPServer,
  ExtCtrls, Buttons,IdGlobal, ComCtrls, IdThreadMgr, IdThreadMgrDefault, syncobjs,
  IdIOHandlerSocket, idSocketHandle,IniFiles, ImgList, PiconeBarreTache;
########
et dans la définition des "Type"
########
PiconeBarreTache1: TPiconeBarreTache;
########
 Dans l'inspecteur d'objet, il y a bien les trois propriétés "IntervalAnimation", "NumIcone...."

Pouvez-vous m'aider svp? J'ai fait des recherches dans les forums et je n'ai pas trouvé de réponses...

Merci d'avance

Séb

2 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
19 avril 2008 à 14:49
Bonjour,
déjà il faudrait avoir le composant sous la main pour voir ce qu'il fait, pourquoi il est là... enfin d'après le nom "IconeBarreTache" je suppose que tu veux ajouter ton application dans la zone de notification non ? Si c'est le cas prends plutot ce code :


procedure TForm1.WMTrayIconMessage(var Msg: TMessage); 
var P: TPoint;
begin
  case Msg.LParam of
    WM_LBUTTONDBLCLK: AttendButtonUp := True;  
    WM_LBUTTONUP: if AttendButtonUp then       
    begin
      AttendButtonUp := False;                 
      MenuRestaurerClick(Self);                
      PopupMenu := nil;                        
    end;
    WM_RBUTTONUP:
    begin
      GetCursorPos(P);               
      SetForegroundWindow(Handle);   
      PopMnuSysTray.Popup(P.x, P.y); 
    end;
  end;
end;


procedure TForm1.AjouteIcone;
begin
  with IconData do 
  begin
    hIcon := LoadIcon(HInstance, 'MAINICON');
    cbSize := SizeOf(IconData);  
    Wnd := Handle;               
    uID := 0;                    
    StrPCopy(szTip, Application.Title);  
    uCallBackMessage := TrayIconMessage; 
    uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
  end;
  Shell_NotifyIcon(NIM_ADD, @IconData) 
end;


procedure TForm1.SupprimeIcone;
begin
  IconData.uID := 0;             
  Shell_NotifyIcon(NIM_DELETE, @IconData); 
end;


TU DOIS AVOIR "SHELLAPI" DANS LA CLAUSE USES
Et tu dois déclarer tout cela dans les déclarations privées :


private
    IconData: TNotifyIconData;
    AttendButtonUp: Boolean; 
    procedure AjouteIcone;
    procedure SupprimeIcone;
    procedure WMTrayIconMessage(var Msg: TMessage);
      message TrayIconMessage;


Ensuite dans le FormCreate tu entre le code : "AjouteIcone".
Et quand ton appli se ferme : "SupprimeIcone".
Il faut ajouter un popup nommé "PopMnuSysTray" (il apparaîtra si tu cliques avec le bouton droit sur l'icone).


Si tu veux rendre ton appli invisible dans la barre des tàches (elle n'apparaîtra que dans la barre de notification), ajoute "Windows" à la clause Uses du fichier PROJET, et entre cette ligne juste après "Application.Initialize" :



SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);


Et voila ! Essaye d'expliquer un peu plus le composant, pour qu'on puisse t'aider dessus ;)
0
seb_phildar Messages postés 2 Date d'inscription vendredi 9 septembre 2005 Statut Membre Dernière intervention 19 avril 2008
19 avril 2008 à 19:12
Bonjour Bacterius,

Merci pour la réponse. En fait, ce n'est pas un prog que j'ai réalisé moi-même. C'est un prog que j'ai téléchargé sur le net. C'est un complément à un livre que je suis en train de lire sur l'électronique. Lorque j'ai téléchargé le code source et que je l'ai exécuté, il m'a dit qu'il me manquait le composant PIconeBarreTache. Je l'ai téléchargé et installé et ensuite les erreurs comme expliqué ci-dessus. Pour plus d'infos sur le composant, voici un lien : http://www.phidels.com/php/index.php3?page=../php/mescompo/piconebarretache.htm&id=223
De plus, il n'y a aucun lien entre l'auteur du livre et le site de Phidels... Ce n'est pas l'auteur qui dit dans son livre d'aller télécharger le composant sur Phidels...
L'auteur a utilisé Delphi 6.0 et moi, j'utilise la version 7.0 Enterprise.

Séb
0
Rejoignez-nous