#$KDialog Overview
	Msi Objects	Database Tables
The following dialog types are defined by the Microsoft Installer.

Dialog Types
Browse
Standard

Some special purpose dialogs require some communication among the controls of the dialog or some other special handling. The following list contains some of the more common cases. These pages may be used to author these dialogs as well as hints how to compose some more complicated dialogs.
Special Dialogs
Browse Dialog
Cancel Dialog
DiskCost Dialog
Error Dialog
Exit Dialog
FatalError Dialog
FilesInUse Dialog
LicenseAgreement Dialog
Selection Dialog
UserExit Dialog

Different attributes of a dialog can be read or set using the Attribute method.
Dialog Attributes
AddingControls
Argument
ClientRect
ControlsCount
ControlsKeyInt
ControlsKeyString
ControlsNext
ControlsPrev
ControlsProperty
CurrentControl
DefaultButton
Error
EventInt
EventString
FullSize
HasControls
Height
InPlace
KeepModeless
KeyInt
KeyString
Locked
Modal
Palette
Position
Preview
RefCount
Running
Showing
Text
ToolTip
UseCustomPalette
Width
WindowHandle
X
Y

At the time of the creation of a dialog several attributes can be selected by setting certain Style bits.
Dialog Style Bits
Browse = 131072 (0x0002000)
Error = 65536 (0x00010000)
KeepModeless = 16 (0x00000010)
Minimize = 4 (0x00000004)
Modal = 2 (0x00000002)
TrackDiskSpace = 32 (0x00000020)
UseCustomPalette = 64 (0x000040)
Visible = 1 (0x00000001)

#$KControl Overview
	Msi Objects	Database Tables
The following control types are defined by the Microsoft Installer. The controls are divided into two major groups. The Active Controls are linked to some property. These controls are authored with some property. When the control is created it shows the initial value of the property. The user can change the value of the property by interacting with the control. The Inert Controls are not linked to a property, they change no property value.
Inert Controls
Billboard
Bitmap
GroupBox
Icon
ProgressBar
PushButton
ScrollableText
Text
VolumeCostList

Active Controls
CheckBox
ComboBox
DirectoryCombo
DirectoryList
Edit
ListBox
ListView
MaskedEdit
PathEdit
RadioButtonGroup
SelectionTree
VolumeSelectCombo

Different attributes of a control can be read or set using the Attribute method.
Control Attributes
BillboardName
Bitmap
ClientRect
Default
Enabled
HasBorder
Height
Help
Icon
Image
ImageHandle
Indirect
IndirectPropertyName
Integer
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsX
ItemsY
KeyInt
KeyString
Limit
OriginalValue
Position
Progress
PropertyName
PropertyValue
PushLike
RefCount
Sunken
Text
Transparent
Visible
Width
WindowHandle
X
Y

At the time of the creation of a control several attributes can be selected by setting certain Style bits.
Control Style Bits
Bitmap = 262144 (0x00040000)
CDROMVolume = 524288 (0x00080000)
ComboList = 131072 (0x00020000)
Enabled = 2 (0x00000002)
FixedSize = 1048576 (0x00100000)
FixedVolume = 131072 (0x00020000)
FloppyVolume = 2097152 (0x00200000)
HasBorder = 16777216 (0x01000000)
Icon = 524288 (0x00080000)
IconSize 2097152 (0x00200000),  4194304 (0x00400000)
ImageHandle = 65536 (0x00010000)
Indirect = 8 (0x00000008)
Integer = 16 (0x00000010)
Progress95 = 65536 (0x00010000)
PushLike = 131072 (0x00020000)
RAMDiskVolume = 1048576 (0x00100000)
RemoteVolume = 262144 (0x00040000)
RemovableVolume = 65536 (0x00010000)
Sorted = 65536 (0x00010000)
SplitPath =  33554432 (0x02000000)
Sunken = 4 (0x00000004)
Transparent = 65536 (0x00010000)
Visible = 1 (0x00000001)

#$K+ControlEvent Overview
	Msi Objects	Database Tables
Controls on the same dialog can communicate with each other by means of ControlEvents.
Each ControlEvent has one publisher (a control or the Handler) and can have several subscribers. The kind of ControlEvents published by a control are determined by the type of the control. On the other hand theoreticaly any control can subscribe to any ControlEvent, although many combinations are not practical. 
A control can subscribe to a ControlEvent two ways.
If a control is listed in the EventMapping table with a ControlEvent, it describes that when the ControlEvent is published, which attribute of the control has to be changed.
If a control is listed in the ControlEvent table with a ControlEvent, it means that activating the control (pushing the button) will trigger a ControlEvent with the described argument.
A custom control can publish its own ControlEvents and other controls (custom or regular) can subscribe to them.
The publisher of a ControlEvent can hide/show or enable/disable its subscribers when its state requires it.
It is perfectly reasonable to have a control on a dialog that publishes some ControlEvent but have no subscribers to it. On the other hand if a control subscribes to a ControlEvent that is not published by the Handler and no publishing control is present on the same dialog, it may result in an error (especially if the control tries to trigger that event).
The Following ControlEvents Are Currently Supported
ActionData
ActionProgress
ActionText
AddLocal
AddSource
CheckExistingPath
CheckExistingTargetPath
CheckPath
CheckTargetPath
DirectoryComboPath
DirectoryListNew
DirectoryListPath
DirectoryListUp
EndDialog
NewDialog
Reinstall
ReinstallMode
Remove
Reset
SelectionAction
SelectionBrowse
SelectionDescription
SelectionIcon
SelectionPath
SelectionPathOn
SelectionSize
SetInstallLevel
SetPath
SetTargetPath
SetProperty
SpawnDialog
ValidateProductID

#$K+Billboard Control
	Msi Objects	Database Tables
This control plays the billboards based on progress messages. The billboards are composed of individual controls that are added and later removed from the dialog.
Property
There can be no property associated with this control.
Valid Style Bits
None.
Valid Control Attributes
BillboardName
ClientRect
Height
Help
KeyInt
KeyString
Position
RefCount
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None
Can Take Focus
No

Windows Implementation
This control has no window of its own.
#$K+CheckBox Control
	Msi Objects	Database Tables
This control is a simple two state check box. If the CheckBox table  exists and specifies a value for the property associated with the checkbox, the property is set to this value when the checkbox is on, to null otherwise. If there is no such table, or it does not specify a value for this property, but the associated property has an initial value, the control remembers it and initaly drawn as selected. When the control is unchecked, the property is set to NULL. If the check box is rechecked, it returns to its original value. If the property does not have an original value, it is set to "1" when the control is checked.
Property
The property associated with this control can be integer or string valued.
Valid Style Bits
Bitmap
Enabled
FixedSize
Icon
IconSize
ImageHandle
Indirect
Integer
PushLike
Sunken
Visible

Valid Control Attributes
Bitmap
ClientRect
Default
Enabled
Height
Help
Icon
Indirect
IndirectPropertyName
Integer
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
PushLike
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None
Can Take Focus
Yes

Windows Implementation
The control is created with the "BUTTON" class.
It has the BS_CHECKBOX, WS_TABSTOP, WS_GROUP, WS_CHILD and BS_MULTILINE styles.
If the PushLike style is set it has the BS_PUSHLIKE style.
If the Bitmap style is set it has the BS_BITMAP style.
If the Icon style is set it has the BS_ICON style.

#$K+ComboBox Control
	Msi Objects	Database Tables
This control is a dop down combo box with an edit field. It makes possible to list a predefined list of values and also allows for the user to enter some new value. It reads the possible values from the ComboBox Table. If the sorted style is set, the items are displayed according the Ordering column of the table. If the style is not set, that column is ignored and the items are displayed in alphabetical order.
The length of the text that can be entered can be limited by putting a number from 0 to 2147483646 in curly braces at the beginning of the Text field in the Control Table. For example if the text field starts with {80}, the length of the string is limited at 80 characters. If no such limit is supplied in the table, or if 0 is specified,the length is set to the maximum possible (2147483646 characters). A negative or non-numerical value will generate an error.
Property
The property associated with this control can be integer or string valued.
Valid Style Bits
ComboList
Enabled
Indirect
Integer
Sorted
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
Integer
ItemsCount
ItemsText
ItemsValue
KeyInt
KeyString
Limit
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None
Can Take Focus
Windows: Yes

Windows Implementation
The control is created with the "COMBOBOX" class with the CBS_AUTOHSCROLL, WS_TABSTOP, WS_GROUP, WS_CHILD styles. If the ComboList style bit is on, it also has the CBS_DROPDOWNLIST style, otherwise it has the CBS_DROPDOWN style.
If the Sorted style is set, it also has the CBS_SORT style.
#$K+DirectoryCombo Control
	Msi Objects	Database Tables
This is a special control designed for use on a browse dialog. It is designed to be used with a PathEdit and DirectoryList control on the same dialog. It lets the user select the main part of a path (everything except the last segment). It displays the available volumes in an alphabetical order and the steps of the currently displayed path in a hierarchical way. If the main part of the currently selected path contains any folders that are not existant at present time, those are displayed with a different icon. The property associated with this control has to have an initial value, and this value has to contain at least two steps (a volume and at least one level below). The selection of the initial style bits determines what kind of volumes are listed.
Property
The property associated with this control can be only string valued. 
Valid Style Bits
CDROMVolume
Enabled
FixedVolume
FloppyVolume
Indirect
RAMDiskVolume
RemoteVolume
RemovableVolume
SplitPath
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
DirectoryComboPath
Can Take Focus
Windows: Yes

Windows Implementation
The control is created with the "COMBOBOX" class with the CBS_DROPDOWNLIST, CBS_OWNERDRAWFIXED, CBS_HASSTRINGS, WS_CHILD, WS_GROUP, WS_TABSTOP and WS_VSCROLL styles.

#$K+DirectoryList Control
	Msi Objects	Database Tables
