Récupérer le contenu d'un contrôle créé dynamiquement

Résolu
marvenjabloun Messages postés 7 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 3 juin 2007 - 26 avril 2007 à 18:40
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 28 avril 2007 à 13:24
Bonjour,
je suis etudiant debutant en delphi et je fait une application dans le cadre d'un projet avec       delphi 7et je trouve un problemepour utiliser des composantes crées dynamiquement car elles ne sont pas reconnu lors de  l'execution j espere que je trouverai de l aide sur votre site merci .

en effet voila un petit bout de code
ou je veux recuperer le caption d'une label creer dynamiquement et dont la valeur est prise à partir d'un fichier XML 

l'affichage et l'extraction a partir de fichier xml se fait sans probleme

[file://\\panel \\panel] saisie n 'est pas creer dynamiquement
 for j := PanelSaisi.ComponentCount -1 downto 0 do
    PanelSaisi.Components[j].Free;


 [file://\\creation \\creation] dynamique de panel2

   Panel2 := TPanel.Create(PanelSaisi);
      with Panel2 do
      begin
        Parent := PanelSaisi;
        ParentColor := true;
        BevelOuter := bvNone;
         Align := AlTop;
        name := 'PanelBrique';     
       caption := '';
      end;

[file://\\creation \\creation] dynamique de label


      with TLabel.Create(Panel2) do
      begin
        Parent := Panel2;
        Align := alLeft;
        Font := PoliceTitre;

[file://\\exraction \\exraction] des données a partir de fichier XML 

        IdType := XMLProfil.DocumentElement.ChildNodes.
          Nodes[ScrollBoxBrique.Tag].Attributes[_type];
        Caption := FFOnctionsUtiles.GetChildNodeByNameAndAttr(
          XMLModele.DocumentElement, _type, 'id', IdType).AttributeNodes.
          Nodes['nom'].Text;
      end;

une fois j 'ecrit ce code je voulais recuperer la valeur de caption créé au dessus et ça j ai pas pu le faire

j ai ecrit ce code qui a generer une erreur d'exception  violation d'acces

[file://\\panel2 \\panel2] et labelType sont declarer comme etant tpanel et tlabel

 panel2:=(panelsaisie.FindChildControl('PanelBrique') as TPanel);
labeltype:=(panel2.FindChildControl('labeltype') as Tlabel);
{je suis presque certain que le probleme vient de ces deux lignes au dessus}

   [file://\\je \\je] colorerai un paneldecoration selon la valeur de label  prise dans le fichiers XML     
 if labeltype.caption = 'Composantes' then      
Paneldecoration.Color := clpurple;       
  if labeltype.caption = 'Graphe' then
Paneldecoration.Color := clyellow;
.....................................

j atend des propositions car je commence a me demoraliser

5 réponses

moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008
26 avril 2007 à 20:40
Salut,

Voici la méthode que j'utilise, alors c'est peut être pas la plus optimisé mais elle fonctionne:

for iIndice := ComponentCount-1 downto 0 do
   if Component[iIndice] is TPanel then
      if TPanel(Component[iIndice]).Name = 'PanelBrique' then
          TPanel(Component[iIndice]).Color := clPurple;

Voila alors je sais que j'ai déjà fait avec FindComponent, mais je sais plus trop comment j'avais fait et je suis pas chez moi pour regarder mes sources.

Bonne Prog   
0
jelume Messages postés 120 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 15 novembre 2007 1
26 avril 2007 à 21:17
exemple:

 (FindComponent('Label1') as TLabel).Caption := 'toto';
0
marvenjabloun Messages postés 7 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 3 juin 2007
27 avril 2007 à 14:41
Merci beaucoup à tous ceux qui mon proposer des solutions ça m 'a été tres utile .

cher Loda j ai utiliser la solution 2(c la plus comprehensible pour moi ) que tu m a proposé et ça fonctionne bien merci .
0
marvenjabloun Messages postés 7 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 3 juin 2007
27 avril 2007 à 15:03
pour ceux qui rencontreront le meme probleme que moi voila comment j ai fait graçe a votre aide Loda :

 with TLabel.Create(Panel2) do
      begin
        Parent := Panel2;
        Align := alLeft;
        Font := PoliceTitre;
        IdType := XMLProfil.DocumentElement.ChildNodes.
          Nodes[ScrollBoxBrique.Tag].Attributes[_type];
        Caption := FFOnctionsUtiles.GetChildNodeByNameAndAttr(
          XMLModele.DocumentElement, _type, 'id', IdType).AttributeNodes.
          Nodes['nom'].Text;
          name := 'labelType';


\\ tablabeltype doit etre declaré comme un tableau de string   
       for k:=0 to 49 do
      tablabeltype[k]:=FFOnctionsUtiles.GetChildNodeByNameAndAttr(
          XMLModele.DocumentElement, _type, 'id', IdType).AttributeNodes.
          Nodes['nom'].Text;


          end;

 for k:=0 to 49 do


       if tablabelType[k] = 'Graphe' then


Paneldecoration.Color := clyellow
else


          if tablabelType[k] = 'Composantes' then
       
Paneldecoration.Color := clpurple;
       
   .................

ça fonctionne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
28 avril 2007 à 13:24
marvenjabloun > Pense à valider les réponses qui te conviennent (bouton "réponse acceptée").
0
Rejoignez-nous