Pb parcourir les composants d'une fiche [Résolu]

Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
- - Dernière réponse : templeofboom
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
3
Merci
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

Merci templeofboom 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de templeofboom
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
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
Commenter la réponse de japee
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
0
Merci
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
Commenter la réponse de templeofboom
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
0
Merci
ca passe qd j'associe un integer a la valeur de componentcount étrange....

Temple0fb00m
Commenter la réponse de templeofboom
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
0
Merci
de plus mes TTabsheet et mes TPanel sont créé dynamiquement ca peu poser un problème?

Temple0fb00m
Commenter la réponse de templeofboom
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
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
Commenter la réponse de japee
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
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
Commenter la réponse de japee
Messages postés
41
Date d'inscription
vendredi 19 novembre 2004
Dernière intervention
21 juin 2005
0
Merci
merci japee t un chef ...

Temple0fb00m
Commenter la réponse de templeofboom

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.