This is a special control designed for use on a browse dialog. It is designed to be used with a PathEdit and DirectoryCombo control on the same dialog. It shows the user the folders below the main part of a path (everything except the last segment). It displays the folders below the main part of the currently selected path. If the list contains any folders that are not existant at present time, those are displayed with a different icon. The property associated with this control has to have an initial value, and this value has to contain at least two steps (a volume and at least one level below).  The primary goal of this control is to let the user select a subfolder of the current selection. With some additional buttons it also lets the user select a new phantom folder in current selection or step up one step in the path. If the user hits the create new folder button in folder where there is a phantom folder already, this folder is selected for editing instead of creating a second phantom folder. 
Property
The property associated with this control can be only string valued.
Valid Style Bits
Enabled
Indirect
SplitPath
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
DirectoryListNew
DirectoryListPath
DirectoryListUp

Can Take Focus
Windows: Yes

Related Strings in the UIText Table
NewFolder The default name of a newly created folder.
Windows Implementation
The control is crated with the WC_LISTVIEW class with the LVS_LIST, LVS_EDITLABELS, WS_VSCROLL, LVS_SHAREIMAGELISTS, LVS_AUTOARRANGE, LVS_SINGLESEL, WS_BORDER, LVS_SORTASCENDING, WS_CHILD, WS_GROUP, WS_TABSTOP styles.

#$K+Edit Control
	Msi Objects	Database Tables
This is a regular edit field. The user can enter any string or integer. If the associated property is integer valued it accepts only integer entries (not yet implemented). The length of the text that can be entered can be limited by putting a number from 0 to 2147483646 in curly braces at the beginning of the Text field in the Control Table. For example if the text field starts with {80}, the length of the string is limited at 80 characters. If no such limit is supplied in the table, or if 0 is specified,the length is set to the maximum possible (2147483646 characters). A negative or non-numerical value will generate an error.
Property
The property associated with this control can be string or integer valued.
Valid Style Bits
Enabled
Indirect
Integer
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
Integer
KeyInt
KeyString
Limit
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Yes

Windows Implementation
The control is created with the "EDIT" class with the WS_BORDER, WS_CHILD, WS_TABSTOP, WS_GROUP styles.

#$K+MaskedEdit Control
	Msi Objects	Database Tables
This is a masked edit field control. The mask is contained in the text field of the control. The syntax of the mask is the following:
# 	digit that is not part of the checksum
% 	digit that is part of the checksum
@	randomized digit, should not appear in the visible part of the template
=	digit, that is displayed in the UI as a digit followed by a dash, in the property returned by the UI it is replaced by the but will be replaced by a dash during validation. There can be only one such character in the template and it must follow a  # or a %.
^	letter that is forced to upper case during validation
&	letter, can be upper or lower case
?	alpha-numeric character
<	left end of the visible segment of the template. This character and everything to its left is hidden in the UI. The character is replaced by a dash during validation. There should be at most one of this character in the template.
>	right end of the visible segment of the template. The character and everything to its right is hidden in the UI. The character is replaced by a dash during validation. There should be at most one of this character in the template.
Any other character is treated as a literal constant.
For the characters that can be edited the control creats separate edit windows. (one window for each block of contiguous characters of the same kind.) 
Property
The property associated with this control can be only string valued.
Valid Style Bits
Enabled
Indirect
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Yes

Windows Implementation
The control creates one parent window of the "BUTTON" class with the BS_OWNERDRAW and WS_EX_CONTROLPARENT styles. It creates several child windows to this window:  for the constant text parts it creates "STATIC" windows with the SS_LEFT and WS_CHILD styles. For the editable fields it creates an "EDIT" window with the WS_CHILD, WS_BORDER and WS_TABSTOP styles. In case of a numeric field the window also has the ES_NUMBER style.

#$K+ListBox Control
	Msi Objects	Database Tables
This is a regular listbox control. It enables the user to select a value of a property from a pre-authored list of choices. This control supports only single select listboxes. The possible values are read from the Listbox Table. Note that the string displayed is not necessarily the same as the value that the user is choosing. If the control is created with the Sorted, the items are listed according to the Ordering column of the table. If the style bit is not set, the column is ignored.
Property
The property associated with this control can be string or integer valued.
Valid Style Bits
Enabled
Indirect
Integer
Sorted
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Icon
Indirect
IndirectPropertyName
Integer
ItemsCount
ItemsText
ItemsValue
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Yes

Windows Implementation
The control is created with the "LISTBOX" class.
If the Sorted style bit is on, the control is created with the LBS_NOTIFY, WS_VSCROLL, WS_BORDER styles, otherwise with the LBS_STANDARD style. It also has the WS_TABSTOP, WS_GROUP, WS_CHILD styles.
#$K+ListView Control
	Msi Objects	Database Tables
This is a listview control displaying a single column of values with an icon next to each item. It enables the user to select a value of a property from a pre-authored list of choices. This control supports single select listviews only. The possible values are read from the ListView Table. Note that the string displayed is not necessarily the same as the value that the user is choosing. If the control is created with the Sorted, the items are listed according to the Ordering column of the table. If the style bit is not set, the column is ignored.
Property
The property associated with this control can be string or integer valued.
Valid Style Bits
Enabled
FixedSize
IconSize
ImageHandle
Indirect
Integer
Sorted
Sunken
Visible

Valid Control Attributes
ClientRect
Enabled
Height
Help
Indirect
IndirectPropertyName
Integer
ItemsCount
ItemsText
ItemsValue
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: Yes

Windows Implementation
The control is created with the WC_LISTVIEW class with the LVS_REPORT, LVS_NOCOLUMNHEADER, WS_VSCROLL, WS_HSCROLL, LVS_SHAREIMAGELISTS, LVS_SINGLESEL, LVS_SHOWSELALWAYS, WS_BORDER, WS_TABSTOP styles.
If the Sorted style bit is not on, the control also has the LVS_SORTASCENDING style.
#$K+PathEdit Control
	Msi Objects	Database Tables
This is a special control designed for use on a browse dialog. It is designed to be used with a DirectoryCombo and DirectoryList control on the same dialog. It lets the user select the path or the tail part of a path (the last segment of the path) depending on if the SplitPath style is set or not. It displays the currently selected folder name or the entire path in an edit field. The property associated with this control has to have an initial value, and if the SplitPath style is on this value has to contain at least two steps (a volume and at least one level below). This control also supports entering a full path in both modes. It first checks if the string enters is a valid path. If it is, it interprets the string as such. If it is not a valid path and the SplitPath style is on, it interprets it as the name of the folder to be selected. One can also enter a UNC path to a drive that has no drive letter associated with it.This control does not let the focus leave if the selection is not valid.
Property
The property associated with this control can be only string valued. 
Valid Style Bits
Enabled
Indirect
SplitPath
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: Yes

Windows Implementation
The control is derived from the Edit control.

#$K+RadioButtonGroup Control
	Msi Objects	Database Tables
This control is a group of radio buttons. It enables the user to select a value of a property from a pre-authored list of choices.  The possible values are read from the RadioButton Table. Note that the string displayed is not necessarily the same as the value that the user is choosing. The implementation treats the whole group as one control, therefore it is not possible to hide or disable individual buttons within the group. Similarly all the buttons have to be of the same style, i.e. either all of them have text or all of them have bitmaps, etc. The position of the buttons is authored relative to the group. This way the entire group can be moved by changeing only the coordinates of the group without changeing the individual buttons. At creation the control verifies that the individual buttons do not extend beyond the boundaries of the group.
If the Bitmap or the Icon style bit is set, the corresponding text entry in the RadioButton Table is taken as a foreign key to the Binary Table that specifies the binary data needed to create the picture on the individual buttons.
This means that the buttons can not have both a picture and a text.
Because of the way Windows draws the frame, there is a gap between the top of the control's window and the visible frame, even when there is no caption.
Property
The property associated with this control can be string or integer valued.
Valid Style Bits
Bitmap
Enabled
FixedSize
HasBorder
Icon
IconSize
ImageHandle
Indirect
Integer
PushLike
Sunken
Visible

Valid Control Attributes
Bitmap
ClientRect
Default
Enabled
HasBorder
Height
Help
Icon
Indirect
IndirectPropertyName
Integer
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsX
ItemsY
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
PushLike
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Yes

Windows Implementation
The group is created using the "BUTTON" class. If the HasBorder style is set, it has the BS_GROUPBOX style, otherwise it has the BS_OWNERDRAW style. 
The individual buttons are created with the "BUTTON" class.
It has the BS_RADIOBUTTON, WS_CHILD, WS_GROUP, WS_TABSTOP, WS_EX_CONTROLPARENT and BS_MULTILINE styles.
If the PushLike style is set they have the BS_PUSHLIKE style.
If the Bitmap style is set they have the BS_BITMAP style.
If the Icon style is set they have the BS_ICON style.

#$K+VolumeSelectCombo Control
	Msi Objects	Database Tables
This is a special control designed to a volume from a list of volumes. It lists the volumes in alphabetical order. The types of controls displayed is determined by the style bits of the control. 
Property
The property associated with this control can be only string valued. 
Valid Style Bits
CDROMVolume
Enabled
FixedVolume
FloppyVolume
Indirect
RAMDiskVolume
RemoteVolume
RemovableVolume
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: Yes

Windows Implementation
The control is created as a"COMBOBOX" with the CBS_DROPDOWNLIST, CBS_OWNERDRAWFIXED, CBS_HASSTRINGS, WS_VSCROLL, WS_CHILD, WS_GROUP, WS_TABSTOP and CBS_SORT styles.

#$K+Bitmap Control
	Msi Objects	Database Tables
This control simply displays a static picture of a bitmap.
Property
There can be no property associated with this control. 
Valid Style Bits
FixedSize
ImageHandle
Visible

Valid Control Attributes
ClientRect
Default
Height
Help
Image
ImageHandle
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
On NT3.51 the control is created as a "BUTTON" with the BS_OWNERDRAW style, on Win95 and NT4 it is created as a "STATIC" with the SS_BITMAP and SS_CENTERIMAGE styles. In both cases it also has the WS_CHILD and WS_GROUP styles.

#$K+Icon Control
	Msi Objects	Database Tables
This control simply displays a static picture of an icon. The background of the image is transparent.
An icon file can contain different size images of the same icon. If the IconSize bits are set, the first image of the specified size is loaded. If no size is specified, the first image is loaded.
If the IconSize bits are not set the FixedSize bit is ignored and the image is stretched to fit the control rectangle.
If both the IconSize bits and the FixedSize bit are set and the control is larger than the icon, the image is centered in the control. If the image is larger than the control it is not chopped (unlike in the Bitmap control) but shrunk to fit the control.
Property
There can be no property associated with this control. 
Valid Style Bits
FixedSize
IconSize
ImageHandle
Visible

