# Full Description of Components

This appendix contains a complete description of each FormsVBT component. Each description contains the following sections:

- A banner containing the component's name, syntactic classification (`Leaf`, `Filter`, or `Split`), and whether it generates an event; `FormsVBT.Attach` and `FormsVBT.AttachProc` can be used to attach an event-handler to such a component.
- A short description of the component.
- The class-specific properties, if any, for the component.
- A description of the component's interactive behavior, if it generates an event.
- The component's shape information.
- Additional notes (optional).

The first line of each class-specific property contains the property name, the access information, the type, the default value, and a description of the property. Example:

Value `GP`
  (Boolean, `FALSE`)

The property name, `Value` in this example, is the symbol that would appear in the S-expression. The access information is indicated by the letters G and P. G means that the value of this property can be retrieved at runtime (``Get''); P means that the value can be set at runtime (``Put'').

If the name of the property is `Value` or `Main`, then you can retrieve the value of the property by calling `GetText`, `GetInteger`, or `GetBoolean`, depending on the type of the property, and you can set the value by calling `PutText`, `PutInteger`, or `PutBoolean`.

For properties other than `Value` or `Main`, you can retrieve the value of the property by calling `GetTextProperty` or `GetIntegerProperty`,and you can set the value by calling `PutTextProperty` or `PutIntegerProperty`. These procedures take the name of the property as an argument.

The descriptions in this appendix do not include the components' inheritable properties (see section [sec:inherited-props] , page [sec:inherited-props] ). All (well-behaved) components use these properties for displaying information. Some of these can be accessed at runtime, as the following list indicates:

Font `GP`
  (Font, default on page [sec:inherited-props] )
  The font used for Browser, DirMenu, FileBrowser, Helper, MultiBrowser, Numeric, TextEdit, Typein, and Typescript.
LabelFont `GP`
  (Font, default on page [sec:inherited-props] )
  The font used for Text and the Title of a ZChassis.
Color `P`
  (Color, `"Black"`) The foreground color.
BgColor `P`
  (Color, `0.8 0.8 0.8`) The background color.
LightShadow
  (Color, `"White"`)
DarkShadow
  (Color, `0.333 0.333 0.333`)
ShadowSize
  (Real, `1.5`)

Some components define enumerations that specify mutually exclusive choices for a single, unnamed property. Syntactically, these are all Boolean properties, but unlike other Boolean properties, which always have a `FALSE` default value, one of these will default to `TRUE`. Furthermore, specifying any of them as `TRUE` has the effect of declaring all the others to be `FALSE`.

For example, the shadow-style of a Frame may be raised, flat, lowered, ridged, or chiseled. The default is `Raised`, but if you write

    (Frame Lowered ...)

or, equivalently,

    (Frame (Lowered TRUE) ...)

then that has the effect of declaring `Raised`, `Flat`, etc., to be false.

- Bar (leaf)
- Boolean (filter, event)
- Border (filter)
- Browser (leaf, event)
- Button (filter, event)
- Chisel (leaf)
- Choice (filter, event)
- CloseButton (filter, event)
- DirMenu (leaf, event)
- FileBrowser (leaf, event)
- Fill (leaf)
- Filter (filter)
- Frame (filter)
- Generic (leaf)
- Glue (leaf)
- Guard (filter, event)
- HBox (split)
- HPackSplit (split)
- HTile (split)
- Helper (leaf, event)
- Insert (leaf)
- LinkButton (filter, event)
- LinkMButton (filter, event)
- MButton (filter, event)
- Menu (split, event)
- MultiBrowser (leaf, event)
- Numeric (leaf, event)
- PageButton (filter, event)
- PageMButton (filter, event)
- Pixmap (leaf)
- PopButton (filter, event)
- PopMButton (filter, event)
- Radio (filter, event)
- Ridge (leaf)
- Rim (filter)
- Scale (filter)
- Scroller (leaf, event)
- Shape (filter)
- Source (filter, event)
- Stable (filter)
- TSplit (split)
- Target (filter)
- Text (leaf)
- TextEdit (leaf)
- Texture (leaf)
- TrillButton (filter, event)
- TypeIn (leaf, event)
- Typescript (leaf)
- VBox (split)
- VPackSplit (split)
- VTile (split)
- Viewport (filter)
- ZBackground (filter)
- ZChassis (filter)
- ZChild (filter)
- ZGrow (filter, event)
- ZMove (filter, event)
- ZSplit (split)