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 :

Comment récupérer le nom d'un composant à partir d'un sender?


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    Par défaut Comment récupérer le nom d'un composant à partir d'un sender?
    bonjours

    j'ai les composants listview1 et listview2 ; je veut savoir comment retourner le nom de chaqu'un a partir d'un objet "Sender:TObjet"
    exp(

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure ...(...;Sender:TObjet)
    begin
     
      if Sender='listview1' then ...
     if Sender ='listview2' then...
     
    end;

    )
    merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    tu peux le faire en testant directement les références

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Sender = listview1 then ...
    if Sender = listview2 then...
    ou sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Sender is TComponent) and (TComponent(Sender).Name = listview1) then ...
    if (Sender is TComponent) and (TComponent(Sender).Name = listview2) then ...

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    salut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     st := (Sender as TComponent).Name ;
    shelltroll le name est un chaine de caractere pas une instance d'objet

    @+ Phil

  4. #4
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin
    If Sender.classtype.classname= TListview and TListview(sender).name = 'Listview1' do
    begin
        ....
        ....
        end;
    end;
    Cordialement,
    Hauwke

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Citation Envoyé par anapurna
    shelltroll le name est un chine de caractere pas une instance d'objet
    Où as-tu vu que j'ai dit que Name était une instance d'objet ?

    j'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Sender = listview1 then ...
    je parlais bien de l'instance self.listview1 typique d'un composant posé sur une forme ... tu noteras l'absence de guillement ...
    Il est clair que ce qu'il veut faire c'est tester le nom, pour faire un comportement différent pour chaque control qui utilise le même gestionnaire d'évènement, la récupération n'est qu'un moyen d'y parvenir ...



    Citation Envoyé par Hauwke
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin
    If Sender.classtype.classname= TListview and TListview(sender).name = 'Listview1' do
    begin
        ....
        ....
        end;
    end;
    Ce code est faux !

    on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sender.ClassType = TListview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sender.ClassType.ClassName = 'TListview'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sender.ClassType.ClassName = TListview.ClassName
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sender.ClassName = 'TListview'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sender.ClassName = TListview.ClassName
    et sinon, mieux l'opérateur is qui est fait pour !

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    Citation Envoyé par ShaiLeTroll
    tu peux le faire en testant directement les références
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Sender is TComponent) and (TComponent(Sender).Name = listview1) then ...
    if (Sender is TComponent) and (TComponent(Sender).Name = listview2) then ...
    regarde bien les ligne que tu as ecrit
    ceci chez moi ce ne fonctionnera jamais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (TComponent(Sender).Name = listview2)
    @+ Phil

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Ah, oui, désolé, j'ai oublié les '

    alors soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Sender is TComponent) and (TComponent(Sender).Name = 'listview1') then ...
    if (Sender is TComponent) and (TComponent(Sender).Name = 'listview2') then ...
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Sender is TComponent) and (TComponent(Sender).Name = listview1.Name) then ...
    if (Sender is TComponent) and (TComponent(Sender).Name = listview2.Name) then ...
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Sender = listview1) then ...
    if (Sender = listview2) then ...

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Réponses: 7
    Dernier message: 26/05/2007, 12h43
  3. Réponses: 2
    Dernier message: 23/07/2005, 00h10
  4. [VB.NET] Comment récupérer le nom d'un control avec le focus
    Par jayce007 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/01/2005, 00h53
  5. Réponses: 11
    Dernier message: 16/10/2004, 18h14

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