Valid Control Attributes
ClientRect
Default
Height
Help
Image
ImageHandle
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
On NT3.51 the control is created as a "BUTTON" with the BS_OWNERDRAW style, on Win95 and NT4 it is created as a "STATIC" with the SS_ICON and SS_CENTERIMAGE styles. In both cases it also has the WS_CHILD and WS_GROUP styles.

#$K+GroupBox Control
	Msi Objects	Database Tables
This control displays a rectangle, possibly with some caption. It only serves as a visual element on the dialog to group other controls together.
Because of the way Windows draws this control, there is a gap between the top of the control's window and the visible frame, even when there is no caption.
Property
There can be no property associated with this control. 
Valid Style Bits
Visible

Valid Control Attributes
ClientRect
Default
Height
Help
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
The control is created as a "BUTTON" with the BS_GROUPBOX, WS_CHILD, WS_GROUP styles.

#$K+ProgressBar Control
	Msi Objects	Database Tables
This control displays a rectangle filling up as it receives progress messages. Typically should subscribe to the ActionProgress control event or a control event whose name matches the name of the action whose progress is gauged. 
Property
There can be no property associated with this control. 
Valid Style Bits
Progress95
Sunken
Visible

Valid Control Attributes
ClientRect
Default
Height
Help
KeyInt
KeyString
Position
Progress
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
The control is created as a PROGRESS_CLASS. It also has the WS_CHILD and WS_GROUP styles. 
#$K+PushButton Control
	Msi Objects	Database Tables
This control displays a basic push button.
If the Bitmap or the Icon style bit is set, the corresponding text entry in the Control Table is taken as a foreign key to the Binary Table that specifies the binary data needed to create the picture.
This means that the button can not have both a picture and a text.
Property
There can be no property associated with this control. 
Valid Style Bits
Bitmap
Enabled
FixedSize
Icon
IconSize
ImageHandle
Sunken
Visible

Valid Control Attributes
Bitmap
ClientRect
Default
Enabled
Height
Help
Icon
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: Yes
Maciontosh: No
Windows Implementation
The control is created with the "BUTTON" class.
It has the BS_MULTILINE, WS_CHILD, WS_TABSTOP, WS_GROUP styles.
If the Bitmap style is set it has the BS_BITMAP style.
If the Icon style is set it has the BS_ICON style.

#$K+Text Control
	Msi Objects	Database Tables
This control displays a static text. The text may use a predefined style. This is done by putting the name of the style in the form {\style} at the start of the string, where style is one of the keys in the TextStyle Table. A base text style can be assigned to the control by supplying {&style} at the very begining of a the text string. This style is used whenever no other style is defined by the string.

Property
There can be no property associated with this control. 
Valid Style Bits
Sunken
Transparent
Visible

Valid Control Attributes
ClientRect
Default
Enabled
Height
Help
KeyInt
KeyString
Position
RefCount
Sunken
Text
Transparent
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
The control is created with the "STATIC" class and with the SS_LEFT, WS_CHILD, WS_GROUP styles.
If the Transparent style is set the control also has the WS_EX_TRANSPARENT style.
#$K+ScrollableText Control
	Msi Objects	Database Tables
This control displays a long text that can not fit on a page normally. A typical application for this control is displaying the license agreement.

Property
There can be no property associated with this control. 
Valid Style Bits
Enabled
Sunken
Visible

Valid Control Attributes
ClientRect
Enabled
Height
Help
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.
Can Take Focus
Windows: No
Maciontosh: No
Windows Implementation
The control is created using the "RICHEDIT" class with the ES_MULTILINE, WS_HSCROLL, WS_VSCROLL, ES_READONLY,  WS_TABSTOP, ES_AUTOHSCROLL, ES_AUTOVSCROLL, WS_CHILD and WS_GROUP styles.

#$K+SelectionTree Control
	Msi Objects	Database Tables
This special control is designed to present some of the information in the Feature Table to the user and allow the user to change the selection state of some items.

Property
String valued, the name of the directory property that will be set by the browse dialog. 
Valid Style Bits
Enabled
Indirect
Sunken
Visible

Valid Control Attributes
ClientRect
Enabled
Height
Help
Indirect
IndirectPropertyName
KeyInt
KeyString
OriginalValue
Position
PropertyName
PropertyValue
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
SelectionAction
SelectionBrowse
SelectionDescription
SelectionIcon
SelectionPath
SelectionPathOn
SelectionSize

Can Take Focus
Windows: Yes
Maciontosh: No
Related Strings in the UIText Table
AbsentPath The path displayed for an item in the absent state.   
The following six strings are used to display the number of children selected and the size associated with the highlighted item.
SelChildCostPos
SelChildCostNeg
SelParentCostPosPos
SelParentCostPosNeg
SelParentCostNegPos
SelParentCostNegNeg
The following strings are used to display the available selection options for an item in a popup menu.
MenuAbsent
MenuLocal
MenuCD
MenuNetwork
The following strings are used to explain the present selection in the SelectionDescription control event.
SelAbsentAbsent
SelAbsentLocal
SelAbsentCD
SelAbsentNetwork
SelLocalAbsent
SelLocalLocal
SelLocalCD
SelLocalNetwork
SelCDAbsent
SelNetworkAbsent
SelCDLocal
SelNetworkLocal
SelCDCD
SelNetworkNetwork
The following four localized strings are used in formatting the size of a file.
Bytes
KB
MB
GB

Windows Implementation
This control is created with the WC_TREEVIEW class and the WS_BORDER, TVS_HASLINES, TVS_HASBUTTONS, TVS_LINESATROOT, TVS_DISABLEDRAGDROP, TVS_SHOWSELALWAYS, WS_CHILD, WS_TABSTOP, WS_GROUP	styles.
Note
The selection tree gets populated only if the DirectoryInitialize, CostInitialize and CostFinalize actions were all previously called.

#$K+VolumeCostList Control
	Msi Objects	Database Tables
This special control is designed to present some information to the user about the cost associated with the selection on the different volumes. The control shows all the volumes in the VolumeCost table, plus all volumes that are of the types specified in the attribute bits. If the required disk space exceeds the available amount on some drive, the volume is highlighted in the table. Clicking on a column header sorts the volumes according to the chosen column.

Property
There can be no property associated with this control. 
Valid Style Bits
CDROMVolume
Enabled
FixedVolume
FloppyVolume
RAMDiskVolume
RemoteVolume
RemovableVolume
Sunken
Visible

Valid Control Attributes
ClientRect
Enabled
Height
Help
KeyInt
KeyString
Position
RefCount
Sunken
Text
Visible
Width
WindowHandle
X
Y

Control Events Published
None.

Can Take Focus
Windows: No
Maciontosh: No
Related Strings in the UIText Table
The strings for the column headings in the table:
VolumeCostAvailable
VolumeCostDifference
VolumeCostRequired
VolumeCostSize
VolumeCostVolume
The following four localized strings are used in formatting the size of a file.
Bytes
KB
MB
GB

Windows Implementation
This control is created with the WC_LISTVIEW class and the LVS_REPORT, WS_VSCROLL, WS_HSCROLL, LVS_SHAREIMAGELISTS, LVS_AUTOARRANGE, LVS_SINGLESEL, WS_BORDER, WS_CHILD, WS_TABSTOP, WS_GROUP styles.

#$K+Bitmap Control Stylebit
	Msi Objects	Database Tables
If this bit is set the controls text is replaced by a bitmap. The text entry in the database that normally would specify the text of the control is used as a foreign key to the Binary Table to point to the binary data needed for the picture. Therefore such a control has no text associated with it, only the picture. This style bit should not be set at the same time as the Icon!
Control Types That Can Have This Style
CheckBox
PushButton
RadioButtonGroup
Associated Control Attribute
Bitmap

Numeric Value
0x00040000 = 262144

#$K+Icon Control Stylebit
	Msi Objects	Database Tables
If this bit is set the controls text is replaced by a icon. The text entry in the database that normally would specify the text of the control is used as a foreign key to the Binary Table to point to the binary data needed for the picture. Therefore such a control has no text associated with it, only the picture. This style bit should not be set at the same time as the Bitmap!
Control Types That Can Have This Style
CheckBox
PushButton
RadioButtonGroup
Associated Control Attribute
Icon

Numeric Value
0x00080000 = 524288

#$K+IconSize Control Stylebits
	Msi Objects	Database Tables
An icon file can hold several different size images of the same icon. These two bits determine which size image of the icon is loaded. If neither bit is set, the first image is loaded. If only the lower bit is set, the first 16x16 image is loaded. If only the higher bit is set, the firts 32x32 image is loaded. If both bits are set, the first 48x48 image is loaded.
If the FixedSize bit is set, these bits determine the size of the image displayed.
Control Types That Can Have This Style
CheckBox
Icon
PushButton
RadioButtonGroup
Associated Control Attribute
None

Numeric Value
0x00200000 = 2097152
0x00400000 = 4194304

#$K+ImageHandle Control Stylebits
	Msi Objects	Database Tables
Controls that require an image normaly specify the name of the binary information in the text field and the binary data is looked up from the Binary table using this key. If this style bit is set, it means that the binary information is NOT comming from the Binary table, but instead the text field represents the handle to a bitmap or icon (in a string format) and this already loaded icon or bitmap must be used by the control. Obviously these handles can not be authored previously, the actual value of the handle in the table has to be set by some action that is performed prior to creating the control. A possible use is to have an action to find all the running applications and put their names and icons into the ListView Table, and the control can display these names and icons, Even if this bit is on, other stylebits governing the size and stretching of the image are still observed. I.e. if an action puts a handle of an image in the table, but other stylebits describe a different size, the image will be still stretched. 
Control Types That Can Have This Style
Bitmap
CheckBox
Icon
ListView
PushButton
RadioButtonGroup
Associated Control Attribute
None

Numeric Value
0x00010000 = 65536

#$K+CDROMVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists CDROM volumes in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
FixedVolume
FloppyVolume
RAMDiskVolume
RemoteVolume
RemovableVolume

