This is a strange rendering behavior on Windows where setting a Window’s HasBackgroundColor property to True changes how child controls inside Containers and Canvases are drawn.
The Setup: I have a Window with three sets of identical controls:
A Label (Transparent = True). A TextField (Transparent = True, HasBorder = False). A TextField (Transparent = True, HasBorder = False, BackgroundColor = &c666666).
These sets are placed directly on the Window, inside a DesktopContainer, and inside a DesktopCanvas.
I am comparing two states (see attached screenshots):
HasBackgroundColor_False.png (First screenshot): Default window settings. HasBackgroundColor_True.png (Second screenshot): The only change is the following code in the Window’s Opening event:
me.HasBackgroundColor = True
me.BackgroundColor = &cAAAAAA
Observed Issues:
In DesktopContainer:
Labels: They ignore the Transparent property (appearing with a default white background) unless Window.HasBackgroundColor is set to True. TextFields: They draw a border despite HasBorder = False unless Window.HasBackgroundColor is set to True.
In DesktopCanvas:
Both Labels and TextFields fail to respect transparency and border settings regardless of the Window’s HasBackgroundColor state. They always render with backgrounds and borders.
Conclusion: It seems that the rendering engine requires HasBackgroundColor = True at the window level to correctly calculate transparency for nested controls in a Container, but it fails completely when those controls are inside a Canvas.
It feels like a bug in how rendering is handled on Windows.
And this is the example project: https://appdeco.ar/apps/labelBGcolor.xojo_binary_project

