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 :

Accéder aux propriétés d'un composant dynamique


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut Accéder aux propriétés d'un composant dynamique
    Bonjour,

    Je crée avec ce code des composants TImage dans une boucle "For"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With Timage.Create(pnlParent) do
       begin
       Top:= 7 + (TailleCase div 2) + (i * TailleCase);
       Width:= TailleCase;
       Height:= TailleCase;
       Name:='_' + intToStr(k) + '_' + IntToStr(j + 1) + '_' + IntToStr(i + 1);
       OnMouseMove:= MouseMoveSurCase;
       end;
    J'ai donc plusieurs "Timage" qui sont créés dans la boucle For et qui portent chacun un nom via la propriété "Name".

    J'ai besoin d'accéder lors de l'évenement "OnMouseMove" d'un Timage quelconque aux propriétés de tous les TImage qui ont la même valeur "k" que le TImage en question, dans leurs noms.

    Pour accéder aux propriétés du TImage survolé par la souris, çà je sais faire via mais pour accéder aux propriétés des autres TImage que celui qui est survolé par la souris, j'en appelle à votre aide.

    Merci d'avance

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to pnlParent.ControlCount -1 do
      if pnlParent.Controls[i] is TImage then
       ...
    Pour éviter de devoir parser le nom du contrôle, assigne k à la propriété Tag des TImages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i := 0 to pnlParent.ControlCount -1 do
      if (pnlParent.Controls[i] is TImage) and 
        (pnlParent.Controls[i].Tag = TControl(Sender).Tag) then
       ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Merci beaucoup pour ta réponse, mais comment puis-je ensuite acceder à la propriété Picture du TImage


  4. #4
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    N'oublie pas de documenter aussi la propriété Parent des TImage.

    Moi je stockerais mes TImage instanciés dans un TList.

    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
    var MyImages : TList;
     
    ...
    // code à mettre dans FormCreate :
    MyImages := TList.Create;
     
    ...
    // code à mettre dans FormDestroy :
    if assigned(MyImages) then MyImages.Free;
     
    ...
    // code à mettre dans la procedure contenant la boucle :
    var ProvImage : TImage;
    ...
    ProvImage := Timage.Create(pnlParent);
    MyImages.Add(ProvImage);
    With ProvImage do
       begin
       Parent := pnlParent;
       Top:= 7 + (TailleCase div 2) + (i * TailleCase);
       Width:= TailleCase;
       Height:= TailleCase;
       Name:='_' + intToStr(k) + '_' + IntToStr(j + 1) + '_' + IntToStr(i + 1);
       OnMouseMove:= MouseMoveSurCase;
       end;
    Et la tu accèdes à tes images par exemple avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to MyImages.Count - 1 do
     with TImage(MyImages[I]) do ...
    On peut aussi utiliser un tableau statique (si le nombre d'images est fixe, c'est peut-être mieux), ou un tableau dynamique.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Merci à vous deux, la solution du Tlist me plait et fonctionne très bien

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/01/2007, 14h09
  2. Accéder aux propriétés d'un objet créé au runtime
    Par zarbouine dans le forum Delphi
    Réponses: 6
    Dernier message: 14/12/2006, 17h03
  3. Réponses: 6
    Dernier message: 25/09/2006, 17h08
  4. Accéder aux propriétés d'une feuille de style liée
    Par b Oo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/05/2006, 08h34
  5. [C#]Accéder aux propriétés d'un User Control
    Par djoao dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/03/2006, 09h54

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