Numeric Value
0x00080000 = 524288

#$K+FixedVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists fixed internal harddrives in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
CDROMVolume
FloppyVolume
RAMDiskVolume
RemoteVolume
RemovableVolume

Numeric Value
0x00020000 = 131072

#$K+FloppyVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists floppy drives in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
CDROMVolume
FixedVolume
RAMDiskVolume
RemoteVolume
RemovableVolume

Numeric Value
0x00200000 = 2097152

#$K+RAMDiskVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists RAM disks in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
CDROMVolume
FixedVolume
FloppyVolume
RemoteVolume
RemovableVolume

Numeric Value
0x00100000 = 1048567

#$K+RemoteVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists remote volumes in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
CDROMVolume
FixedVolume
FloppyVolume
RAMDiskVolume
RemovableVolume

Numeric Value
0x00040000 = 262144

#$K+RemovableVolume Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control lists removable drives in its list of volumes.
Control Types That Can Have This Style
DirectoryCombo
VolumeCostList
VolumeSelectCombo

Associated Control Attribute
None

Related Control Stylebits
CDROMVolume
FixedVolume
FloppyVolume
RAMDiskVolume
RemoteVolume

Numeric Value
0x00010000 = 65536

#$K+Enabled Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control control is created enabled, otherwise disabled. The enabled/disabled state of the control can be changed later through the associated attribute or by the publisher of some event that the given control subscribes to. 
Control Types That Can Have This Style
All controls. On some controls (like Bitmaps and Icons) this bit makes no visible difference.
Associated Control Attribute
Enabled

Numeric Value
0x00000002 = 2

#$K+FixedSize Control Stylebit
	Msi Objects	Database Tables
If this bit is set the picture on the button or a bitmap or an icon control is displayed in its "natural size". If the picture is smaller than the control, it is centered, if the picture is larger, it is chopped in case of bitmaps but it is shrunk in case of icons. If the bit is not set, the picture is stretched to fit the button or control rectangle. 
On CheckBoxes, PushButtons and RadioButtonGroups this bit has any effect only if the Bitmap or the Icon is set.
On Icon controls and buttons associated with icons this bit is ignored if the IconSize bits are not set!
Control Types That Can Have This Style
Bitmap
CheckBox
Icon
PushButton
RadioButtonGroup
Associated Control Attribute
None.

Numeric Value
0x00100000 = 1048576

#$K+HasBorder Control Stylebit
	Msi Objects	Database Tables
If this bit is set the RadioButtonGroup has a border displayed around it. If the style bit is not set, the border is not displayed and no text is displayed on the group either!
Control Types That Can Have This Style
RadioButtonGroup

Associated Control Attribute
HasBorder.

Numeric Value
0x01000000 = 16777216

#$K+Indirect Control Stylebit
	Msi Objects	Database Tables
If this bit is set on an active control, it means that the control changes the value of the property whose name is the value of the named property. Otherwise the named property is changed.
Control Types That Can Have This Style
All active controls

Associated Control Attribute
Indirect.

Numeric Value
0x00000008 = 8

#$K+SplitPath Control Stylebit
	Msi Objects	Database Tables
If this bit is set the control splits the path into tail and body. The PathEdit displays only the tail of the path, the DirectoryCombo and DirectoryList controls show only the body of the path. If the bit is not set, the controls work on the entire path.
Control Types That Can Have This Style
DirectoryCombo
DirectoryList
PathEdit

Associated Control Attribute
None

Numeric Value
0x02000000 = 33554432

#$K+Integer Control Stylebit
	Msi Objects	Database Tables
If this bit is set on an active control, the associated property is integer valued. Otherwise the property is string valued.
Control Types That Can Have This Style
CheckBox
ComboBox
Edit
ListBox
RadioButtonGroup

Associated Control Attribute
Integer.

Numeric Value
0x00000010 = 16

#$K+Progress95 Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a progress bar, it is drawn with small disjoint rectangles in Windows 95 style. Otherwise the bar is drawn continuously.
Control Types That Can Have This Style
ProgressBar

Associated Control Attribute
None.

Numeric Value
0x00010000 = 65536

#$K+ComboList Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a combobox, the edit field is replaced by a static text field, therefore the user can not enter a new value, can choose only one of the predefined values. Otherwise the combobox is drawn with an edit field.
Control Types That Can Have This Style
ComboBox

Associated Control Attribute
None.

Numeric Value
0x00020000 = 131072

#$K+PushLike Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a checkbox or a radiobuttongroup the button is drawn with the visual appearance of a push button, but it's logic stays the same. If the bit is not set the controls are drawn in their usual visual style.
Control Types That Can Have This Style
CheckBox
RadioButtonGroup

Associated Control Attribute
PushLike.

Numeric Value
0x00020000 = 131072

#$K+Sorted Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a listbox or combobox, the items in the list are displayed in the order defined by the Ordering column of the corresponding table. If the bit is not set, the items are displayed in alphabetical order.
Control Types That Can Have This Style
ComboBox
ListBox
ListView

Associated Control Attribute
None.

Numeric Value
0x00010000 = 65536

#$K+Sunken Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a control, it is displayed with a sunken, 3D look, if that is available on the system. Otherwise the control is displayed in its default visual style. The effect of this style bit is different on different versions of Windows. On most controls it has no visible effect.
Control Types That Can Have This Style
All controls
Associated Control Attribute
Sunken.

Numeric Value
0x00000004 = 4

#$K+Transparent Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a text control, it is displayed transparently, the background shows through the control where there are no characters. Otherwise the background is opaque.
Control Types That Can Have This Style
Text
Associated Control Attribute
Transparent.

Numeric Value
0x00010000 = 65536

#$K+Visible Control Stylebit
	Msi Objects	Database Tables
If this bit is set on a control, it is visible on the dialog. Otherwise it is hidden. The visible/hidden state of the control can be changed later through the associated attribute or by the publisher of some event that the given control subscribes to. 
Control Types That Can Have This Style
All controls
Associated Control Attribute
Visible.

Numeric Value
0x00000001 = 1

#$K+Bitmap Control Atribute
	Msi Objects	Database Tables
This attribute tells if the text on the buttons is replaced by a bitmap.
Type
Boolean.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
CheckBox
PushButton
RadioButtonGroup
Associated Control Stylebit
Bitmap.
Related Control Attribute
Icon

#$K+Icon Control Atribute
	Msi Objects	Database Tables
This attribute tells if the text on the buttons is replaced by an icon.
Type
Boolean.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
CheckBox
PushButton
RadioButtonGroup
Associated Control Stylebit
Icon.
Related Control Attribute
Bitmap

Numeric Value
0x00080000 = 524288

#$K+ClientRect Control Atribute
	Msi Objects	Database Tables
This attribute retrieves the coordinates of a window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. The coordinates are relative to the upper left corner of the control's window. The four values are returned in the following order: left, top, right, bottom.  
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 4 fields.
Control Types That Have This Attribute
All controls.
Associated Control Stylebit
None.
Related Control Attributes
Position
Width
Height
X
Y

#$K+Default Control Atribute
	Msi Objects	Database Tables
This attribute describes if the given control is defined as the default control on the dialog. If it is the default, then hitting the Return key automaticaly activates this control.
Type
Boolean.
Access
Read and Write.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
All controls. 
Although this attribute is defined for every control, it is only practical for controls that have a button-like behaviour.
Associated Control Stylebit
None.
#$K+Enabled Control Atribute
	Msi Objects	Database Tables
This attribute describes if the given control is enabled or disabled. Most controls have a gray disabled look. For some inert controls changeing this attribute results in no visible change.
Type
Boolean.
Access
Read and Write.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
All controls. 

Associated Control Stylebit
Enabled.
#$K+HasBorder Control Atribute
	Msi Objects	Database Tables
This attribute describes if the radiobutton group has a border around it. If there is no border, then no text is shown on the top of the group, even if there is some text defined.
Type
Boolean.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
RadioButtonGroup 

Associated Control Stylebit
HasBorder.
#$K+Height Control Atribute
	Msi Objects	Database Tables
This attribute returns the height of the control in pixels.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
Position
Width
X
Y
ClientRect

#$K+Width Control Atribute
	Msi Objects	Database Tables
This attribute returns the width of the control in pixels.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
Position
Height
X
Y
ClientRect

#$K+X Control Atribute
	Msi Objects	Database Tables
This attribute returns the the x coordinate of the upper left corner of the control in pixels.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
Position
Width
Height
Y
ClientRect

#$K+Y Control Atribute
	Msi Objects	Database Tables
This attribute returns the the y coordinate of the upper left corner of the control in pixels.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
Position
Width
Height
X
ClientRect

#$K+Help Control Atribute
	Msi Objects	Database Tables
This attribute is the help string used with the control for the context sensitive help.
Type
String.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
#$K+BillboardName Control Atribute
	Msi Objects	Database Tables
This attribute returns the name of the currently running billboard, or sets and displays a billboard by name. This attibute is used in preview mode.
Type
String.
Access
Read and Write.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Billboard.
Associated Control Stylebit
None.
#$K+Text Control Atribute
	Msi Objects	Database Tables
This attribute is the text string used displayed in the control. On setting, if the field 0 of the record is not null, the record is formatted using FormatText. If the field 0 is null, the first field of the record defines the text. On getting the value is always returned in the first field. For some controls this text may not be visible. On Windows the accelerator key for a control is defined by placing a "&" in front of the desired character in this string.
Type
String.
Access
Read and Write.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
#$K+Indirect Control Atribute
	Msi Objects	Database Tables
This attribute determines for some active controls if the associated property is referenced indirectly.
Type
Boolean.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
All active controls.
Associated Control Stylebit
Indirect.
#$K+Integer Control Atribute
	Msi Objects	Database Tables
This attribute determines for some active controls if the associated property is integer valued.
Type
Boolean.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
CheckBox
ComboBox
Edit
ListBox
RadioButtonGroup

Associated Control Stylebit
Integer.
#$K+ItemsCount Control Atribute
	Msi Objects	Database Tables
This attribute returns the number of items in the control. These items represent the possible property values that the user can choose from.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least 1 field.
Control Types That Have This Attribute
ComboBox
ListBox
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsX
ItemsY

