It has come to my attention while surfing the threads, that there are lots of hidden properties for components that many designers are using. Are there any lists with all of most of the properties? I have filtered through the User Manual's Component list and their associated properties, and while it has a decent amount the common ones, it doesn't have all of them that I have seen on the forum.
Most likely, the properties you’re referring to aren’t explicitly hidden, they’re just inherited. For better of for worse, every graphical element in Java Swing inherits from the base JComponent class, which itself inherits from the even-older AWT’s Component class. Both have a long laundry list of properties, many of which aren’t really applicable in Ignition, unless you’re doing deep customization. Documentation for lower level object properties is available via Javadocs, ie: https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JComboBox.html for the class behind the ‘PMIComboBox’, which is the actual underlying Java class for the ‘Dropdown List’ component in Vision.
@PGriffith provided some good background but the question is still open:
"Are there any lists with all or most of the properties [of a given Ignition object/component?"
I read and searched the Java doc and also searched the Container doc looking for some insight into these unbrowsable properties. Alas, no list of properties, inherited or explicit, is in those documents.
So, how might we discover the proper names and paths of these unbrowsable properties?
Here's an example:
A container has four properties that don't appear on a property browser tree:
position.X (made up because I don't know the path or property name)
position.Y (ditto)
size.width
size.height
Without these four properties, the GUI wouldn't be able to render the container object/component, so we know they all exist.
You can query the size properties and display their values with this script (driven by an event like a mouse click on the object):
What are you actually trying to achieve that you think will be served with "a list of all properties of a given component"?
Position and size are extra complicated because of the relationship between the "design time" size of windows and the scaled actual size in the running client.
If you're looking to do programmatic manipulation of component position or dimensions, use the system.gui.transform function.
If you truly want a list of all properties for a given object instance, try:
Thank you, @PGriffith. Especially for the immediate reply.
That depends on the properties and methods available. The first step is discovering what they are. The Method and Property browser in VBA is supremely helpful when construction a given solution. Excel objects, for example, have extremely nonobvious methods and properties.
The only things that are supported to interact with are already exposed via the property browser and/or the binding dialogs (there are some properties you can bind to, but not interact with via the property browser).
There's not really anything I can think of that's obscured from you for any reason other than a select few legacy property renames/removals for backwards compatibility/bug fix reasons.
When working "under the hood" and well past the guardrails set up by a product developer, one always runs the risk of something breaking when an update is released.
Best advice is to use native controls whenever possible and incrementally shift to more exotic solutions. In rough order, these might be:
Configure a component
Add an expression
Employ a simple script
Use standard system calls in a script
Throw caution to the wind and programatically modify unsupported parameters