Skip to main content
BParh.1
Senior III
June 29, 2021
Question

How can we iterate containers inside a container (i.e. nested container)

  • June 29, 2021
  • 1 reply
  • 780 views

Suppose I create a container called 'containers' which has further other containers called container1, container2 and container3.

Now how can I iterate the inside containers from the outer container? Is it even possible in TouchGFX?

My intention is to control whether to set particular container visible or invisible.

This topic has been closed for replies.

1 reply

Alexandre RENOUX
Visitor II
July 8, 2021

Hi BParh.1,

This one is a bit tricky but here is a code example :

void Screen1View::containerIterate()
{
 Drawable* d = topContainer.getFirstChild(); // get the first child inside your top container. This child is also a container.
 // Important to notice that d is a Drawable so you need to cast it to the widget type you need. See below with the Box widget
 while (d) // loop through the Drawables
 {
 // Here we just have some Box inside a (child)container that we set in Black as an example. But you can have other widgets inside your (child)container
 Box* boxChild;
 boxChild = (Box*)d->getFirstChild();
 boxChild->setColor(Color::getColorFromRGB(0x00, 0x00, 0x00));
 d = d->getNextSibling(); // This is how you can get the next child inside the top container
 }
 topContainer.invalidate(); // Do not forget to invalidate
}

For your specific request, that is to control if a container is visible or not, here is the code sample :

void Screen1View::containerIterate()
{
 Drawable* d = topContainer.getFirstChild();
 while (d)
 {
 d->setVisible(!d->isVisible());
 d = d->getNextSibling();
 }
 topContainer.invalidate();
}

Hope it helps,

/Alexandre