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

Langage Delphi Discussion :

Poblème: Ajout de l'évènement "DblClick"


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de 123djimy
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 36
    Points : 41
    Points
    41
    Par défaut Poblème: Ajout de l'évènement "DblClick"
    Bonjour à tous,

    Comment puis-je ajouter l'évènement "DblClick" à une classe qui ne dérive pas de la classe Tcontrol? donc je ne peux pas surcharger cette méthode puisqu'elle n'existe pas dans la la classe ascendante!!

    J'ai essayé ce code, mais il ne fonctionne pas!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MaClasse= class(Tobject)
      private
         fOnDblClick: TNotifyEvent;
      protected
         procedure DblClick;
      published
         property OnDblClick: TNotifyEvent read fOnDblClick write fOnDblClick;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    implementation
    {$R *.dfm}
     
    Procedure MaClasse.DblClick;
    begin
      //......
    end;
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 692
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 692
    Points : 13 122
    Points
    13 122
    Par défaut
    Et comment veux-tu que l'application sache qu'il faut t'envoyer ce message (souris) si ce n'est pas un composant visuel

  3. #3
    Membre du Club Avatar de 123djimy
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Et comment veux-tu que l'application sache qu'il faut t'envoyer ce message (souris) si ce n'est pas un composant visuel
    Salut

    C'est un composant visuel qui dérive directement de la classe Tobject
    je n'ai pas mis le programme complet,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MaClasse= class(Tobject)
      private
         fOnDblClick: TNotifyEvent;
         .......
      protected
         procedure DblClick;
         .......
      published
         property OnDblClick: TNotifyEvent read fOnDblClick write fOnDblClick;
         .......
      end;
    Le composant s'affiche, mais l'évènement "DblClick" n'existe pas.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 692
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 692
    Points : 13 122
    Points
    13 122
    Par défaut
    Alors, je modifie légèrement ma réponse

    Soit c'est un contrôle fenêtré (qui possède un handle) qui est susceptible de recevoir directement le message, soit c'est un contrôle non fenêtré et c'est l'application qui est en charge de répartir les messages.

    Si tu ne passes pas par les classes Delphi appropriées, c'est à toi de coder l'ensemble

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Les composant non visuels doivent dériver au minimul de TComponent.
    Les composants visuels doivent dériver au minimum de TControl ou TGraphicControl

  6. #6
    Membre du Club Avatar de 123djimy
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    J'ai un composant visuel, et quant je surcharge l'évènement "DblClick":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Procedure DblClick;Override;
    Une message d'erreur s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DCC Erreur] Pro.pas(145): E2137 Méthode 'DblClick' non trouvée dans la classe de base
    Qu'est ce que je dois faire?

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par 123djimy Voir le message
    J'ai un composant visuel, et quant je surcharge l'évènement "DblClick":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Procedure DblClick;Override;
    Une message d'erreur s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DCC Erreur] Pro.pas(145): E2137 Méthode 'DblClick' non trouvée dans la classe de base
    Qu'est ce que je dois faire?
    les composants dits visuels sont dérivés de TControl qui possède une méthode DblClick.

    Si tu dérives de TObject, tu n'as pas un composant "visuels", tu n'as d'ailleurs pas un "composant" (TComponent) mais une classe objet qui éventuellement permet d'afficher quelque chose à l'écran, et qui est totalement déconnectée des évènements souris.

    Donc soit tu dérives de TControl, soit tu apportes à ton composant les évènements souris auxquels tu veux qu'il réagisse de la même façon que tu lui permets de se dessiner sur un Canvas...alors que lui même n'en possède à priori pas.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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