Hello Jakub,
the cells seem to work - so far I understand what you try to achieve. When changing the text in a cell, the Text view as well as the surrounding cell component adjust their width automaticaly and a signal is sent to OnForceWidth. The new width seems to be correct also. Do you observe the same?
The problems begin when we try to adjust the width of all other cells. In this case the size of the respective cell as well as the embedded Text view is adjusted to the new width. The implementation is found in the method ForcedWidth:

The problem here is, the Text view is configured with AutoSize = true. It reacts thereupon to this size alternation (see the highlighted text row above) and after short delay (after reparsing the text again internally) it adjusts its size back to its actual text content. It also sends a signal to the associated OnTextUpdate slot method. This method again restores the size of the cell to match the actual content of the Text view.
I think, this approach will not work unless you enable/disable the AutoSize depending on whether the cell should adjust its size its 'own' content or to the of other cells. This makes the implementation even more complex.
What can you do? I would implement a layout algorithm which works in two steps and does not rely on the AutoSize property:
- In the first step: iterate over all strings you want to display in the table and for each string calculate its pixel width. Use the methods of the Resources::Font class for this purpose. The method GetTextAdvance() could be the adequate one for this application case.
- While you iterate over the strings track the max. width.
- In the second step: Once all strings are processed iterate again over the cells and adjust their Bounds properties to the estimated max. width. By the way you can also arrange the cells side by side, etc. depending on your desired layout.
Does it help you further?
Best regards
Paul Banach