Form Configuration File [Properties] Section

The [Properties] section lists the complete set of properties that the form uses and publishes; that is, the properties it creates in its custom messages that MAPI client applications can use when displaying columns, filtering contents tables, setting up search-results folders, and so on. Each entry in this property list references a subsequent [Property.string] section as shown following.

[Properties]
Property.
string = string

The format of a [Property.string] section is:

[Property.string]
Type
= integer
NmidPropset = guid
NmidString = string
NmidInteger = integer
DisplayName = string
Flags = integer
SpecialType = 0|1
Enum1 = string

Each [Property.string] section describes a single property. The Type entry specifies the MAPI property type, for example 3 (PT_I4), of the property. The NmidPropset entry is optional; together with either the NmidString entry or the NmidInteger entry, the NmidPropset entry gives the name of the property. NmidString gives the name of the property, while NmidInteger gives the identifier of the property. NmidString and NmidInteger are mutually exclusive.

If set, NmidPropset should contain the name of the property set; if absent, NmidPropset is set to a default based on the following rule: If NmidInteger is present and its value is less than 0x8000, NmidPropset is set to PS_MAPI. If the value of NmidInteger is set to an integer greater than 0x8000, or if it is absent, NmidPropset is set to PS_PUBLIC_STRINGS.

The DisplayName entry contains the label for the property. The SpecialType entry, if present and nonzero indicates that this property is a special property. At present, the only special property type defined is SpecialType = 1, which indicates string enumerated properties. If SpecialType is set to 1, the Enum1 entry references the [Enum1.string] section.

Following is an example of a [Properties] section and a [Properties.string] section.

[Properties]
Property.1 = Fire Hazard
Property.2 = Safe
 
[Property.Fire Hazard]
Type = 1
NmidPropSet = {E47F4480-8400-101B-934D-04021C007002]
NmidString = FireHazard
DisplayName = Fire Hazard
SpecialType = 1
Enum1 = HazardEnum
 

The Enum1 entry in the preceeding example references to a subsequent [Enum1.string] section describing an enumeration of a particular type. Such an enumeration associates the first property in the [Property.string] section with an integer property, called the index. Such an enumeration also contains a list of the possible values that the display-index pair can assume. Specifying a property type for the enumeration is unnecessary because by definition an Enum1 entry always has the PT_I4 type. The format for the [Enum1.string] section is:

[Enum1.string]
NmidPropset = guid
NmidString = string
NmidInteger = integer
EnumCount = integer
Val.integer.Display = string
Val.integer.Index = integer

The following is an example property definition for an enumerated property named Fire Hazard with possible values of Low, Medium, and High.

[Properties] 
Property1 = Fire Hazard 
 
[Enum1.HazardEnum] 
IdxNmidPropset={E47F4480-8400-101B-934D-04021C007002] 
IdxNmidString=FireHazardEnum 
EnumCount = 3 
Val.1.Display = Low 
Val.1.Index = 1 
Val.2.Display = Medium 
Val.2.Index = 2 
Val.3.Display = High 
Val.3.Index = 3 
 

[Enum1.string] sections can be used by applications for two purposes: to speed up the filtering of properties by using the index rather than the string and to sort by a different order than the alphanumeric order of the string values. For example, sorting could be done based on Low-Medium-High order rather than High-Medium-Low order.