#$K+ItemsHandle Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the window handles to the individual buttons in a radiobuttongroup. This attribute is supported on Windows only.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
RadioButtonGroup Windows only!

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsX
ItemsY

#$K+ItemsHeight Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the height in pixels of the windows for the individual buttons in a radiobuttongroup.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of field, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsText
ItemsValue
ItemsWidth
ItemsX
ItemsY

#$K+ItemsWidth Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the width in pixels of the windows for the individual buttons in a radiobuttongroup.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsX
ItemsY

#$K+ItemsX Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the x coordinates in pixels for the upper left corner of the windows for the individual buttons in a radiobuttongroup.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsY

#$K+ItemsY Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the y coordinates in pixels for the upper left corner of the windows for the individual buttons in a radiobuttongroup.
Type
Integer.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsValue
ItemsWidth
ItemsX

#$K+ItemsText Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the visible text strings associated with the items in the control.
Type
String.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
ComboBox
ListBox
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsHeight
ItemsValue
ItemsWidth
ItemsX
ItemsY

#$K+ItemsValue Control Atribute
	Msi Objects	Database Tables
This attribute returns a list of the property values associated with the items in the control.
Type
String or Integer depending on the Integer stylebit of the control.
Access
Read only.
Minimum Size of the Record
At least the number of items. To ensure that the record is created with sufficient number of fields, one can call the ItemsCount control attribute first. The items are listed in a random order, but all Items* attributes will use the same order of items.
Control Types That Have This Attribute
ComboBox
ListBox
RadioButtonGroup

Associated Control Stylebit
None.
Related Control Attributes
ItemsCount
ItemsHandle
ItemsHeight
ItemsText
ItemsWidth
ItemsX
ItemsY

#$K+KeyInt Control Atribute
	Msi Objects	Database Tables
This attribute returns the integer representation of the name of the control. The same information is available through the IntegerValue property of the Control object.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attribute
KeyString

#$K+KeyString Control Atribute
	Msi Objects	Database Tables
This attribute returns the string representation of the name of the control. The same information is available through the StringValue property of the Control object.
Type
String
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attribute
KeyInt

#$K+Limit Control Atribute
	Msi Objects	Database Tables
This attribute determines the maximum number of characters the user can enter in the edit field.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
ComboBox
Edit
Associated Control Stylebit
None.
#$K+Image Control Atribute
	Msi Objects	Database Tables
This attribute is the name of the image in the Binary Table. If the image is set by the ImageHandle attribute, this attribute does not reflect the correct name anymore.
Type
String
Access
Read and Write.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Bitmap
Icon
Associated Control Stylebit
None.
Related Control Attribute
ImageHandle

#$K+ImageHandle Control Atribute
	Msi Objects	Database Tables
This attribute is the handle to the bitmap or icon displayed in the control. If the image is set by this attribute, the name of the image is not correct anymore and the Image attribute will return an incorrect value.
Type
String
Access
Read and Write.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Bitmap
Icon
Associated Control Stylebit
None.
Related Control Attribute
Image

#$K+OriginalValue Control Atribute
	Msi Objects	Database Tables
This attribute is normaly the value of the associated property at the moment of the control's creation. If the Undo method is called on the control, it puts this value back to the property.
Type
String or Integer depending on the Integer style of the control.
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every active control.
Associated Control Stylebit
None.
Related Control Attributes
IndirectPropertyName
PropertyName
PropertyValue

#$K+PropertyValue Control Atribute
	Msi Objects	Database Tables
This attribute is the present value of the associated property. If this attribute is changed, the control updates to show the new state.
Type
String or Integer depending on the Integer style of the control.
Access
Read and Write.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every active control.
Associated Control Stylebit
None.
Related Control Attributes
IndirectPropertyName
OriginalValue
PropertyName

#$K+PropertyName Control Atribute
	Msi Objects	Database Tables
In case of an active control this attribute is the name of the associated property. For inert controls this attribute returns Null. 
Type
String
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
IndirectPropertyName
OriginalValue
PropertyValue

#$K+IndirectPropertyName Control Atribute
	Msi Objects	Database Tables
In case of an active control this attribute is the name of the associated indirect property. For inert controls this attribute returns Null. 
An indirect property names an other property, and the control displays/changes the value of this second property. 
Type
String
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
OriginalValue
PropertyName
PropertyValue

#$K+Position Control Atribute
	Msi Objects	Database Tables
This attribute determines the position of the control on the dialog. The four fields are: left, top, width and height. The coordinates are in pixels and relative to the upper left corner of the dialog.
Type
Integer
Access
Read and Write.
Minimum Size of the Record
At least 4.
Control Types That Have This Attribute
Every control.
Associated Control Stylebit
None.
Related Control Attributes
Width
Height
X
Y
ClientRect

#$K+Progress Control Atribute
	Msi Objects	Database Tables
This attribute measures how far the progress bar is filled up. The record contains two integers and a string. The first number is the progress, the second number is the range (the maximal possible number for the progress).
On setting, the integers can be entered as integer fields or strings containing the integers.
If the second number is missing it is assumed to be the default (1024). If the progress is larger than the range then it is changed to be the range. The third field is a string, the name of the action whose progress is displayed.
Type
Integer
Access
Read and Write.
Minimum Size of the Record
At least 3.
Control Types That Have This Attribute
ProgressBar
Associated Control Stylebit
None.
#$K+PushLike Control Atribute
	Msi Objects	Database Tables
If this attribute is set on a checkbox or a radiobuttongroup the button is drawn with the visual appearance of a push button, but it's logic stays the same. If the bit is not set the controls are drawn in their usual visual style.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
CheckBox
RadioButtonGroup
Associated Control Stylebit
PushLike
#$K+RefCount Control Atribute
	Msi Objects	Database Tables
This attribute gives the current reference count to the control.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control
Associated Control Stylebit
None.
#$K+Sunken Control Atribute
	Msi Objects	Database Tables
If this attribute is set on a control, it is displayed with a sunken, 3D look, if that is available on the system. Otherwise the control is displayed in its default visual style. The effect of this attribute is different on different versions of Windows. On most controls it has no visible effect.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control
Associated Control Stylebit
Sunken
#$K+Transparent Control Atribute
	Msi Objects	Database Tables
If this attribute is set on a text control, it is displayed transparently, the background shows through the control where there are no characters. Otherwise the background is opaque.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Text
Associated Control Stylebit
Transparent
#$K+Visible Control Atribute
	Msi Objects	Database Tables
If this attribute is set the control is visible, otherwise hidden.
Type
Boolean
Access
Read and Write.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control
Associated Control Stylebit
Visible
#$K+WindowHandle Control Atribute
	Msi Objects	Database Tables
This attribute returns the window handle to the control's window. Supported on Windows only.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Control Types That Have This Attribute
Every control. Windows only!
Associated Control Stylebit
Visible
#$K+Browse Dialog Stylebit
	Msi Objects	Database Tables
Some description goes here!!!
Associated Dialog Attribute
None

Numeric Value
0x00020000 = 131072

#$K+Minimize Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set the dialog can be minimized. On Windows the dialog's minimize button is enabled and the minimize item is enabled in the system menue. This bit is ignored for modeless dialogs, that can not be ever minimized.
Associated Dialog Attribute
None

Numeric Value
0x00000004 = 4

#$K+Modal Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set the dialog is modal, other dialogs of the same application can not be put on top of it, and the dialog keeps the control while it is running.If this bit is not set, the dialog is modeless, other dialogs of the same application may be moved on top of it. After a modeless dialog is created and displayed, the Handler returns control to the Engine. The Engine calls the Handler through the Message method periodiacly to update the dialog and to give the Handler a chance to process the messages. As soon as this is done, the control is returned to the Engine.  Note that there should be no modeless dialogs in a wizard sequence, since this will return control to the engine, ending the wizard sequence prematurely.
Associated Dialog Attribute
Modal

Numeric Value
0x00000002 = 2

#$K+KeepModeless Dialog Stylebit
	Msi Objects	Database Tables
Normally (when this bit is not set), when a dialog is created through DoAction, all other (typically modeless) dialogs are destroyed. If this bit is set, the other dialogs stay alive when this dialog is created.
Associated Dialog Attribute
KeepModeless

Numeric Value
0x00000010 = 16

#$K+TrackDiskSpace Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set, the dialog periodically calls SelectionManager::DetermineOutOfDiskSpace. If the property changes, it notifies the controls on the dialog. This style can be used if there is an control on the dialog indicating if we are out of disk space. If the user switches to an other application and adds/removes files or otherwise modifies the available disk space, we can still quickly catch the change using this style.

Associated Dialog Attribute
None.

Numeric Value
0x00000020 = 32

#$K+UseCustomPalette Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set the pictures on the dialog will be created with the custom palette (one per dialog received from the first control created). If the bit is not set, the pictures are rendered using a default palette.
Typically one would set this bit if the dialog contains a picture with a special palette, or several pictures sharing a custom palette. The bit should be unset if the dialog contains several pictures with different palettes. In this case the default will be most likely to give a satisfactory result for all pictures.
Associated Dialog Attribute
UseCustomPalette

Numeric Value
0x00000040 = 64

#$K+Visible Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set the dialog is originaly created as visible, otherwise it is hidden.
Associated Dialog Attribute
None

Numeric Value
0x00000001 = 1

#$K+Error Dialog Stylebit
	Msi Objects	Database Tables
If this bit is set the dialog is an error dialog.
There can be more than one dialog with this style. The ErrorDialog property determines which dialog is used as an error dialog. The selected dialog can be only one of those that have this style bit set. The error dialog must have a static text control named ErrorText. This control receives the text of the error message. The dialog should also have the seven push buttons corresponding to the possible return values. The error message determines which of these buttons are actualy displayed. The displayed buttons are rearranged so they are evenly distributed on the dialog. This rearrangement changes the X coordinate of the buttons, but not the other three coordinates. Therefore it is advisable that no other control should be authored in the same horizontal region of the dialog as the buttons. If the error message specifies no button, the OK button is displayed. The Default button, First active control and Cancel button values are ignored for an error dialog. The default button defined in the error message will be assigned to all three values.The effect of pushing these buttons have to be defined in the ControlEvent Table just like for all other buttons. The title of the dialog is authored like for any other dialog. It can get overwritten by the error message if it specifies a header text after the button list. 
Associated Dialog Attribute
Error

