Bonjour,
Dans le cadre d'un développement delphi 2005, je suis amené à créer une liste de composants, définis par un nom et une valeur. Il m'est venue l'idée de créer un objet dérivé d'une TForm, contenant un label et une editBox, chacune contenant respectivement le nom et la valeur du composant à afficher. L'idée est d'instancier autant d'objet dérivé de TForm que de composant a afficher. De plus, ces instances de composants sont stockés dans une liste dans la classe parent. Ainsi, le code ressemble a ceci pour la création / stockage dans la liste :
Le constructeur createEntity est défini comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //pour chaque entité for i := 0 to nbEntity -1 do myFrmEntityList.add (TfrmEntity.createEntity(self,myEntity[i], i));
Ensuite, je voudrais afficher chaque instance de frmEntity contenue dans la liste myFrmEntityList. Pour cela, j'ai fait le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 constructor TfrmEntity.createFrmEntity(aOwner : TComponent; aEntity :TEntity; aIndex : integer ); begin inherited create (aOwner); setEntity(aEntity); afficherEntity; Name := name + intToStr(aIndex); end;
ou calculNextTop renvoie un compteur incrémenté de 25 à chaque passage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for i := 0 to myFrmEntityList.count -1 do begin myfrmEntityList[i].parent := self; myfrmEntityList[i].top := calculNextTop (); myfrmEntityList[i].show; end;
Mon problème est le suivant : les instances de myfrmEntity se superposent, comme si leur top était à 0, alors que chaque propriété top a bien une valeur différente. Existe t-il une méthode particulière pour afficher une liste de forme ? Faut -il mieux passer par des TFrames ? J'avoue que je nage un peu a ce niveau la.
Partager