accder aux proprits des controls d'un containerControl

Bonjour,
J’utilise pour la premire fois les “containerControl”
Pour faire simple:
j’ai cr un “containerControl” dans lequel j’ai mis un “textfield”
Dans ma fentre j’ai un “canvas” (scrollingCanvas) dans lequel les diffrentes instances de mon “containerControl” viennent se loger.
Pour cela j’utilise une boucle “for”:

[code]for i=0 to count

dim ctn as new myContainerControl // nouvelle instance
myContainers.Append(ctn)
ctn.EmbedWithin( scrollingCanvas, 0 , newOffset )

next[/code]

tout fonctionne, mais je voudrais que la proprit “text” du “textfield” soit modifie la vole chaque nouvelle instance cre.
Comment on accde aux proprits des “control” inclus dans le container?
Merci d’avance

essaie quelque chose comme

[code]for i=0 to count

dim ctn as new myContainerControl // nouvelle instance
myContainers.Append(ctn)
ctn.EmbedWithin( scrollingCanvas, 0 , newOffset )
myContainers(i).Textfield.Text = “lorem ipsum” // utilise le nom du textfield si ce n’est pas TextField
next [/code]

a devrait fonctionner. Je suppose que tu voudras mettre la logique ncessaire pour avoir le texte appropri dans chaque textfield.

Merci Louis pour la rponse rapide!
Voil le code un peu plus complet + la modif que tu as suggr

[code]for i=0 to count

dim ctn as new myContainerControl
myContainers.Append(ctn)
dim offset as integer=myContainers.ubound*ctn.Height
ctn.EmbedWithin( scrollingCanvas, 0 , offset )

myContainers(i).myColorNameFieldclass1.text = colorName(i)

next[/code]
j’ai une erreur la compil:
“Cette mthode ou proprit n’existe pas”: myContainers(i).myColorNameFieldclass1.text = colorName(i)

Bon j’utilise une ancienne version de RealBasic, mme pas XOJO. Peut tre ceci explique cela…

  • Est-ce que myColorNameFieldclass1 est bien le nom du textfield?
  • Est-ce que colorNames(i) est bien dans le scope de ta mthode? (dfini dans la mthode, ou une proprit de la fentre parent)

oui c’est bien le nom du control dans le “layout” du containerControl

c’est un tableau dans un module, mais mme si je fais: (et ce que j’aurais du faire d’ailleurs)

myContainers(i).ColorNameFieldclass1.text = Module1.colorName(i)

l’erreur est toujours l. Elle concerne la premiere partie (en bold ):
myContainers(i).myColorNameFieldclass1.text = colorName(i)

Bon j’ai trouv une solution de dpannage:
Je recupre “i” en debut de boucle je le colle dans une variable dans mon module:

[code]dim i,count as integer

count=materialCount-1

for i=0 to count
Module1.countID=i //<--------
dim ctn as new myContainerControl
myContainers.Append(ctn)
dim offset as integer=myContainers.ubound*ctn.Height
ctn.EmbedWithin( scrollingCanvas, 0 , offset )
VerticalScrollBar.Maximum=offset

next[/code]

et je modifie la prioprit “text” dans l’event “open” de la classe du textfield :

event handler open:

me.text = Module1.colorName(Module1.countID)

priori a fonctionne, mais a fait pas trs propre…
Si il y a plus simple ou plus direct, je suis preneur.

crer un constructeur de mycontainercontrol qui a comme paramtre le texte souhait
et utiliser dim ctn as new myContainerControl( i)

Bonjour Jean-Yves

Merci! je regarde comment on fait a.

J’ai une autre question :slight_smile:
Dans le mme “container” j’ai aussi un petit “canvas” et une “checkbox”.
Quand je scroll le canvas qui contient les container, les “textfield” et les “canvas” disparaissent au del des limites du canvas parent sauf les “checkbox” qui passent par dessus et continuent scroller dans la fentre… Un bug des anciennes versions de realBasic?
(la checkbox est bien l’intrieur des limites du container)

J’ai dcoch la proprit “composite” de la fentre et les “checkbox” sont rentres dan le rang !