Numeric Value
0x00010000 = 65536

#$K+AddingControls Dialog Atribute
	Msi Objects	Database Tables
This attribute shows if the dialog is in the process of adding controls. As long as the dialog is in this phase most methods on the dialog are not available. This attribute is changed to False when AddControl is called with Null signaling that all the controls are added.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
#$K+Argument Dialog Atribute
	Msi Objects	Database Tables
When the user dismisses a modal dialog in some way, the dialog internaly stores the name of the event and its argument that should take place next. This attribute returns the string representation of the event argument.
Type
String
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
EventInt
EventString

#$K+EventInt Dialog Atribute
	Msi Objects	Database Tables
When the user dismisses a modal dialog in some way, the dialog internaly stores the name of the event and its argument that should take place next. This attribute returns the integer representation of the event name.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
ArgumentInt
EventString

#$K+EventString Dialog Atribute
	Msi Objects	Database Tables
When the user dismisses a modal dialog in some way, the dialog internaly stores the name of the event and its argument that should take place next. This attribute returns the string representation of the event name.
Type
String
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
ArgumentInt
EventInt

#$K+ClientRect Dialog Atribute
	Msi Objects	Database Tables
This attribute retrieves the coordinates of the window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. The coordinates are relative to the upper left corner of the dialog's window. The four values are returned in the following order: left, top, right, bottom.  
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 4.
Related Dialog Attributes
Position
Width
Height
X
Y
FullSize

#$K+Position Dialog Atribute
	Msi Objects	Database Tables
This attribute determines the position of the dialog on the screen. The four fields are: left, top, width and height. The coordinates are in pixels and relative to the upper left corner of the screen.
Type
Integer
Access
Read and Write.
Minimum Size of the Record
At least 4.
Related Dialog Attributes
Width
Height
X
Y
ClientRect
FullSize

#$K+FullSize Dialog Atribute
	Msi Objects	Database Tables
This attribute describes the full size of the dialog in pixels. This is the limit for the control placement. If the dialog is larger than the screen, this size describes the entire dialog, and it is larger than the size of the window visible on the screen.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 2.
Related Dialog Attributes
Width
Height
Position
X
Y
ClientRect

#$K+Width Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the width of the dialog in pixels.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
Position
Height
X
Y
ClientRect
FullSize

#$K+Height Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the height of the dialog in pixels.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
Position
Width
X
Y
ClientRect
FullSize

#$K+X Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the x coordinate of the upper left corner of the dialog in pixels.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
Position
Width
Height
Y
ClientRect
FullSize

#$K+Y Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the y coordinate of the upper left corner of the dialog in pixels.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
Position
Width
Height
X
ClientRect
FullSize

#$K+ControlsCount Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the number of controls existing on the dialog.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1.
Related Dialog Attributes
ControlsKeyInt
ControlsKeyString
ControlsNext
ControlsPrev
ControlsProperty

#$K+ControlsKeyInt Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the list of integer representation of the names of the controls existing on the dialog. The controls are listed in a random order, but all Controls* attributes list them in the same order.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least the number of controls on the dialog. To ensure that the record is created with a sufficient number of field, one may call the ControlsCount attribute first.
Related Dialog Attributes
ControlsCount
ControlsKeyString
ControlsNext
ControlsPrev
ControlsProperty

#$K+ControlsKeyString Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the list of string representation of the names of the controls existing on the dialog. The controls are listed in a random order, but all Controls* attributes list them in the same order.
Type
String
Access
Read only.
Minimum Size of the Record
At least the number of controls on the dialog. To ensure that the record is created with a sufficient number of field, one may call the ControlsCount attribute first.
Related Dialog Attributes
ControlsCount
ControlsKeyInt
ControlsNext
ControlsPrev
ControlsProperty

#$K+ControlsNext Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the list of the names of the controls next in tab order. The controls are listed in a random order, but all Controls* attributes list them in the same order.
Type
String
Access
Read only.
Minimum Size of the Record
At least the number of controls on the dialog. To ensure that the record is created with a sufficient number of field, one may call the ControlsCount attribute first.
Related Dialog Attributes
ControlsCount
ControlsKeyInt
ControlsKeyString
ControlsPrev
ControlsProperty

#$K+ControlsPrev Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the list of the names of the controls previous in tab order. The controls are listed in a random order, but all Controls* attributes list them in the same order.
Type
String
Access
Read only.
Minimum Size of the Record
At least the number of controls on the dialog. To ensure that the record is created with a sufficient number of field, one may call the ControlsCount attribute first.
Related Dialog Attributes
ControlsCount
ControlsKeyInt
ControlsKeyString
ControlsNext
ControlsProperty

#$K+ControlsProperty Dialog Atribute
	Msi Objects	Database Tables
This attribute returns the list of properties associated with the controls. The controls are listed in a random order, but all Controls* attributes list them in the same order.
Type
String
Access
Read only.
Minimum Size of the Record
At least the number of controls on the dialog. To ensure that the record is created with a sufficient number of field, one may call the ControlsCount attribute first.
Related Dialog Attributes
ControlsCount
ControlsKeyInt
ControlsKeyString
ControlsNext
ControlsPrev

#$K+CurrentControl Dialog Atribute
	Msi Objects	Database Tables
The name of the control currently having the focus.
Type
String
Access
Read and Write.
Minimum Size of the Record
At least 1.
#$K+DefaultButton Dialog Atribute
	Msi Objects	Database Tables
The name of the default control (typically a button). If there is no default control, it returns an empty string.
Type
String
Access
Read and Write.
Minimum Size of the Record
At least 1.
#$K+Preview Dialog Atribute
	Msi Objects	Database Tables
A boolean value showing if the handler is in preview mode.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
#$K+Locked Dialog Atribute
	Msi Objects	Database Tables
An integer showing the ID of the control that locked the dialog from closing, because the control has an invalid value. 0 if the dialog is not locked.
Type
Integer
Access
Read and Write.
Minimum Size of the Record
At least 1.
#$K+InPlace Dialog Atribute
	Msi Objects	Database Tables
A Boolean value showing if the dialog has been moved by the Handler to its final position.
Type
Boolean
Access
Read and Write.
Minimum Size of the Record
At least 1.
#$K+HasControls Dialog Atribute
	Msi Objects	Database Tables
A boolean value showing if the dialog has controls. It is turned on only when all the controls are added.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1.
#$K+Text Dialog Atribute
	Msi Objects	Database Tables
The caption of the dialog. On setting if the field 0 of the record is not null, the record is formatted using FormatString; if the field 0 is null, the first field is the string to be set. On getting the text is always returned in field 1.
Type
String
Access
Read and Write.
Minimum Size of the Record
At least 1.
#$K+KeyInt Dialog Atribute
	Msi Objects	Database Tables
The integer representation of the name of the dialog. This information is also available through the IntegerValue property of the dialog.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1. 
Related Dialog Attribute
KeyString

#$K+KeyString Dialog Atribute
	Msi Objects	Database Tables
The string representation of the name of the dialog. This information is also available through the StringValue property of the dialog.
Type
String
Access
Read only.
Minimum Size of the Record
At least 1. 
Related Dialog Attribute
KeyInt

#$K+Modal Dialog Atribute
	Msi Objects	Database Tables
A boolean value showing whether the dialog is modal or modeless. Originaly set by the Modal style bit.
Type
Boolean
Access
Read and Write.
Minimum Size of the Record
At least 1. 
#$K+KeepModeless Dialog Atribute
	Msi Objects	Database Tables
A boolean value showing whether the dialog takes down the other (typically modeless) dialogs when created. Originaly set by the KeepModeless style bit.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1. 
#$K+RefCount Dialog Atribute
	Msi Objects	Database Tables
The reference count of the dialog object.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1. 
#$K+Running Dialog Atribute
	Msi Objects	Database Tables
A boolean value showing if the dialog is currently running (in the message loop) or about to run.
Type
Boolean
Access
Read and Write.
Minimum Size of the Record
At least 1. 
#$K+Showing Dialog Atribute
	Msi Objects	Database Tables
A boolean value whther the dialog is currently showing.
Type
Boolean
Access
Read and Write.
Minimum Size of the Record
At least 1. 
#$K+Error Dialog Atribute
	Msi Objects	Database Tables
A boolean value whther the dialog is an error dialog.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1. 
#$K+WindowHandle Dialog Atribute
	Msi Objects	Database Tables
The window handle of the dialog's window.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1. 
#$K+Palette Dialog Atribute
	Msi Objects	Database Tables
The handle of the palette used by the controls on the dialog.
Type
Integer
Access
Read and Write.
Minimum Size of the Record
At least 1. 
#$K+UseCustomPalette Dialog Atribute
	Msi Objects	Database Tables
A flag showing if a custom palette is used to render the images on the dialog.
Type
Boolean
Access
Read only.
Minimum Size of the Record
At least 1. 
Related Dialog Style
UseCustomPalette

#$K+ToolTip Dialog Atribute
	Msi Objects	Database Tables
The window handle of the tool tip control.
Type
Integer
Access
Read only.
Minimum Size of the Record
At least 1. 
#$K+SetProperty ControlEvent
	Msi Objects	Database Tables
The syntax for this event is different than for other controlevents! In place of the name of the event one puts the property in square brackets: [property_name]. The argument is the new value of the property. To unset the property, the argument must be {}. This is necessary, because the argument is a primary key in the table, so it can not be null. The argument will be formatted using the FormatText method, therefor it can contain any expression that the method can handle. The property values are evaluated at the moment of the control event.
Published By
Handler
Argument
The new value of the property. {} for null.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A PushButton control on a dialog linked to this event so it changes a property when the button is pushed. 
#$K+ActionData ControlEvent
	Msi Objects	Database Tables
The Handler uses this event to broadcast the latest action data.
Published By
Handler
Argument
None.
Action on Subscribers
The subscribers are hidden when a new action starts and they are shown when a new action data arrives from the engine.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on a modeless dialog subscribes to this event using the text attribute to receive the latest data on the current action. (For example the names of the files copied during file copy). 
#$K+ActionProgress ControlEvent
	Msi Objects	Database Tables
