Vision object - invisible when quality is bad

I have a vision window that is parameterized. There are a few values that don’t exist in some of the PLC’s. I’m trying to make them invisible when the quality is bad. The only way I found to to this is to use an expression on the visible property:

if(tag({Root Container.tagPath} + '/tagName.Quality') = 'Good', True, False)

I also have read on this forum that using the expression tag() is not a good idea. Since this object is already bound to the tag value and the object shows that the binding is not good quality, can I use the object’s quality to make the object not visible instead of using the tag quality?

I’ve tried several things and not come up with the magic answer. I’m hoping someone has this figured out already.

Add a custom property to the object, and add an indirect tag binding to it. Pass the Root Container.tagPath property into it. That'll give you a live property with a quality associated with it.

Make the binding on your visible property: isGood({path/to/myComponent.customProperty}).

Depends on if you want to hide the values whenever they are bad, or only if the tag path cannot be found.

// only hide when the tag path does not exist, 
// and not when the value is just bad
qualityOf({Root Container.Button.testBinding}) != 519

Paul,

Is this a better way? It seems a lot of overhead will go into this when I have about 30 tags that I want to check. Is there not a way to look at the quality that is already in the object’s properties?

What do I cbind the custom Property to? tagPath.quality?

Unfortunately there's a bug with the quality property on components in Vision, so "downstream" bindings that pay attention to the quality don't work consistently.

The custom property would be an indirect tag binding - I'm assuming {Root Container.tagPath} is a string property containing the tag path. You need the indirect tag binding to replace your tag() expression in your first example, and give you back a real quality reference (automatically; reading tags creates a "qualified value" object - no need to reference the quality property directly).