Pb parcourir les composants d'une fiche

Résolu
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005 - 12 mai 2005 à 09:54
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005 - 13 mai 2005 à 16:36
Bonjour, g un pti soucis car je suis un débutant en delphi si vous pouvez m'éclairer ....



dans mon appli je créé dynamiquement des TTabSheet contenant chacun unTPanel identique.

il est possible de glisser deposer une image dans ce panel qui devient le parent de cette image.



Je voudrais pouvoir enregistrer dans un fichier texte l'ensemble de mes composant du style :

-pour un TTabsheet j'écris dans mon fichier [zone] = //caption de mon TTabsheet

- ensuite pour chaque image je voudrais ecrire [élément] = //en fonction de l'image déposée



or dans mon programme j'arrive pas à parcourir les éléments de chaque onglets ...

le code est du style:



procedure TForm1.enregistrerlaconfiguration1Click(Sender: TObject);

var F:TextFile;

i,j:integer;

begin

i:=0;

j:=0;

AssignFile(F,'config.ini');

Rewrite(F);



while i<>PageControl1.ActivePageIndex do //on se positionne sur le 1er onglet

begin

PageControl1.SelectnextPage(false);

end;

with PageControl1 do

while i //chaque page délimite une zone...




Writeln(F,'[Zone] = '+PageControl1.ActivePage.Caption);

Flush(F);

inc(i);


For j:=0 to PageControl1.ActivePage.Components[i-1].ComponentCount-1 do

begin


if PageControl1.ActivePage.Components[i-1].Components[j] is TImage then


Writeln(F,'[élément] =
'+PChar(PageControl1.ActivePage.Components[i].Components[j].ClassType));

end;



PageControl1.SelectNextPage(true);

end;

CloseFile(F);

end;



si quelqu'un a plus ou moins capté ce que je voulais faire , merci de m'indiquer mes erreurs

bonne prog a tous


Temple0fb00m

8 réponses

templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005
13 mai 2005 à 16:10
g trouvé le pb en fait ca venait de la création de mes TImage en effet
ils etaient créés sur la fiche et non sur le TTabsheet ce qui fait que
la valeur ComponentCount du TTabsheet etait éronné...



merci encore Japee pour ton aide

Temple0fb00m
3
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
12 mai 2005 à 18:10
Un exemple ci-dessous, utilisant un TPageControl, contenant autant de
TTabSheet que tu veux, chacun contenant un TPanel parent d'une TImage.

Un Memo sert à recueillir les données.

Et un bouton pour cliquer...



C'est juste pour démontrer qu'on peut récupérer les propriétés de
chaque image, en fonction du TabSheet (et du Panel) dont elle est
l'enfant.



Il serait sans doute plus élégant et plus rapide de lister les
composants à partir des Images contenues dans le Form, puis de remonter
vers leur parent et "grand parent".

Mais il faudrait différencier les Images concernées d'autres images éventuelles, par un Tag par exemple.



procedure TForm1.Button1Click(Sender: TObject);

var i, j, k: Integer;

{ci-dessous 3 variables pour la clarté du code, non indispensables}

ATabSheet: TTabSheet;

APanel: TPanel;

AnImage: TImage;

begin

for i := 0 to ComponentCount -1 do

if Components[i] is TTabSheet then

begin

ATabSheet := TTabSheet(Components[i]);

// on peut récupérer les propriétés de ce TabSheet

Memo1.Lines.Add(ATabSheet.Caption);

for j := 0 to ComponentCount -1 do

if Components[j] is TPanel then

if TPanel(Components[j]).Parent = ATabSheet then

begin

APanel := TPanel(Components[j]);

// on peut récupérer les propriétés de ce Panel

Memo1.Lines.Add(APanel.Name);

for k := 0 to ComponentCount -1 do

if Components[k] is TImage then


if TImage(Components[k]).Parent = TPanel(Components[j]) then

begin


AnImage := TImage(Components[k]);


// on peut récupérer les propriétés de cette Image

// with AnImage do...


Memo1.Lines.Add(AnImage.Name);

Break;

end;

Break;

end;

end;

end;



Bonne prog'



japee
0
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005
13 mai 2005 à 09:51
Merci Japee g un pb quand mm quand j'execute le code genre un truc mystic ...



par exemple pour la boucle for j := 0 to ComponentCount -1 do

he bien j'ai le ComponentCount egal a 40 mais je
rentre jamais dans la boucle c ouf je sais mais honnetement je comprend
pas ca viendrai d'ou a ton avis?


Temple0fb00m
0
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005
13 mai 2005 à 10:56
ca passe qd j'associe un integer a la valeur de componentcount étrange....

Temple0fb00m
0

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

Posez votre question
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005
13 mai 2005 à 11:01
de plus mes TTabsheet et mes TPanel sont créé dynamiquement ca peu poser un problème?

Temple0fb00m
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
13 mai 2005 à 16:22
Ca dépend un peu de quelle manière tu les crées, tes composants.



Es-tu sûr que chaque Image a bien un Panel comme parent, et que ce Panel lui-même est bien l'enfant d'un TabSheet ?



Sinon, j'ai fait un petit bout de code afin de tester.

Je crée dynamiquement dans un PageControl 5 TabSheet, j'ajoute dans chacun un Panel et une Image.



Je teste mon code, tout fonctionne.



Si tu veux, je mets ça au clair et je le poste, mais ça va finir par ressembler à un didactitiel, lol.



Bonne prog'



j@pee
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
13 mai 2005 à 16:25
Oups, pas rafraîchi la page...



Content pour toi, TempleOfbOOM



Enfin, maintenant que je suis branché sur le sujet, n'hésite pas si tu as un problème...



Bonne prog'



j@pee
0
templeofboom Messages postés 41 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 21 juin 2005
13 mai 2005 à 16:36
merci japee t un chef ...

Temple0fb00m
0
Rejoignez-nous