The Handler uses this event to broadcast the progress information. The name is the actual name of the action not ActionProgress! In other words the control has to subscribe to the event by naming the Action whose progress is being indicated. 
Published By
Handler
Argument
None.
Action on Subscribers
The subscribers are hidden when a new action starts or and they are shown when a new progress data arrives from the engine.
Action by Publisher When Subscriber Activated
None.
Typical Use
A ProgressBar control on a modeless dialog subscribes to this event using the Progress attribute to receive the progress information. 
#$K+ActionText ControlEvent
	Msi Objects	Database Tables
The Handler uses this event to broadcast the name of the present action.
Published By
Handler
Argument
None.
Action on Subscribers
The subscribers are shown when a new progress data arrives from the engine.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on a modeless dialog subscribes to this event using the text attribute to receive the name of the current action.
#$K+DirectoryComboPath ControlEvent
	Msi Objects	Database Tables
The DirectoryCombo control uses this event to broadcast the currently selected path.
Published By
DirectoryCombo
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the DirectoryCombo subscribes to this event to show the path currently selected by the DirectoryCombo.
#$K+DirectoryListPath ControlEvent
	Msi Objects	Database Tables
The DirectoryList control uses this event to broadcast the currently selected path.
Published By
DirectoryList
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the DirectoryList subscribes to this event to show the path currently selected by the DirectoryList.
#$K+DirectoryListNew ControlEvent
	Msi Objects	Database Tables
The DirectoryList control is notified through this event when a new folder must be created.
Published By
DirectoryList
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
Creates a new (ghost) folder and selects its name field for editing. If a ghost folder already exists in the current folder, that that folder is selected and its name is opened for editing.
Typical Use
A PushButton control on the same modal dialog as the DirectoryList subscribes to this event to trigger the creation of a new folder.
#$K+DirectoryListUp ControlEvent
	Msi Objects	Database Tables
The DirectoryList control is notified through this event when the user wants to select the parent of the present directory.
Published By
DirectoryList
Argument
None.
Action on Subscribers
The subscribers are disabled if the current directory has no parent (it is a volume), otherwise they are enabled.
Action by Publisher When Subscriber Activated
Changes the selection to the parent of the current directory.
Typical Use
A PushButton control on the same modal dialog as the DirectoryList subscribes to this event to trigger stepping up in the path.
#$K+DirectoryListOpen ControlEvent
	Msi Objects	Database Tables
The DirectoryList control is notified through this event when the user wants to open the selected directory.
Published By
DirectoryList
Argument
None.
Action on Subscribers
The subscribers are disabled if there is no folder selected currently. Otherwise they are enabled.
Action by Publisher When Subscriber Activated
Changes the selection to the highlighted directory.
Typical Use
A PushButton control on the same modal dialog as the DirectoryList subscribes to this event to trigger stepping down in the path.
#$K+SelectionAction ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that contains a string describing the action selected for the highlighted item. The string is one of the "Sel*" strings from the UIText Table.
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the SelectionTree subscribes to this event to display the explanation of the currently selected action.
#$K+SelectionDescription ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that contains the describtion for the highlighted item. This string is the Description field of the Feature Table.
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the SelectionTree subscribes to this event to display the description of the highlighted item.
#$K+SelectionSize ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that contains the size for the highlighted item. If it is a parent item, it also contains the number of children selected. The string is one of the SelChildCostPos,  SelChildCostNeg, SelParentCostPosPos, SelParentCostPosNeg, SelParentCostNegPos or SelParentCostNegNeg strings from the UIText Table.
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the SelectionTree subscribes to this event to display the size of the highlighted item.
#$K+SelectionPath ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that contains the path for the highlighted item. If the item is selected to run from source, this is the path of the source. If the item is selected to be absent, the string is the AbsentPath string from the UIText Table.
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the SelectionTree subscribes to this event to display the path of the highlighted item.
#$K+SelectionPathOn ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that is a boolean value whether there is a selection path associated with the currently selected feature.
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
A Text control on the same modal dialog as the SelectionTree subscribes to this event as the caption of the selection path. This text control is turned visible or hidden depending on this event.
#$K+SelectionIcon ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that contains the handle to the icon indicating the selected action on the highlighted item. 
Published By
SelectionTree
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
None.
Typical Use
An Icon control on the same modal dialog as the SelectionTree subscribes to this event to display the icon corresponding to the highlighted item.
#$K+SelectionBrowse ControlEvent
	Msi Objects	Database Tables
The SelectionTree control publishes this event that makes possible for an other control (typicaly a button) to trigger the browse dialog for the currently highlighted item. 
Published By
SelectionTree
Argument
The name of the dialog to be spawned.
Action on Subscribers
The subscribers are disabled or enabled depending on if the path of the currently selected item can be modified by the user.
Action by Publisher When Subscriber Activated
Spawns a browse dialog to modify the path.
Typical Use
A PushButton control on the same modal dialog as the SelectionTree subscribes to this event to trigger the browse dialog.
#$K+EndDialog ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when a modal dialog has to be removed.
Published By
Handler
Argument
On regular dialogs: "Return", "Exit", "Retry" or "Ignore".
On error dialogs" "ErrorOk", "ErrorCancel", "ErrorAbort", "ErrorRetry", "ErrorIgnore", "ErrorYes" or "ErrorNo".
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
In all cases the Handler removes the present dialog.
If the argument is "Exit", the wizard sequence is closed, the control returns to the Engine with the UserExit value.
If the argument is "Retry", the wizard sequence is closed, the control returns to the Engine with the Suspend value.
If the argument is "Ignore", the wizard sequence is closed, the control returns to the Engine with the Finished value.
The above three arguments can be used only on dialogs that are not children of some other dialog.
If the argument is "Return", the control returns to the parent of the present dialog, if there is a parent. If there is no parent, the control returns to the Engine with the Success value.
For buttons on an error dialog the possible values correspond to the return codes to the Engine.
Typical Use
A PushButton control on a modal dialog is tied to this event in the ControlEvent table to dismiss a dialog.
#$K+NewDialog ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when a modal dialog transitions to an other one.
Published By
Handler
Argument
A string, the name of the new dialog.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler removes the present dialog and creates the new one with the name indicated in the argument.
Typical Use
A PushButton control on a modal dialog is tied to this event in the ControlEvent table to signal a transition to the next or previous dialog of the same wizard sequence.
#$K+SpawnDialog ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when a modal dialog wants to create a child.
Published By
Handler
Argument
A string, the name of the new dialog.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog and creates the new one with the name indicated in the argument, placeing it on top of the old one.
Typical Use
A PushButton control on a modal dialog is tied to this event in the ControlEvent table to creat a child dialog, like a "Are you sure you want to cancel" dialog.
#$K+AddLocal ControlEvent
	Msi Objects	Database Tables
The SelectionManager is notified through this event when a feature or all features have to be selected as local.
Published By
Handler
Argument
A string, either the name of the feature or "ALL" (this second option is case insensitive).
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog running and calls the ConfigureFeature method of the Selection Manager.
Typical Use
A PushButton control on a modal dialog is tied to this event.
#$K+AddSource ControlEvent
	Msi Objects	Database Tables
The SelectionManager is notified through this event when a feature or all features have to be selected as source.
Published By
Handler
Argument
A string, either the name of the feature or "ALL" (this second option is case insensitive).
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog running and calls the ConfigureFeature method of the Selection Manager.
Typical Use
A PushButton control on a modal dialog is tied to this event.
#$K+Remove ControlEvent
	Msi Objects	Database Tables
The SelectionManager is notified through this event when a feature or all features have to be selected for removal.
Published By
Handler
Argument
A string, either the name of the feature or "ALL" (this second option is case insensitive).
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog running and calls the ConfigureFeature method of the Selection Manager.
Typical Use
A PushButton control on a modal dialog is tied to this event.
#$K+Reinstall ControlEvent
	Msi Objects	Database Tables
This ControlEvent allows the author to initiate a reinstall of some or all features, typically with the push of a PushButton control.
Published By
Handler
Argument
A string, either the name of the feature or "ALL" (this second option is case insensitive).
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog running and calls the ConfigureFeature method of the Selection Manager.
Typical Use
A PushButton control on a modal dialog is tied to this event. Typically the same button is also tied to a ReinstallMode control event immediately preceeding this one.
#$K+ReinstallMode ControlEvent
	Msi Objects	Database Tables
This ControlEvent allows the author to specify the validation mode(s) to be used during a reinstall.
Published By
Handler
Argument
A string. For the list of possible values, see the  SetReinstallMode method.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler keeps the present dialog running and calls the  SetReinstallMode method of the Selection Manager.
Typical Use
A PushButton control on a modal dialog is tied to this event. Typically the same button is also tied to a Reinstall control event immediately following this one.
#$K+CheckExistingPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when the browse dialog has to be removed and it has to be verified that the selected path is writable. If the path is writable, the event behaves like the EndDialog, Return event. If the path is not writable, it displays an error dialog and returns control to the browse dialog.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler removes the present dialog and returns to the calling dialog if the path is writable, otherwise it stays on the present dialog.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+CheckExistingTargetPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when it has to be verified that the selected path is writable. If the path is not writable, it blocks further control events associated with the same control.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The path is checked.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+CheckPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when the browse dialog has to be removed and it has to be verified that the selected path is valid. If the path is valid, the event behaves like the EndDialog, Return event. If the path is not valid, it displays an error dialog and returns control to the browse dialog.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler removes the present dialog and returns to the calling dialog if the path is writable, otherwise it stays on the present dialog.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+CheckTargetPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when it has to be verified that the selected path is valid. If the path is not valid, it blocks further control events associated with the same control.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The path is checked.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+SetPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when the browse dialog has to be removed and it has to be verified that the selected path is valid and writeable. It also calls the DirectoryManager to set the target path. If the path is valid, the event behaves like the EndDialog, Return event. If the path is not valid, it displays an error dialog and returns control to the browse dialog.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The Handler removes the present dialog and returns to the calling dialog if the path is writable, otherwise it stays on the present dialog.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+SetTargetPath ControlEvent
	Msi Objects	Database Tables
