begin process at 2008 07 05 18:18:34
1 205 268 membres
241 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : afficher les objets enfant d'un tabpage [ Mutimédia / Autre ] (dederfred)

afficher les objets enfant d'un tabpage le 26/10/2006 20:23:33

dederfred
Bonjour,
voila l'interface de mon application.
En gros :


je vous explique ce que je veux faire et ce que j'arrive a faire :
Je dois sauvegarder la hierarchie d emon application (les onglets et objet interne) dans un fichier xml pour pouvoir la recréer après.
Donc j'enregistre hiérarchiquement  tout dans mon fichier xml .
Je suis partie de la logique je prend mon premier onglet (de Tnb_principal),et  je récupère son nom (le nom de l'étage).Puis Chaque onglet a en enfant un autre TabbedNotebook qui figure dans mon tableau TNB_principal1: Array Of TabbedNotebook celui la me sert a représenter une pièce,  je récupère donc le nom de la première pièce, et finalement je bloque , je voudrai récupérer le combobox enfant a cette pièce mais c'est la que tout ce complique. J'ai essayer de faire un lenomdemontabpage.findComponent mais il ne trouve rien je ne comprend pas ...

Le CODE :

Configuration_immeuble := XMLDoc.DocumentElement.AddChild('Configuration_immeuble');
if assigned(TNB_principal) then
begin
For lecture_page:= 0 to TNB_principal.Pages.Count-1  do
Begin
 TabPageetage := TTabPage(TNB_principal.Pages.Objects[lecture_page]);
   if assigned(TabPage) then
   begin
      etage := Configuration_immeuble.AddChild('etage') ;
      nometage := etage.AddChild('nom') ;
      nometage.Text :=  TabPageetage.Caption ;

      For num_onglet:= 0 to TNB_principal1[lecture_page].Pages.Count-1  do
        Begin
            TabPagepiece := TTabPage(TNB_principal1[lecture_page].Pages.Objects[num_onglet]);
            piece := etage.AddChild('piece') ;
            nompiece := piece.AddChild('nom') ;
            nompiece.Text :=  TabPagepiece.Caption ;
              For NumTableau:= 0 to Length(CB_Mur)-1  do
                Begin
                 Mur_CB_test := TComboBox(TabPagepiece.FindComponent(CB_Mur[NumTableau].Name));
                 if assigned(Mur_CB_test) then
                  begin
                     showmessage('ok');
                     break;
                  end
                 else
                  begin
                     showmessage('non');
                  end;
                end;


        end;
    end;
end;
end;


Le problème s'est qu'il faut absolument que je trouve le combobox enfant de la page. Donc je me demandé si il y avais une possibilité d'affiché la hiérarchie d'un composant (les objets qu'il contient) car si cela est possible il y a sûrement un moyen pour que je le sélectionne dans cette liste.

Si cela n'est pas très clair n'aillait pas peur de m'en faire part.

Merci d'avance
( j'ai posté aussi sur un autre forum )

Re : afficher les objets enfant d'un tabpage le 27/10/2006 13:36:07

Loda
Membre Club
salut, dans l'EDI t'as la fenetre "structure" qui te permet de voir la hierachie des composant (le champs "parent", pas le champs "owner" regarde l'aide si tu ne connait pas la différence) ton problem vient peut etre de la. findcomponent rechercher avec le champ owner et non le parent. donc remplace Mur_CB_test := TComboBox(TabPagepiece.FindComponent(CB_Mur[NumTableau].Name)); par Mur_CB_test := TComboBox(FORM1.FindComponent(CB_Mur[NumTableau].Name)); pourrait marcher... bon code

Re : afficher les objets enfant d'un tabpage le 27/10/2006 16:19:32

dederfred
le probleme c'est qu'il faut que je trouve le composant  CB_Mur[NumTableau] qui se trouve dans la decendance de TabPagepiece
et pas les autres mais je ne c'est pas exactement le quel si trouve c'est pour cela que je fais ma boucle pour trouver le bon . peut etre il y a un autre moyen pour y arriver .. ?

Re : afficher les objets enfant d'un tabpage le 30/10/2006 09:42:57

Loda
Membre Club
Réponse acceptée !
salut, As.tu essayer de remplacer le code comme je te l'ai suggerer? ça marche? pour trouver le "bon composant" j'ai deux pistes a te donner: 1. Tu loop sur CB_Mur et tu test "CB_Mur[i].parent = TabPagepiece" pour trouver ceux donc le parent est bien cette page. 2. une autre solution (plus lourd et plus compliquée) consite a sauver les info dont t'a besoin dans un record associé a chaque element qui te pose problème. (je dois pas être clair la alors je fait un exemple) TExtraInfo = record ListMur = array[] of TComboxBox; Etage = TpageControl; end; PExtraInfo = ^TExtraInfo; ... New(aPExrtaInfo); aPExtraInfo^.Etage := Xxx; Piece_TabControl.Tag := aPExtrInfo; Le problème serra les dispose et comment/quand créer ces info. -------- Sinon, ton problème c'est de modéliser des élément architecturaux de maison pour faire des choix genre type de plancher, etc. Puis de permettre une sauvegrade/restauration des choix. j'ai juste? As-tu penser au TTreeView? Comme tu peux associer au node un pointeur (même idée que 2.) et que tu as une hiérachie. Aussi Tree.SaveToFile peut t'aider. Tu pourrais faire une interface genre a gauche un tree view et a droite une série de TPanel (un par niveau de hiérachie) avec les proriété de ce niveau. (nb de pièce, type de mur, ....). Et tu cache/charge les valeurs des panels lorsque la selection change dans le tree view. je sais pas trop quoi te coneiller sans avoir plsu d'info sur ce que tu veux faire. (le but, pas le moyen) bon code,

Re : afficher les objets enfant d'un tabpage le 01/11/2006 17:06:06

dederfred
Encore merci la premiere solution de ton dernier post fonctionne . J'y avais pas pencé du tout ...
je cherchais peu etre trop dur .
merci pour tout je vais pouvoir continer 

Re : afficher les objets enfant d'un tabpage le 02/11/2006 09:00:20

Loda
Membre Club
content de t'avoir rendu service. et content de savoir que ça fonctionne. :)


Classé sous : page, end, enfant, tnb, addchild

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS