Adding Custom Properties in the Form Designer
Published 08 JAN 2020 at 12:04:15PM
User-defined properties ("UDPs") have always been supported at run-time in OpenInsight by giving the desired property a name prefixed with an "@" symbol and then setting a value for it, e.g:
Call Set_Property( CtrlEntID, "@MYPROP_1", "SomeVal" ) Call Set_Property( CtrlEntID, "@MYPROP_2", "SomethingElse" ) Value = Get_Property( CtrlEntID, "@MYPROP_1" ) // etc...
With the upcoming release of version 10.0.8, design-time support for these has been added in the Form Designer via the new "CustomProperties" property. This is simply a list of UDP property names and values that can be specified and stored in the Form definition record, which are then processed during form creation to create UDPs that can be accessed in the normal way by Get_Property and Set_Property.
For example, if you enter a couple of custom properties in the Form Designer called MYPROP_1 and MYPROP_2:
[caption id="attachment_2927" align="aligncenter" width="561"] Editing the CustomProperties property[/caption]
You may then use these with Get_Property and Set_Property at runtime, by referencing them with an "@" prefix (i.e. "@MYPROP_1" and "@MYPROP_2") like so:
// Value will contain "SomethingElse" Value = Get_Property( CtrlEntID, "@MYPROP_2" )
Two things to note:
1) You don't need to specify an "@" prefix for the property name in the CustomProperties editor, and
2) You are not limited to simple strings when entering CustomProperties values - you may also use the standard "[,]" syntax for entering dynamic arrays just like you would for QuickEvent parameters:
E.g. to enter an @fm-delimited array you enclose the list of items in '[]' brackets, and delimit them with a comma like so:
An array like this: <1> ItemOne <2> ItemTwo Can be entered as: ['ItemOne','ItemTwo']
Note that each array item must be single-quoted, but you can escape a quote in the data by using two single quotes, e.g.
An array like <1> ItemOne <2> ItemTwo's Stuff Can be entered as: ['ItemOne','ItemTwo''s Stuff']
For arrays with lower-level delimiters like @vm and @svm you add a set of nested ''[]' brackets for each level, e.g:
An array like: <1> ItemOne <2,1> ItemTwo_A <2,2> ItemTwo_B <2,3,1> ItemTwo_C_1 <2,3,2> ItemTwo_C_2 <3> ItemThree Can be entered as: ['ItemOne',['ItemTwoA','ItemTwoB',['ItemTwo_C_1','ItemTwo_C_2']],'ItemThree']
And so on.
Hopefully you find this new feature useful and help to reduce the amount of code you need to write.