The Handler is notified through this event when it has to be verified that the selected path is valid and writeable. It also calls the DirectoryManager to set the target path. If the path is not valid, it blocks further control events associated with the same control.
Published By
Handler
Argument
The name of the property containing the path. If the property is indirected, the property name is enclosed in square brackets.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The path is checked and set.
Typical Use
A PushButton control on a browse dialog is tied to this event in the ControlEvent table to check the selected path before returning to the selection dialog.
#$K+SetInstallLevel ControlEvent
	Msi Objects	Database Tables
The handler calls the engine to set the installation level to the value specified in the argument
Published By
Handler
Argument
An integer. The new value of the installation level.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
The handler calls the engine to change the installation level.
Typical Use
A PushButton control on a modal dialog is tied to this event in the ControlEvent table to change the installation level.
#$K+Reset ControlEvent
	Msi Objects	Database Tables
The dialog is reset. In other words all the controls on the dialog are called to undo the property changes they have performed. It should reset all the property values to what they were when the dialog was created. 
There is one case that is not handled properly. If there are at least two controls on the same dialog linked indirectly to the same property and at least one of them started with some other property originaly, this property value is sometimes reset to its second value. Since this case is very esoteric, it is not worth the special code to handle it.
Published By
Handler
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
All the controls on the dialog are called to restore the original values of their properties.
Typical Use
A PushButton control on a modal dialog is tied to this event to allow reseting all the values on the dialog, canceling all the changes performed on the page.
#$K+ValidateProductID ControlEvent
	Msi Objects	Database Tables
This event calls the Engine to validate the Product ID. If the validation succeeds, the PIDTemplate property is removed. Otherwise this event puts up an error message.
Published By
Handler
Argument
None.
Action on Subscribers
None.
Action by Publisher When Subscriber Activated
Calls the engine to validate the Product ID.
Typical Use
A PushButton control on a modal dialog is tied to this event to allow checking the user entry for the PID and move on to the next dialog if the entry is valid.
#$K+Standard Dialog Type
	Msi Objects	Database Tables
As the name suggests, this is the regular dialog type, used as modal dialogs in wizard sequences and modeless dialogs.
Creation
Through the DialogCreate and AddDialog methods of the Handler.
Destruction
Through the RemoveDialog method of the Handler.
#$K+Browse Dialog Type
	Msi Objects	Database Tables
MAC ONLY!
Add info here!!!
Creation
Info here!!!
Destruction
Info here!!!
#$K+FilesInUse Dialog
	Msi Objects	Database Tables
This is a dialog that can be authored to inform the user of any processes that are using files that need to be overwritten or deleted.  This would give the user the opportunity to shut down the offending processes, thus avoiding the necessity of rebooting the machine in order to complete the replacement or deletion of the "in-use" file(s).
Creation
This dialog is created as required by the InstallValidate action.  See that topic for complete details.
Destruction
Through the RemoveDialog method of the Handler.
#$K+Browse Dialog
	Msi Objects	Database Tables
This dialog is used to select a directory. The directory does not have to exist. 
The dialog typicaly contains the following controls:
A PathEdit control to select the tail section of the path. This control can not loose focus if the entered tail is not valid on the present volume.
A DirectoryCombo control to show the presently selected path, except the last segment, that is displayed by the PathEdit control.
A DirectoryList control to show the folders below the directory currently displayed by the DirectoryCombo. This may also show a "phantom folder", a folder not yet created.
The above three controls are tied to the same property (possibly indirectly). The property is the path being selected.
The DirectoryCombo control specifies through its stylebits what volumetypes are displayed. On a typical Browse dialog probably all types should be turned on.
The dialog typically also contains three PushButton controls, that serve as DirectoryUp, NewFolder and Open buttons. The buttons subscribe to the DirectoryListUp, DirectoryListNew and DirectoryListOpen control events, respectively using the ControlEvent Table.
If the dialog is designed to search for existing folders only, the NewFolder button may be omitted.
The above buttons usually authored as picture buttons on Win95 and NT4. Since we do not support picture buttons on NT3.51, the author has to provide alternative buttons for the NT3.51 environment.
When this dialog is authored, the "NewFolder" string must be defined in the UIText Table.
When this dialog is used to select a location for files to be written, the OK button should be linked to the CheckPath controlevent instead of the EndDialog controlevent with a Return argument. The argument of the CheckPath event is the name of the property, or if it indirected than the name of the property in square brackets. This control event first checks if the selected path is writable. If it is, the event behaves like EndDialog with the Return argument. Otherwise it puts up an error dialog and returns focus to the Browse dialog.

#$K+Cancel Dialog
	Msi Objects	Database Tables
This is a modal dialog to confirm that the user indeed wants to terminate the installation. Typically contains a Text control and two PushButtons. The two buttons give the choices to the user the change his/her mind and return to the last dialog or confirm the termination of the install. The two buttons in the ControlEvent Table are linked to the EndDialog controlevent with the Return and Exit arguments. The Return causes the Cancel dialog to be destroyed and the focus returns to the previous dialog. The Exit causes the Handler to return control to the Engine with the appropriate code indicating that the user wants to abort. The Engine on receiving this code shuts down and puts up the UserExit Dialog.
#$K+DiskCost Dialog
	Msi Objects	Database Tables
This dialog is typically spawned when the OutOfDiskSpace property is set indicating that there is not enough disk space for the currently selected installation.
This dialog or a variation of it may be also activated from the Selection Dialog, to give the user an overview of the diskspace needed on the different volumes.
The dialog is a modal dialog and normally contains a VolumeCostList control and a PushButton that returns the user to the previous dialog. It can ofcourse, contain other controls like static text or pictures.

#$K+Error Dialog
	Msi Objects	Database Tables
This modal dialog is used to display an error message. More than one error dialog is possible in one installation. The ErrorDialog property specifies which dialog is used as an error dialog. If this property is not set or does not point to a valid error dialog, the error messages will not be displayed, only logged, along with a warning about the missing error dialog.
This dialog must have the ErrorDialog style bit set. The dialog must have a Text control named ErrorText. This control will display the text of the error message.
The dialog is also authored with seven PushButtons. These buttons must specify the EndDialog control event in the ControlEvent Table with the following arguments: ErrorAbort, ErrorCancel, ErrorIgnore, ErrorNo, ErrorOk, ErrorRetry, ErrorYes.
The buttons should be authored approximately at the same position. When the dialog is created only a subset of these buttons will be created, depending on the message, and the X coordinate of the buttons will be modified so the displayed buttons are evenly spaced. The other three coordinates of the buttons are not changed. Since the buttons are rearranged, the author should make sure, that no other control is placed in the same horizontal reagon of the dialog as the buttons.
The error message can consist of three segments. The first segment is the text of the error message. This part is required. The second part is a list of letters specifying what buttons must be created. The list is enclosed in curly braces. The letter codes are the first letters of the words abort, cancel, ignore, no, Ok, retry, yes. All the letter codes must be lower case except one, that designates the default button. If this list of codes is missing or empty, it is assumed to be {O}, i.e. putting up the OK button.
The third part of the error message is optional. If it is present this string is used as the title for the dialog overwriting the title entered in the Dialog Table. If this part is present the second part must be present, too, to separate the part. (remember, the second part can be an empty list {}).
In case of the error dialog the FirstControl, DefaultControl and CancelControl entries in the Dialog Table are ignored, and the default button specified by the message plays all three roles.

#$K+Exit Dialog
	Msi Objects	Database Tables
This is a modal dialog that is displayed at the end of a successfull install. Typically contains only some text and an OK button. What is special about this dialog, that its name has to appear in the AdminSequence Table and InstallSequence Table with -1 as the sequence number.
#$K+FatalError Dialog
	Msi Objects	Database Tables
This is a modal dialog that is displayed at the end of an install, if it terminated because of a fatal error. Typically contains only some text and an OK button. What is special about this dialog, that its name has to appear in the AdminSequence Table and InstallSequence Table with -3 as the sequence number.
#$K+LicenseAgreement Dialog
	Msi Objects	Database Tables
This is a modal dialog that is used to display the license agreement to the user. Typically the text of the agreement is displayed in a ScrollableText control. When the database can handle arbitrary length strings, the text (in RTF format) will be read from the text field of the control. For the time being the text is hardwired in the control.
The dialog typically also contains a pair of radiobuttons that let the user accept or reject the agreement. For legal reasons it is advisable that neither of the buttons is selected initally, forcing the user to make an active choice. This can be achieved by not having an inital value for the property linked to the RadioButtonGroup. The author may also want to disable/enable the next button on this dialog, depending on the choice made. An other possible situation is, when the next button takes the user to different dialogs depending on the choice.

#$K+Selection Dialog
	Msi Objects	Database Tables
This is modal dialog letting the user select individual selection items. The dialog contains a SelectionTree control that displays the main information. This controls publishes several events that change the display on other controls of the dialog.Typically there are four Text controls subscribing to the SelectionAction, SelectionDescription, SelectionSize and SelectionPath events using the Text controlattribute. There is also an Icon control that subscribes to the SelectionIcon event through the ImageHandle attribute. The above controls use the EventMapping Table to specify these subscriptions. There is also a PushButton that subscribes to the SelectionBrowse event using the ControlEvent Table and giving the name of the Browse dialog as the argument. When a SelectionTree control is authored, the AbsentPath, SelAbsentAbsent, SelAbsentLocal, SelAbsentCD, SelAbsentNetwork, SelLocalAbsent, SelLocalLocal, SelLocalCD, SelLocalNetwork, SelCDAbsent, SelNetworkAbsent, SelCDLocal, SelNetworkLocal, SelCDCD, SelNetworkNetwork, SelChildCostPos, SelChildCostNeg, SelParentCostPosPos, SelParentCostPosNeg, SelParentCostNegPos, SelParentCostNegNeg, MenuAbsent, MenuLocal, MenuCD, MenuNetwork strings must be specified in the UIText table. The selection tree gets populated only if the DirectoryInitialize, CostInitialize and CostFinalize actions were all previously called.
#$K+UserExit Dialog
	Msi Objects	Database Tables
This is a modal dialog that is displayed at the end of an install, that was aborted by the user. Typically contains only some text and an OK button. What is special about this dialog, that its name has to appear in the AdminSequence Table and InstallSequence Table with -2 as the sequence number.