Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TEXTIMAGE : UNE TIMAGE QUI INTERCEPTE LE ENTER / LEAVE DE LA SOURIS


Information sur la source

Description

Un petit composant tout simple, qui surcharge TImage en ajoutant les fonctionnalités d'entrée et de sortie de la souris dans l'image.

L'intérêt est d'abord son utilité avant sa pédagogie.
Les principes utilisés sont :
- Interception de message windows
- Surcharge de composant
- Création d'évènements

 

Source

  • unit ExtImage;
  • interface
  • uses
  • Controls, ExtCtrls, Messages, Classes, Graphics;
  • type
  • //Classe de base, qui contient tout le code
  • TCustomExtImage = class(TImage)
  • private
  • FOnMouseLeave: TNotifyEvent;
  • FOnMouseEnter: TNotifyEvent;
  • //interception des messages windows d'evenements de la souris qui nous interessent
  • procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  • procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  • protected
  • //nos proprietes
  • property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
  • property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  • //procedures appelées par les messages windows
  • // permet de surcharger ces procedures si on herite le composant, sans se soucier des messages
  • procedure MouseEnter; virtual;
  • procedure MouseLeave; virtual;
  • end;
  • //class effective, permet simplement de "publisher" les proprietes voulues
  • TExtImage = class(TCustomExtImage)
  • published
  • property OnMouseEnter;
  • property OnMouseLeave;
  • end;
  • procedure Register;
  • implementation
  • procedure Register;
  • begin
  • RegisterComponents('Supplément', [TExtImage]);
  • end;
  • { TCustomExtImage }
  • procedure TCustomExtImage.CMMouseEnter(var Message: TMessage);
  • begin
  • MouseEnter;
  • end;
  • procedure TCustomExtImage.CMMouseLeave(var Message: TMessage);
  • begin
  • MouseLeave;
  • end;
  • procedure TCustomExtImage.MouseEnter;
  • begin
  • if Assigned(FOnMouseEnter) then
  • FOnMouseEnter(Self);
  • end;
  • procedure TCustomExtImage.MouseLeave;
  • begin
  • if Assigned(FOnMouseLeave) then
  • FOnMouseLeave(Self);
  • end;
  • end.
unit ExtImage;

interface

uses
  Controls, ExtCtrls, Messages, Classes, Graphics;

type
  //Classe de base, qui contient tout le code
  TCustomExtImage = class(TImage)
  private
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    //interception des messages windows d'evenements de la souris qui nous interessent
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  protected
    //nos proprietes
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;

    //procedures appelées par les messages windows
    // permet de surcharger ces procedures si on herite le composant, sans se soucier des messages
    procedure MouseEnter; virtual;
    procedure MouseLeave; virtual;
  end;

  //class effective, permet simplement de "publisher" les proprietes voulues
  TExtImage = class(TCustomExtImage)
  published
    property OnMouseEnter;
    property OnMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Supplément', [TExtImage]);
end;

{ TCustomExtImage }

procedure TCustomExtImage.CMMouseEnter(var Message: TMessage);
begin
  MouseEnter;
end;

procedure TCustomExtImage.CMMouseLeave(var Message: TMessage);
begin
  MouseLeave;
end;

procedure TCustomExtImage.MouseEnter;
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TCustomExtImage.MouseLeave;
begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;


end.

Conclusion

Une source très basique, mais très utile a mon avis.
 

Commentaires et avis

signaler à un administrateur
Commentaire de Bacterius le 21/08/2008 18:09:54

Bon composant, il fallait bien qu'il se fasse coder un jour. On a tous regretté une fois dans notre vie qu'il n'existe pas d'evenements OnMouseEnter et OnMouseLeave (qui sont extremement utiles) dans les TImages. Grâce à toi c'est chose faite :)
Je télécharge pour l'essayer :p
Je ne peux pas donner de note car c'est trop basique, et donner un 10 serait normal et abusé en même temps (enfin c'est ce que je pense).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Nicolas___ le 21/08/2008 21:15:27

Et ben moi je trouve ca super  ;
j'ai pas testé ton code mais je l'ai analysé ...
Et cette source , grâce à sa simplicité , permet de comprendre (en douceur ) comment surcharger un composant

De plus il donne beaucoup d'idées

(je ne m'étais encore jamais amusé à faire ca , mais à mon avis ca ne va pas tardé )  

signaler à un administrateur
Commentaire de Guillemouze le 21/08/2008 21:33:01

merci pour vos commentaires :)
j'espère que les commentaires du code sont compréhensibles, je savais pas quoi mettre tellement ça coule de source.

"il fallait bien qu'il se fasse coder un jour"
Demandez, c'est codé :p
J'aime bien ce type d'unités. 50 lignes et tout est la.

"Je ne peux pas donner de note car c'est trop basique, et donner un 10 serait normal et abusé en même temps (enfin c'est ce que je pense)."
Donne moi un 0 alors, c'est déjà la moitié du 10 ;)

