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

Composants VCL Delphi Discussion :

Récupérer les évènements d'un sous objet


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut Récupérer les évènements d'un sous objet
    Bonjour,

    Je viens de faire un composant (pas bien compliqué en soit) un TPanel avec un TImage en sous objet. L'objet terminé est un TPanelImage.

    Voici mon problème :
    L'événement OnClick de mon TPanelImage, ne fonctionne que quand je suis sur mon TPanel et non sur mon TImage (bien que le tout ne soit qu'un objet)

    J'ai donc voulu affecter mon Onclick de mon TImage au Onclick de mon TPanel mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TPanelImage.AutoInitialize;
    begin
         Image := TImage.Create(Self);
         Image.Parent := Self;
         with Image do
              begin
                Visible := True;
                align:=AlClient;
                onClick:=self.onClick;
              end;
    end;
    Merci de me dire comment faire.

    merci de votre aide

  2. #2
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Image.Enabled := false;

    plus d'action transmise au TImage.


    ou encore :

    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
    uses
      ExtCtrls;
     
    type
      TPanelImage = class(TPanel)
      private
        fImage : TImage;
        procedure SetImage(const Value: TImage);
      protected
        procedure DoImageClick(Sender: TObject);
        procedure DoImageContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
        procedure DoImageDblClick(Sender: TObject);
        { etc }
      published
        property Image : TImage read fImage write SetImage;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      end;
     
     
    { TPanelImage }
     
    constructor TPanelImage.Create(AOwner: TComponent);
    begin
      inherited;
     
      fImage := TImage.Create(Self);
      fImage.Parent := Self;
      fImage.Align  := alClient;
      fImage.OnClick := DoImageClick;
      fImage.OnContextPopup := DoImageContextPopup;
      fImage.OnDblClick     := DoImageDblClick;
    end;
     
    destructor TPanelImage.Destroy;
    begin
      fImage.Free;
      inherited;
    end;
     
    procedure TPanelImage.DoImageClick(Sender: TObject);
    begin
      inherited Click;
    end;
     
    procedure TPanelImage.DoImageContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
    begin
      inherited DoContextPopup(MousePos, Handled);
    end;
     
    procedure TPanelImage.DoImageDblClick(Sender: TObject);
    begin
      inherited DblClick;
    end;
     
    procedure TPanelImage.SetImage(const Value: TImage);
    begin
      if assigned(Value) then
        fImage.Assign(Value);
    end;

  3. #3
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Super merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image.Enabled := false;
    La variable Image étant public quelqu'un peut modifier cette propriété. Cette solution plus rapide n'est pas retenue

    Je garde donc l'autre solution

    Merci Dr.Who

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les événements de la molette de la souris
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 13
    Dernier message: 05/12/2007, 01h39
  2. Réponses: 1
    Dernier message: 29/06/2007, 13h03
  3. Réponses: 3
    Dernier message: 06/07/2006, 19h49
  4. Réponses: 3
    Dernier message: 06/11/2005, 00h50
  5. [JACOB] récupérer les événements d'objet COM
    Par zlavock dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/05/2005, 14h07

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