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 :

Imbrication de composants dynamiques


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut Imbrication de composants dynamiques
    Bonjour à tous,

    J'ai un problème avec l'imbrication de composants créés dynamiquement.
    Je suis dans dans une boucle, dans laquelle je crée des composants.

    Par exemple: dans cette boucle, je crée un "Tpanel" dynamiquement et dans ce Panel je veux créer un bouton dynamiquement.
    Je ne sais plus, tout simplement, comment indiquer au bouton qui est son "Parent" => le Tpanel.

    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
     
         for i :=1 to Nombre do
         begin
         if (uppercase(ParametreMesure[indice].ParamHC[I])='B') then
         begin
              TPanel.Create(Self).Name :='P' +IntToStr(i);
              with TPanel(FindComponent('P' +IntToStr(i)))do
              begin
                   Parent:=ScrollBox1;
                   Align:=alleft;
                   Top :=(i * 22)-20;
                   Height:=22;
                   Width:=80;
                   blablabla...
                   TAdvComboBox.Create(Self).Name :='PC' +IntToStr(i);
                   with TAdvComboBox(FindComponent('PC' +IntToStr(i)))do
                   begin
                        Parent:= ;    <== mon probleme est ici.
                        top:=0;
                        align:=alleft;
                        Width:=40;
                        blablabla...
                      end;
                end;
              end;
         end;
    end;
    En plus cela doit pas ... , mais je trouve pas !

    Merci à tous !
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 419
    Points : 1 096
    Points
    1 096
    Par défaut
    Bonjour


    Pourquoi pas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parent:= TPanel(FindComponent('P' +IntToStr(i)));
    (C'est la méthode que tu utilises pour récupérer ton Tpanel dans ton with).

    Pour ma part, je déclarerais une variable de type TPanel à laquelle j’affecterais le Tpanel au moment de la création et du coup plus besoin de faire les FindComposant...

    Cordialement

  3. #3
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Effectivement une variable TPanel ne serait pas du luxe, tout comme un peu d'espace avant et après les "="
    Personnellement j'évite d'utiliser les with, ne serait ce que pour la re-lecture.

    Sur les chaines tu peux utiliser directement les ToInteger ou ToUpper.

    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
    var 
      pa  : TPanel;
      i   : integer;
      acb : TAdvComboBox;
    begin
      for i :=1 to Nombre do
      begin
        if UpperCase(ParametreMesure[indice].ParamHC[I]) = 'B' then
        begin
          pa := TPanel.Create(Self);
          pa.Name   := 'P' +IntToStr(i);
          pa.Parent := ScrollBox1;
          pa.Align  := alleft;
          pa.Top    := (i * 22)-20;
          pa.Height := 22;
          pa.Width  := 80;
     
          acb := TAdvComboBox.Create(Self)
          acb.Name :='PC' + IntToStr(i);
     
          acb.Parent := pa; //   <== mon probleme est ici.
          acb.top    := 0;
          acb.align  := alleft;
          acb.Width  := 40;
     
        end;
      end;
    end;

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Merci les gars.

    ET oui je suis aussi d'accord pour associer des variables ..
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

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

Discussions similaires

  1. Composant dynamique
    Par leycho dans le forum Composants VCL
    Réponses: 1
    Dernier message: 29/12/2005, 16h14
  2. problème de destruction de composants dynamique
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/08/2005, 10h39
  3. [FLASH MX] Nom de composant dynamique
    Par bobgeldof7 dans le forum Flash
    Réponses: 2
    Dernier message: 12/11/2004, 23h07
  4. [THandle][DLL] Composant dynamique et THandle
    Par el_diablos dans le forum Langage
    Réponses: 10
    Dernier message: 01/07/2004, 15h01
  5. [JTabbedPane] Accès à des composants dynamiques
    Par SamRay1024 dans le forum Composants
    Réponses: 8
    Dernier message: 26/05/2004, 13h04

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