"permet de comprendre (en douceur ) comment surcharger un composant"
je pense qu'elle permet de voir simplement la facilité de l'interception de messages aussi.

signaler à un administrateur
Commentaire de JulioDelphi le 22/08/2008 10:27:46 administrateur CS

J'avais fait il y a un moment un compo permettant d'ajouter ce onMouseEnter et OnMouseLeave sur n'importe quel composant ne le possédant pas.
Donc au lieu d'ajouter X nouveaux composants, suffisait d'ajouter le mien pour que les autres puisse l'avoir.
http://www.delphifr.com/codes/COMPOSANT-TDBPMOUSER-JOUEZ-AVEC-SOURIS_25071.aspx
Il est améliorable, n'hésitez pas c'est free ^^

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 10:35:15

"n'hésitez pas c'est free ^^" oO' heureusement !
sinon je vais le voir ça m'interesse :)

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Guillemouze le 22/08/2008 10:36:21

@julio: sympa comme composant. Mais le fonctionnement n'est pas tout a fait le meme. Toi tu utilise un timer pour controler ce qui se passe. Ici, ce sont les evenements de windows qui sont utilisés -> on evite la charge d'un timer. Par contre, dans mon cas, il faut surcharger chaque classe a laquelle on veut appliquer ces comportements.
Peut etre y aurait il un moyen de faire un mix des deux !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 12:18:41 administrateur CS

juste pour information ...

quasi tous les composants des nouvelles versions de Delphi (Turbo Delphi et plus) possèdent ces évènements. lol

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 12:24:15

ahh Cirec tu viens de briser l'ambiance ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 12:58:19 administrateur CS

Désolé .. ^^

en même temps quand on reste "coincé" sur les anciennes versions on ne peut pas savoir ... lol

Donc pour votre bien je vous informe de l'existence de nouvelles fonctionnalités dans ces versions et je rappel (hein Bacterieus) qu'elles sont aussi gratuites ^^
http://www.delphifr.com/Infomsg_DELPHI-2009-ARRIVE_1190774.aspx

Même f0xi qui ne voulait, pour rien au monde, lâcher sont D7 est passé à la version 2007 .... mouahahahaha

C'est vraiment dommage de s'en priver ... non !

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 13:04:06

Ouais ... je vais télécharger Delphi 2007 (est-t-elle totalement gratuite ? je n'ai pas envie de télécharger une version d'essai limitée ...). Delphi 6 est pourri de bugs et de plantages en tout genres de toute façon ^^.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 13:06:22

Mais je coderai quand même mon Reverso sous Delphi 6 !
Zut j'ai révélé ma prochaine source ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 13:13:45 administrateur CS

totalement gratuit après un enregistrement chez eux (bien sur) tu auras un licence privé accordée pour une durée d'environ cent ans ^^ .. il y a de quoi faire avec ça non ?

il faut bien que tu regardes avant de choisir ta version ... ne pas prendre de "trial" celles-ci sont des versions d'évaluations ... mais il y a aussi des version pour développement personnelle.

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 13:21:29

L'enregistrement est-il gratuit ? ^^'
Sinon 100 ans ça veut dire que ma licence expirera quand j'aurai 115 ans ... on a déjà vu des gens vivre 134 ans, y'a de l'arnaque quand même un peu ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de JulioDelphi le 22/08/2008 14:11:27 administrateur CS

@CIREC : Oui on r¤$t¤ $ouv¤nt bloqu¤ av¤c la m¤m¤ v¤r$ion d¤ d¤lphi a cau$¤ du m¤m¤ probl¤m¤ r¤cur¤nt ! Voi$ tu ? ^^

signaler à un administrateur
Commentaire de cirec le 22/08/2008 14:27:12 administrateur CS

oui je comprends mais je ne parlai pas à ceux qui ont investit dans une version Pro ou Entreprise ^^

pour ceux là il est bien clair que ce genre de changement n'est pas primordial ^^ mais pour tous ceux qui développent avec des versions personnelles "Explorer" il serait dommage de s'en priver d'autant plus qu'une version Explorer peut cohabiter avec une personnelle (Ex un D7 Personnelle et un Turbo Delphi Explorer)

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 14:32:17

Mais si l'enregistrement est payant Borland aura soufflé ma lueur d'espoir ... :'(
C'est pas cool de pas avoir de carte bancaire mais juste une carte "mozaïc" ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 15:17:11 administrateur CS

il n'y a RIEN à payer ... donc pas de soucis à avoir

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 15:25:22

Ok, bon ben je vais le télécharger ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 15:40:52 administrateur CS

te trompes pas hein prend :
TurboDelphi Explorer French et sur la droite il y a lien pour les pré requis

http://cc.codegear.com/item/24736

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 15:51:55

Tu parlais de Delphi 2007, 2009, puis maintenant TurboDelphi ... ils représentent la même entité ??

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 16:19:41 administrateur CS

