IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Ajout d'un événement à une classe custom


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Points : 16
    Points
    16
    Par défaut Ajout d'un événement à une classe custom
    Bonjour
    J'ai créé une classe en Delphi et j'aimerais lui ajouter un event, OnMouseMove par exemple.
    J'ai donc écrit mon code en m'inspirant de ce que j'ai trouvé sur le net mais je ne rentre jamais dans l’événement MouseMove.
    Avez-vous une idée de ce qui ne marche pas dans mon code?
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    unit Objet;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;
     
    Type
      TObjet = class
        nom : string ;   // Nom de l'objet
        stype : string ;  // Type : LED, buzzer, pt500, zkey, ...
        cheminImg : String ;  // Chemin vers l'image correspondant au type d'objet
        image : TImage ; // ImageN de l'objet créé, dans l'appli
        panel : TPanel ; // TPanel supportant l'image
        selectionne : boolean ; // Cliqué ou pas
     
        posX : integer ; // position X
        posY : integer ; // position Y       Twincontrol   timage
     
        private
          FOnMouseMove : TMouseMoveEvent ;
        public
          Constructor Create; overload ;   // This constructor uses defaults
          Constructor Create(name : string); overload ;
          Constructor Create(name : string; strType : string) ; overload ;
          //procedure OnMouseRelease (Sender : TObject) ;   // Declaration de la procedure Event
          procedure MouseMove(var Message: TMessage); message WM_MOUSEMOVE ;
        published
          Property OnMouseMove : TMouseMoveEvent
            read FOnMouseMove
            write FOnMouseMove;
     
    End;
     
     
    implementation
     
    constructor TObjet.Create;
    begin
      // Execute the parent (TObject) constructor first
      inherited;  // Call the parent Create method
     
      // Now set a default fruit name
      self.nom := '';
      self.selectionne := false ;
    end;
     
    constructor TObjet.Create(name: string);
    begin
      self.nom := name ;
      self.selectionne := false ;
    end;
     
    constructor TObjet.Create(name : string; strType : string) ;
    begin
      self.nom := Name;
      self.stype := strType;
      self.selectionne := false ;
    end;
     
    {procedure TObjet.OnMouseRelease (Sender : TObject) ;
    begin
        ShowMessage('Click !');
    end; }
     
    procedure TObjet.MouseMove(var Message: TMessage) ;
    begin
        if assigned(FonMouseMove) then
        ShowMessage('Mouse Move !');
        inherited;
    end;
     
    end.

  2. #2
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonsoir.

    Pour que l'événement OnMouseMove soit appelé, il faut évidemment un composant visuel. En gros, tu as deux classes de base à utiliser :
    TCustomControl (si tu veux un composant focalisable) ou TGraphicControl.
    Ces deux classes proposent les événements souris. Il n'est donc pas nécessaire d'utiliser un message WM... Il suffit de les redéclarer.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    type
       TObjet = class(TGraphicControl)
          private
              FNom: string;
              // ...
          protected
     
          public
              constructor Create(AOwner: TComponent); override;
          published
              property Nom: string read FNom write FNom;
              property OnMouseMove;
              property OnPaint;
              // ... 
       end;
    Cordialement
    Thierry

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Merci ThWilliam,
    Je teste ça demain et je fais un retour d'info!

Discussions similaires

  1. [Conception] Ajouter des stats sur une classe métier
    Par Shivan dans le forum Général Java
    Réponses: 8
    Dernier message: 27/01/2009, 15h45
  2. Ajout dynamique de methodes à une classe ?
    Par N.tox dans le forum Général Python
    Réponses: 2
    Dernier message: 11/01/2009, 21h05
  3. ajout d'attributs dans une classe de mapping
    Par nak dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/07/2008, 17h54
  4. Ajout d'objet dans une classe
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/02/2008, 21h04
  5. Ajout de propriété dans une classe d'une assembly
    Par ftesson dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 14/05/2007, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo