You can copy and paste the following code to any component in which you want to use property sheets containing picklists. The code creates the collection of picklists and picklist items as well as the subroutines for adding picklists and items to the collections.
Put the following definitions in the beginning of your component:
* Pick list and pick list item definitions for the property sheet
* pick list counter (index)
DEFINE_COM class(#STD_COUNT) name(#CUR_PLIST)
* pick list item counter (index)
DEFINE_COM class(#STD_COUNT) name(#CUR_PITEM)
* collection of pick lists (shown inside the property sheet)
DEFINE_COM class(#PRIM_KCOL) name(#PL_COL) collects(#PRIM_PKLT) keyedby(#STD_COUNT)
* collection of pick list items
DEFINE_COM class(#PRIM_KCOL) name(#PI_COL) collects(#PRIM_PKIT) keyedby(#STD_COUNT)
Put these two subroutines after all the DEFINE_COM statements in your component:
* Add new picklist
SUBROUTINE name(ADD_PLIST)
* give the new pick list an index number
CHANGE field(#CUR_PLIST) to('#Cur_PList + 1')
ENDROUTINE
* Add new picklist item
SUBROUTINE name(ADD_PITEM) parms((#PROPERTY *RECEIVED) (#VALUE *RECEIVED))
* give the new pick list item an index number
CHANGE field(#CUR_PITEM) to('#Cur_PItem + 1')
* Set the caption and the value of the item plus assign it into the picklist
SET com(#PI_Col<#Cur_PItem>) caption(#property) default(True) value(#value) parent(#PL_COL<#Cur_PList>)
ENDROUTINE