bon alors Delphi 2009 est en prévision ... il arrivera prochainement (je serai avertit pas Mail lors de sa disponibilité) je vous en ferai part dès que ...

Delphi 2007 n'est pas/plus disponible en téléchargement (de toutes façons c'est du "Trial")

CodeGear RAD Studio 2007  (il inclut Delphi for Win32, Delphi for .NET and C++Builder) mais c'est aussi un "Trial"

et Turbo Delphi Explorer est la dernière version personnelle disponible gratuitement ... ils utilisent tous le Pascal Objet et les codes sont donc compatibles entre ces versions (mis à part peut être quelques nouveautés qui ne sont que dans les versions "Trial" ... mais c'est rien d'insurmontable ^^

j'espère que c'est clair cette fois ^^

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 16:56:52

Oui c'est clair Cirec :) je suis en train d'installer TurboDelphi en ce moment ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 22/08/2008 18:29:14

C'est nul il me manque tous les préréquis, Microsoft .Net FrameWork, Microsoft .Net FrameWork SDK, Microsoft XML Core Version 4 Service Pack 2, et j'en suis encore que là ... j'espère que c'est bientôt fini, ça fait déjà 500 Mo que je télécharge pour TurboDelphi là ... grr ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 22/08/2008 19:57:43 administrateur CS

hahahahaha
***************************************************************
Commentaire de cirec le 22/08/2008 15:40:52 administrateur CS

te trompes pas hein prend :
TurboDelphi Explorer French et sur la droite il y a lien pour les pré requis

http://cc.codegear.com/item/24736
***************************************************************

faut lire les messages ^^
500Mo pour les pré-requis
500Mo pour TurboDelphi

Mais tu verras tu ne pourras plus t'en passer ... tout est tellement plus simple avec TD ^^

signaler à un administrateur
Commentaire de Francky23012301 le 23/08/2008 14:17:15

Heu question avec Turbo Delphi on peut toujours pas installé de composants ??

signaler à un administrateur
Commentaire de Bacterius le 23/08/2008 16:47:20

Ah ba moi il me demande le serial et la clef d'enregistrement.
Et quand je quitte il me balance un rire sadique ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 23/08/2008 17:17:14 administrateur CS

@Francky:
non on ne peut pas installer de nouveaux composants mais ceci et vraiment pas important comparer au nombreux avantages que cette version propose.

@Bacterius:
il faut s'enregistrer chez eux avant de télécharger et d'installer quoi que ce soit ... tu reçois tout ça par mail après l'enregistrement.

signaler à un administrateur
Commentaire de Bacterius le 23/08/2008 17:30:06

Ben je me suis enregistré mais j'ai rien reçu par mail.
Et c'est pas dans le spam non plus.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cantador le 24/08/2008 15:36:50

@cirec :
Pour ma part, je considère que la possibilité d'installer des composants reste un avantage indéniable.

signaler à un administrateur
Commentaire de JulioDelphi le 24/08/2008 16:08:06 administrateur CS

@cantador : c'est pour ça que je suis resté sous D7 :]

signaler à un administrateur
Commentaire de cirec le 24/08/2008 16:31:50 administrateur CS

attention:
je parle pour une utilisation personnelle ... hein !!!
il est clair que dans le cadre d'une utilisation professionnelle pourvoir installer de nouveaux composants est une évidence ... rien qu'en gain de productivité.

Mais dans un usage personnelle (et c'est dans cette optique que cette version est prévue "Turbo Delphi Explorer") ça ne pose pas de problème de créer des nouveaux composants dynamiquement par rapport aux possibilités (nouveautés de code, aide "tous les petits plus sont activés + un SDK Windows complet", BDE, Composants ...) en comparaison avec un Delphi 7 Edition Personnelle ou l'on peut installer des composants mais il n'y a rien d'autre ... pas d'aide complète pas de BDE et beaucoup moins de composants dans la VCL.

Et la cerise sur le gâteau c'est que les sources sont maintenant rendus publique et donc distribués avec les versions "Explorer" ^^

Donc comparativement je pense que l'on perd moins que l'on gagne sur ce coup là ;)

signaler à un administrateur
Commentaire de cantador le 24/08/2008 17:28:27

@cirec:
oui, effectivement pour se faire la main..avec 0¤ de budget.
mais la phase "usage personnel" dure peu de temps..
car on devient vite exigeant..

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

mouseenter et mouseleave ??? [ par Zynox ] je cherche a pouvoir faire d rollover sur mes bouton ( ki st d image ) je ckon pe utiliser g deja vu le code ds le forum ms j arrive pas a le retrouve évenement mouseEnter et mouseExit [ par othland ] bonjour tlm;je travail avec des speedButtons, et je veux changer leurs Glyph quand le curseur rentre dans la zone du bouton et le changer une autre fo OnEnter / OnLeave avec un Panel [ par kerizo ] Bonjour, J'aurais juste une question dont je n'ai trouvé nul par sa réponse: comment faire Apparaître / Disparaître un Panel en y faisant passer sûr l


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.