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 le Composant qui a déclenché une TAction


Sujet :

Composants VCL Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Récupérer le Composant qui a déclenché une TAction
    Peut-être ce sujet a t il déjà été posé mais je n'ai pas trouvé.
    Je dispose de plusieurs composants auxquels j'ai associé une TAction construite dans les règles à partir de la TActionList.
    Dans la méthode OnExecute de la TAction je souhaite récupérer le composant qui l'a déclenchée (TButton, TMenuItem, TPopupMenuItem...ou autre).
    Jusque là en usant de Sender, Owner, GetParentName... je n'y arrive pas.

    Précisons
    Je dispose sur ma forme de 4 composants TImage d'un PopUpMenu avec un TMenuItem, et aussi d'une TAction qui sauvegarde une image.
    J'associe à chaque Timage le même TPopUpMenu dans le lequel l'item TMensuItem est associé à la TAction dont l'objectif est la sauvegarde de l'image qui aura déclenché par le click gauche cette action. Comment récupérer dans la méthode OnExecute de la TAction le bon TImage qui l'a déclenchée afin de sauvegarder cette image là.

    Merci pour votre aide.

    PS. Tout cela pour éviter de créer autant de PopUpMenu et d'évènements OnClick que d'images et qui font en gros la la même chose

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Utilise la propriété PopupMenu.PopupComponent.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Au finale cela fonctionne en cumulant plusieurs niveaux

    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
    procedure TMainForm.SaveActionExecute(Sender: TObject);
    var
       theImg:TImage;
      Act: TAction;
    begin
      if Assigned(Sender) and (Sender is TAction) then
      begin
        Act := TAction(Sender);
        if Assigned(Act.ActionComponent) and (Act.ActionComponent is TMenuItem) then
        begin
          theC:=((Act.ActionComponent as TMenuItem).GetParentMenu as TPopUpMenu).PopUpComponent;
          If TheC is TImage then begin
            theImg:=theC as TIMage; 
            ShowMessage('Je sauvegarde l''image '+theImg.Name);
           // je sauvegarde ici theImg....
         end;
        end;
      end;
    end;
    Merci à tous les contributeurs de Developpez

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

Discussions similaires

  1. Importer un composant qui depend d'une dll
    Par cricrides dans le forum VB.NET
    Réponses: 3
    Dernier message: 31/03/2012, 10h37
  2. récupérer la ligne qui a déclenché un trigger
    Par Peanut dans le forum Développement
    Réponses: 2
    Dernier message: 17/05/2011, 12h01
  3. Récupérer l'assembly qui a appelé une méthode
    Par bossun dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/07/2010, 18h08
  4. [PHP 5.2] Récupérer les images qui arrivent sur une adresse email
    Par 4rocky4 dans le forum Langage
    Réponses: 1
    Dernier message: 02/02/2009, 11h16
  5. Liste déroulante qui en déclenche une autre
    Par nabians dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/08/2007, 19h11

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