I have a bunch of objects in a view, and one of the labels has its visible property set to false. When I'm in the designer and dragging the mouse to select all the objects in that view, all the visible objects in the selection area are given an orange outline of their extents. However, the invisible label does not get an orange outline. But .. (and here is the crux of the matter) .. when I release the mouse button, the invisible object is shown as selected in the list of objects in the view.
Shouldn't the invisible objects still get an orange outline when being selected? Because if they don't, you can only see if you actually select them after you have released the mouse button, and have looked at the list of objects.
Maybe the invisible objects do get an orange outline...but those too are invisible. Just kidding. I think it is a rendering issue. I would rely on the list of objects to select/deselect things.
I hadn't thought about the border being invisible because the object was. I think you may be on to something .. lol
However, It's a bit disconcerting when you are selecting with the mouse and you know there should be an object there, but just doesn't show up until after the fact. I was scratching my head for a bit wondering if I had deleted that object.
I also find the "Visible" property hiding things from selection is frustrating. What we did on our last project was not use the VISIBLE property to control display, but instead added the "Opacity" style property. Set to 0 make component invisible, and 1 to make visible. This way you can still click to select the component (if you know where it is on the screen) even if it is "hidden".
I dislike the way invisible items are handled. All items should be visible and be able to be interacted with in development mode. Otherwise things get missed. The way it is now is a pain. Sometimes I need to see what is there, and the boxes just show where it is, not what it is. Implement layers for the dev screen to keep them separate if you must. Most HMI developers are already used to dealing with stacked controls in development.
I think having screens in the designer that are so close to what it actually looks like is one of the major advantages of ignition over its competition. What you see really IS what you get.
The project browser shows everything, and if you named things properly there's no reason you can't find whatever you want in there, even if it's actually invisible.
That's the one pain point with invisible things: They make reordering components really hard.
The solution is simple though: Make them visible, drag stuff around, make them invisible again.
I agree that it could be better, but it's not causing me headaches.
That is what preview mode is for. In development I need to see everything and be able to work with everything without having to toggle visibility properties all the time.
I try to avoid having many different things on single windows or views. If I find that I want something to "appear" in a particular circumstance then I usually make a pop-up. I avoid having displays that "morph" their context.
Create a custom property, either at the session level or the root container level, which is true for "development view", or that using an expression binding with what ever other logic is used to "toggle" the visibility. Then if you want everything to be visible, you have a single place where you can toggle all visibility.
This is not a struggle for me at all. In the very few exceptions where I do have invisible components I find that anything I would want to do is accessible from clicking in the project browser.
thats how we do it.
We use the [System]Client/System/SystemFlags
Tag for visible bindings in an OR || to the bindings.
1 = In Designer
2 = In Designer Preview Mode.