Sorted Dictionary Collection (PRIM_SDCO)

Unordered collection of unique component pairs typically used to associate objects with each other

Ancestors - Collection (PRIM_COLL) Object (PRIM_OBJT)

Details

Dictionary collections are an unordered sequence of key-value component pairs with no duplicates of the key.
 
A dictionary collection is keyed by an instance of an object type, giving each collection item a unique identifier.
 
When an item is added to the collection, the Compare event is fired as often as required to allow a user defined sort to be evaulated.

Examples

Defining a dictionary collection. This collection stores instances of layout items identified by a control.
Define_Com Class(#Prim_dcol<#Prim_tblo #Prim_ctrl>) Name(#LayoutItems)
Collection items can be created by assigning them to an existing reference or creating a new one as below.
#LayoutItems<#Button1> <= (*New #Prim_TBLO)
Collection items can be accessed using any object type that inherits from the class specified as the key.
#LayoutItems<#Button1>.Manage <= #Button1
All collection items can be addressed as follows. Here, all the layout items are being assigned a parent.
#LayoutItems<>.Parent <= #LayoutManager
The FOR command can also be used to iterate over the collection contents. The items will be returned in the order of the key value, which in this case is effectively the memory address of the key.
For each(#LayoutItem) in (#Layoutitems)
   ...
Endfor
To monitor for an event from any instance in the collection, <> can be appended to an EVTROUTINE. The COM_SENDER parameter will provide access to the instance firing the event.
 
In this example, the closing event on a collection of forms is monitored and an event recorded.
Evtroutine Handling(#Forms<>.Closing) Com_Sender(#Sender)
 
   #Com_owner.AddEvent(("&1 closed").Substitute(#Sender.Caption))
 
Endroutine

Properties

NameDescription
AllowsDuplicatesAllowsDuplicates indicates whether the collection allows duplicates Inherited from Collection (PRIM_COLL)
CollectsThe class of object to be collected
ComponentClassNameComponentClassName is the name of the component's class. Inherited from Object (PRIM_OBJT)
ComponentMembersComponentMembers provides access to all the member components of this component Inherited from Object (PRIM_OBJT)
ComponentPatternNameComponentPatternName is used to qualify the class of the component. Inherited from Object (PRIM_OBJT)
ComponentTagGeneric space allowing a value to be stored for the instance Inherited from Object (PRIM_OBJT)
ComponentTypeComponentType gives you access to the type information about the component Inherited from Object (PRIM_OBJT)
ComponentTypeNameComponentTypeName is the fully qualified name of the component's class. Inherited from Object (PRIM_OBJT)
IsEmptyIsEmpty indicates whether the collection contains any items. Inherited from Collection (PRIM_COLL)
IsOrderedIsOrdered indicates whether the collection is ordered. Inherited from Collection (PRIM_COLL)
ItemProvides access to a particular item in a collection
ItemCountItemCount is the number of items in a collection Inherited from Collection (PRIM_COLL)
KeyedByKeyedBy specifies the field used to identify a form instance
KeyOfKeyOf returns the key of an item in a collection
NameName identifies the component Inherited from Object (PRIM_OBJT)
OwnerOwner owns this component Inherited from Object (PRIM_OBJT)
ParentThe component instance to which this instance is attached. The visual container for a control or the collector of a set of child instances Inherited from Object (PRIM_OBJT)

Events

NameDescription
CompareCompare is triggered when two key components need to be compared
Object, Subject, Result
CreateInstanceCreateInstance is signalled when an instance of a component is created Inherited from Object (PRIM_OBJT)
DestroyInstanceDestroyInstance is signalled when an instance of a component is about to be destroyed Inherited from Object (PRIM_OBJT)

Methods

NameDescription
CalculateHashCalculateHash calculates a hash value Inherited from Collection (PRIM_COLL)
Result, Value
ContainsDoes the supplied instance exist in the collection?
Result, Key
ContainsItemContainsItem looks for an item in a collection
Result, Item
CreateAccessorCreateAccessor creates an accessor component that provides read-only access to the collection
Result
CreateIteratorCreateIterator method creates an iterator component that enables iteration through the collection
Result
FindFind method returns a reference to a item in a collection
Result, Key
InsertInsert adds an item to a collection
Result, Item, Key
RemoveRemove method removes an item
Result, Key
RemoveAllRemoveAll removes all items in the collection

See also

All Component Classes

Technical Reference

Febuary 18 V14SP2