Textimage : une timage qui intercepte le enter / leave de la souris

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 344 fois - Téléchargée 19 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
@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..
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
28 mai 2020
29
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à ;)
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
@cantador : c'est pour ça que je suis resté sous D7 :]
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
@cirec :
Pour ma part, je considère que la possibilité d'installer des composants reste un avantage indéniable.
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
7
Ben je me suis enregistré mais j'ai rien reçu par mail.
Et c'est pas dans le spam non plus.

Cordialement, Bacterius !
Afficher les 30 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.