begin process at 2010 02 10 11:34:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

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

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


 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.


 Sources du même auteur

Source avec Zip Source avec une capture RECHERCHER UNE FENETRE PAR SA CLASSE ET UNE PARTIE DE SON TI...
Source avec Zip Source avec une capture TCHECKEDGROUPBOX : TGROUPBOX PRÉCÉDÉ D'UNE CHECKBOX
Source avec Zip COMPOSANT EDIT PERMETTANT DE SAVOIR QUI A MODIFIE LE TEXTE D...

 Sources de la même categorie

Source avec Zip Source avec une capture TQGRID UN STRINGGRID AMÉLIORER. par yanb
Source avec Zip DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER L... par f0xi
Source avec Zip Source avec une capture COMPOSANTS NDSOFT par diglas
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION" par Bacterius
Source avec Zip COMPOSANT TTHRESCOLLECTION par ThWilliam

Commentaires et avis

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 !

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é )  

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.

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

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 !

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 !

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

Commentaire de Bacterius le 22/08/2008 12:24:15

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

Cordialement, Bacterius !

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 !

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 !

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 !

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.

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 !

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 ? ^^

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)

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 !

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

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

Commentaire de Bacterius le 22/08/2008 15:25:22

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

Cordialement, Bacterius !

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

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 !

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

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 !

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 !

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

Commentaire de Francky23012301 le 23/08/2008 14:17:15

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

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 !

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.

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 !

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.

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

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

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à ;)

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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales