Reorganize Properties sections by control type

Replaces the flat per-property layout in protocol.md and README.md
with per-control subsections, each listing its supported properties.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Duensing 2026-03-05 16:23:49 -06:00
parent da21cc71f6
commit 3b4d97b0dc
2 changed files with 428 additions and 412 deletions

View file

@ -372,414 +372,306 @@ CTRL.SET 1 3 Text="world" Enabled=0
## Properties ## Properties
### Caption ### Common Properties
- **Applies to:** Label, Button, CheckBox, GroupBox, RadioButton, Panel, MenuItem, RadioGroup, BitBtn, SpeedButton These properties apply to all or most controls:
- **Format:** Quoted string
- **Example:** `Caption="Submit"`
The display text for labels, buttons, check boxes, group boxes, radio | Property | Format | Description |
buttons, panels, menu items, radio groups, and bitmap/speed buttons. |-----------|-------------------------------|-------------------------------|
| Enabled | `0` or `1` | Disable or enable the control |
| Visible | `0` or `1` | Hide or show the control |
| TabOrder | Integer | Keyboard tab order within the form (all windowed controls except Label and Image) |
| PopupMenu | Integer (ctrlId of PopupMenu) | Associates a right-click context menu with the control |
### Text ### Label, Button, GroupBox
- **Applies to:** Edit, ComboBox, Memo, MaskEdit | Property | Format |
- **Format:** Quoted string |----------|---------------|
- **Example:** `Text="Hello world"` | Caption | Quoted string |
The editable text content. For Memo controls, use `\n` for line The display text for the control.
breaks within the quoted string:
``` Example: `Caption="Submit"`
CTRL.SET 1 5 Text="Line one\nLine two\nLine three"
```
### Items ### Edit
- **Applies to:** ListBox, ComboBox, RadioGroup, TabSet, Notebook, TabbedNotebook, Outline, Header | Property | Format | Description |
- **Format:** Quoted string, items separated by `\n` |-----------|---------------|------------------------------------|
- **Example:** `Items="Red\nGreen\nBlue"` | Text | Quoted string | Editable text content |
| MaxLength | Integer | Max characters (0 = no limit) |
| ReadOnly | `0` or `1` | Prevent user editing when enabled |
Example: `Text="Hello world" MaxLength=50`
### CheckBox, RadioButton
| Property | Format | Description |
|----------|---------------|----------------------|
| Caption | Quoted string | Display text |
| Checked | `0` or `1` | Checked or unchecked |
Example: `Caption="Accept terms" Checked=1`
### ListBox
| Property | Format | Description |
|-----------|-------------------------------------|---------------|
| Items | Quoted string (`\n`-delimited) | Item list |
| ItemIndex | Integer (-1 = none) | Selected item |
Replaces the entire item list. The control is cleared before the Replaces the entire item list. The control is cleared before the
new items are added. new items are added.
### Checked Example: `Items="Red\nGreen\nBlue" ItemIndex=0`
- **Applies to:** CheckBox, RadioButton, MenuItem ### ComboBox
- **Format:** `0` (unchecked) or `1` (checked)
- **Example:** `Checked=1`
### Enabled | Property | Format | Description |
|-----------|-------------------------------------|-----------------|
| Text | Quoted string | Editable text |
| Items | Quoted string (`\n`-delimited) | Drop-down items |
| ItemIndex | Integer (-1 = none) | Selected item |
- **Applies to:** All control types Example: `Items="Red\nGreen\nBlue" ItemIndex=1`
- **Format:** `0` (disabled) or `1` (enabled)
- **Example:** `Enabled=0`
### Visible ### Memo
- **Applies to:** All control types | Property | Format | Description |
- **Format:** `0` (hidden) or `1` (visible) |------------|--------------------------------------|------------------|
- **Example:** `Visible=0` | Text | Quoted string (`\n` for line breaks) | Text content |
| ReadOnly | `0` or `1` | Prevent editing |
| ScrollBars | Integer 0-3 | Scroll bar style |
### MaxLength ScrollBars values:
- `0` — ssNone (no scroll bars)
- `1` — ssHorizontal
- `2` — ssVertical
- `3` — ssBoth
- **Applies to:** Edit, MaskEdit Example:
- **Format:** Integer (0 = no limit)
- **Example:** `MaxLength=50`
Maximum number of characters the user can type. ```
CTRL.SET 1 5 Text="Line one\nLine two\nLine three" ScrollBars=2
```
### ReadOnly ### Image
- **Applies to:** Edit, Memo | Property | Format | Description |
- **Format:** `0` (editable) or `1` (read-only) |-------------|--------------------------|--------------------------|
- **Example:** `ReadOnly=1` | Picture | Quoted string (filename) | BMP file to display |
| Stretch | `0` or `1` | Stretch to fill bounds |
| Center | `0` or `1` | Center within bounds |
| Transparent | `0` or `1` | Transparent background |
### ScrollBars Picture path is resolved relative to the client's `BasePath` setting.
Subdirectories are allowed. Only BMP files are supported.
- **Applies to:** Memo Example: `Picture="images\logo.bmp" Stretch=1`
- **Format:** Integer 0-3
- **Values:**
- `0` — ssNone (no scroll bars)
- `1` — ssHorizontal
- `2` — ssVertical
- `3` — ssBoth
- **Example:** `ScrollBars=2`
### ItemIndex
- **Applies to:** ListBox, ComboBox, RadioGroup, TabSet, Notebook, TabbedNotebook
- **Format:** Integer (-1 = no selection)
- **Example:** `ItemIndex=2`
### TabOrder
- **Applies to:** All windowed controls (all types except Label and Image)
- **Format:** Integer
- **Example:** `TabOrder=3`
Controls the keyboard tab navigation order within the form.
### Stretch
- **Applies to:** Image
- **Format:** `0` (off) or `1` (on)
- **Example:** `Stretch=1`
When enabled, the image is stretched to fill the control bounds.
### Center
- **Applies to:** Image
- **Format:** `0` (off) or `1` (on)
- **Example:** `Center=1`
When enabled, the image is centered within the control bounds.
### Transparent
- **Applies to:** Image
- **Format:** `0` (off) or `1` (on)
- **Example:** `Transparent=1`
When enabled, the image background is transparent.
### Picture
- **Applies to:** Image
- **Format:** Quoted string (filename)
- **Example:** `Picture="images\logo.bmp"`
BMP file to display. The path is resolved relative to the client's
`BasePath` setting. Subdirectories are allowed.
**Note:** `dfm2form` does not emit Picture from DFM files because **Note:** `dfm2form` does not emit Picture from DFM files because
image data is stored as a binary blob in the DFM. Set Picture at image data is stored as a binary blob in the DFM. Set Picture at
runtime via `CTRL.SET` or by manually editing the `.form` file. runtime via `CTRL.SET` or by manually editing the `.form` file.
### BevelOuter ### Panel
- **Applies to:** Panel | Property | Format | Description |
- **Format:** Integer 0-2 |-------------|---------------|--------------|
- **Values:** | Caption | Quoted string | Display text |
- `0` — bvNone | BevelOuter | Integer 0-2 | Outer bevel |
- `1` — bvLowered | BevelInner | Integer 0-2 | Inner bevel |
- `2` — bvRaised | BorderStyle | `0` or `1` | Border |
- **Example:** `BevelOuter=2`
### BevelInner Bevel values: `0` (bvNone), `1` (bvLowered), `2` (bvRaised).
BorderStyle values: `0` (bsNone), `1` (bsSingle).
- **Applies to:** Panel Example: `BevelOuter=2 BevelInner=1 BorderStyle=0`
- **Format:** Integer 0-2
- **Values:**
- `0` — bvNone
- `1` — bvLowered
- `2` — bvRaised
- **Example:** `BevelInner=1`
### BorderStyle (Panel) ### ScrollBar
- **Applies to:** Panel | Property | Format | Description |
- **Format:** `0` (bsNone) or `1` (bsSingle) |-------------|---------|---------------------------------------|
- **Example:** `BorderStyle=1` | Kind | Integer | `0` (sbHorizontal), `1` (sbVertical) |
| Min | Integer | Minimum value |
| Max | Integer | Maximum value |
| Position | Integer | Current position |
| LargeChange | Integer | Change on track click |
| SmallChange | Integer | Change on arrow click |
### Kind Example: `Kind=1 Min=0 Max=100 Position=50 LargeChange=10 SmallChange=1`
- **Applies to:** ScrollBar, BitBtn ### MediaPlayer
- **Format:** Integer
- **Values (ScrollBar):** `0` (sbHorizontal), `1` (sbVertical)
- **Values (BitBtn):** `0` (bkCustom), `1` (bkOK), `2` (bkCancel),
`3` (bkHelp), `4` (bkYes), `5` (bkNo), `6` (bkClose), `7` (bkAbort),
`8` (bkRetry), `9` (bkIgnore), `10` (bkAll)
- **Example:** `Kind=1`
### Min | Property | Format | Description |
|------------|---------------|-----------------------------------|
| FileName | Quoted string | Media file path |
| DeviceType | Quoted string | MCI device type |
| AutoOpen | `0` or `1` | Open file automatically |
| Command | Quoted string | Pseudo-property (triggers method) |
- **Applies to:** ScrollBar FileName path is resolved relative to the client's `BasePath` setting.
- **Format:** Integer
- **Example:** `Min=0`
### Max DeviceType values: `dtAutoSelect`, `dtAVIVideo`, `dtCDAudio`, `dtDAT`,
`dtDigitalVideo`, `dtMMMovie`, `dtOther`, `dtOverlay`, `dtScanner`,
`dtSequencer`, `dtVCR`, `dtVideodisc`, `dtWaveAudio`.
- **Applies to:** ScrollBar Command triggers a method call instead of setting a value. Valid
- **Format:** Integer commands: `Open`, `Play`, `Stop`, `Close`, `Pause`, `Resume`,
- **Example:** `Max=100` `Rewind`, `Next`, `Previous`.
### Position Example: `FileName="sounds\intro.wav" DeviceType="dtWaveAudio" AutoOpen=1`
- **Applies to:** ScrollBar ### MainMenu, PopupMenu
- **Format:** Integer
- **Example:** `Position=50`
### LargeChange No type-specific properties. One MainMenu per form (auto-attached).
PopupMenu is associated with any control via the common `PopupMenu`
property.
- **Applies to:** ScrollBar ### MenuItem
- **Format:** Integer
- **Example:** `LargeChange=10`
The amount the position changes when the user clicks the scroll bar | Property | Format | Description |
track. |----------|---------------|------------------------------|
| Caption | Quoted string | Menu item text |
| Parent | Integer | ctrlId of parent menu/item |
| Checked | `0` or `1` | Check mark |
| ShortCut | Integer | Delphi ShortCut value |
### SmallChange ShortCut uses Delphi's encoding (virtual key + modifier flags).
- **Applies to:** ScrollBar Example: `Caption="&Open" Parent=2 ShortCut=16463`
- **Format:** Integer
- **Example:** `SmallChange=1`
The amount the position changes when the user clicks an arrow button. ### RadioGroup
### FileName | Property | Format | Description |
|-----------|--------------------------------|---------------------|
| Caption | Quoted string | Group label |
| Items | Quoted string (`\n`-delimited) | Radio button labels |
| ItemIndex | Integer (-1 = none) | Selected item |
| Columns | Integer | Column count |
- **Applies to:** MediaPlayer Example: `Caption="Color" Items="Red\nGreen\nBlue" Columns=2 ItemIndex=0`
- **Format:** Quoted string (file path)
- **Example:** `FileName="sounds\intro.wav"`
Media file to open. The path is resolved relative to the client's ### BitBtn
`BasePath` setting.
### DeviceType | Property | Format | Description |
|-----------|---------------|------------------------|
| Caption | Quoted string | Button text |
| Kind | Integer 0-10 | Predefined button kind |
| Layout | Integer 0-3 | Glyph position |
| NumGlyphs | Integer 1-4 | Glyph images in bitmap |
- **Applies to:** MediaPlayer Kind values: `0` (bkCustom), `1` (bkOK), `2` (bkCancel), `3` (bkHelp),
- **Format:** Quoted string `4` (bkYes), `5` (bkNo), `6` (bkClose), `7` (bkAbort), `8` (bkRetry),
- **Example:** `DeviceType="dtWaveAudio"` `9` (bkIgnore), `10` (bkAll).
MCI device type. Valid values: `dtAutoSelect`, `dtAVIVideo`, Layout values: `0` (blGlyphLeft), `1` (blGlyphRight), `2` (blGlyphTop),
`dtCDAudio`, `dtDAT`, `dtDigitalVideo`, `dtMMMovie`, `dtOther`, `3` (blGlyphBottom).
`dtOverlay`, `dtScanner`, `dtSequencer`, `dtVCR`, `dtVideodisc`,
`dtWaveAudio`.
### AutoOpen NumGlyphs: number of glyph images (up, disabled, clicked, down).
- **Applies to:** MediaPlayer Example: `Caption="OK" Kind=1 Layout=0 NumGlyphs=2`
- **Format:** `0` (off) or `1` (on)
- **Example:** `AutoOpen=1`
When enabled, the media file is opened automatically when FileName ### SpeedButton
is set.
### Command | Property | Format | Description |
|------------|---------------|-----------------------------|
| Caption | Quoted string | Button text |
| Layout | Integer 0-3 | Glyph position |
| NumGlyphs | Integer 1-4 | Glyph images in bitmap |
| GroupIndex | Integer | Radio group (0 = no group) |
| Down | `0` or `1` | Pressed state |
| AllowAllUp | `0` or `1` | Allow all buttons unpressed |
- **Applies to:** MediaPlayer Layout values: `0` (blGlyphLeft), `1` (blGlyphRight), `2` (blGlyphTop),
- **Format:** Quoted string `3` (blGlyphBottom).
- **Example:** `Command="Play"`
Pseudo-property that triggers a method call instead of setting a
value. Valid commands: `Open`, `Play`, `Stop`, `Close`, `Pause`,
`Resume`, `Rewind`, `Next`, `Previous`.
### Parent
- **Applies to:** MenuItem
- **Format:** Integer (ctrlId of parent menu or menu item)
- **Example:** `Parent=1`
Specifies the parent for a menu item. The parent can be a MainMenu,
PopupMenu, or another MenuItem (for submenus).
### Columns
- **Applies to:** RadioGroup
- **Format:** Integer
- **Example:** `Columns=2`
Number of columns for the radio button layout.
### ShortCut
- **Applies to:** MenuItem
- **Format:** Integer (Delphi ShortCut value)
- **Example:** `ShortCut=16467`
Keyboard accelerator for the menu item. Uses Delphi's ShortCut
encoding (virtual key + modifier flags).
### PopupMenu
- **Applies to:** Any visual control
- **Format:** Integer (ctrlId of a PopupMenu)
- **Example:** `PopupMenu=2`
Associates a PopupMenu with a control. When the user right-clicks
the control, the popup menu is displayed.
### Layout
- **Applies to:** BitBtn, SpeedButton
- **Format:** Integer 0-3
- **Values:**
- `0` — blGlyphLeft
- `1` — blGlyphRight
- `2` — blGlyphTop
- `3` — blGlyphBottom
- **Example:** `Layout=2`
Position of the glyph relative to the caption text.
### NumGlyphs
- **Applies to:** BitBtn, SpeedButton
- **Format:** Integer (1-4)
- **Example:** `NumGlyphs=2`
Number of glyph images in the bitmap (up, disabled, clicked, down).
### GroupIndex
- **Applies to:** SpeedButton
- **Format:** Integer (0 = no group)
- **Example:** `GroupIndex=1`
Speed buttons with the same non-zero GroupIndex act as a radio group. Speed buttons with the same non-zero GroupIndex act as a radio group.
Down is only meaningful when GroupIndex is non-zero.
### Down Example: `GroupIndex=1 Down=1 AllowAllUp=0`
- **Applies to:** SpeedButton ### TabSet, Notebook, TabbedNotebook
- **Format:** `0` (up) or `1` (down)
- **Example:** `Down=1`
Whether the speed button is pressed. Only meaningful when | Property | Format | Description |
GroupIndex is non-zero. |-----------|--------------------------------|-------------|
| Items | Quoted string (`\n`-delimited) | Tab/page list |
| ItemIndex | Integer (-1 = none) | Active tab |
### AllowAllUp Example: `Items="General\nAdvanced\nAbout" ItemIndex=0`
- **Applies to:** SpeedButton ### MaskEdit
- **Format:** `0` (off) or `1` (on)
- **Example:** `AllowAllUp=1`
When enabled, all speed buttons in a group can be unpressed. | Property | Format | Description |
|-----------|---------------|-----------------------------------|
| Text | Quoted string | Editable text content |
| MaxLength | Integer | Max characters (0 = no limit) |
| EditMask | Quoted string | Input mask (mask;save;blank char) |
### EditMask Example: `EditMask="(999) 000-0000;1;_"`
- **Applies to:** MaskEdit ### Outline
- **Format:** Quoted string
- **Example:** `EditMask="(999) 000-0000;1;_"`
Input mask string (mask;save literals;blank char). | Property | Format | Description |
|--------------|--------------------------------|---------------|
| Items | Quoted string (`\n`-delimited) | Tree items |
| OutlineStyle | Integer 0-6 | Display style |
### OutlineStyle OutlineStyle values:
- `0` — osText
- `1` — osPlusMinusText
- `2` — osPlusMinus
- `3` — osPictureText
- `4` — osPicturePlusMinusText
- `5` — osTreeText
- `6` — osTreePictureText
- **Applies to:** Outline Example: `OutlineStyle=5`
- **Format:** Integer 0-6
- **Values:**
- `0` — osText
- `1` — osPlusMinusText
- `2` — osPlusMinus
- `3` — osPictureText
- `4` — osPicturePlusMinusText
- `5` — osTreeText
- `6` — osTreePictureText
- **Example:** `OutlineStyle=5`
### Shape ### Bevel
- **Applies to:** Bevel | Property | Format | Description |
- **Format:** Integer 0-5 |----------|-------------|----------------|
- **Values:** | Shape | Integer 0-5 | Bevel shape |
- `0` — bsBox | Style | `0` or `1` | Lowered/raised |
- `1` — bsFrame
- `2` — bsTopLine
- `3` — bsBottomLine
- `4` — bsLeftLine
- `5` — bsRightLine
- **Example:** `Shape=2`
### Style (Bevel) Shape values:
- `0` — bsBox
- `1` — bsFrame
- `2` — bsTopLine
- `3` — bsBottomLine
- `4` — bsLeftLine
- `5` — bsRightLine
- **Applies to:** Bevel Style values: `0` (bsLowered), `1` (bsRaised).
- **Format:** `0` (bsLowered) or `1` (bsRaised)
- **Example:** `Style=1`
### ColCount Example: `Shape=2 Style=1`
- **Applies to:** StringGrid ### Header
- **Format:** Integer (default 5)
- **Example:** `ColCount=10`
Number of columns in the grid. | Property | Format | Description |
|----------|--------------------------------|-----------------|
| Items | Quoted string (`\n`-delimited) | Section headers |
### RowCount Example: `Items="Name\nAge\nCity"`
- **Applies to:** StringGrid ### ScrollBox
- **Format:** Integer (default 5)
- **Example:** `RowCount=20`
Number of rows in the grid. No type-specific properties.
### FixedCols ### StringGrid
- **Applies to:** StringGrid | Property | Format | Description |
- **Format:** Integer (default 1) |------------------|---------------------------------------------------------|--------------------------|
- **Example:** `FixedCols=1` | ColCount | Integer (default 5) | Number of columns |
| RowCount | Integer (default 5) | Number of rows |
| FixedCols | Integer (default 1) | Non-scrollable left cols |
| FixedRows | Integer (default 1) | Non-scrollable top rows |
| DefaultColWidth | Integer (pixels) | Default column width |
| DefaultRowHeight | Integer (pixels) | Default row height |
| Options | Integer (bitmask) | Grid options |
| Cells | Quoted string (tab-delimited cols, `\n`-delimited rows) | Bulk-load all cells |
| Cell | Quoted string (`col,row,value`) | Set a single cell |
Number of non-scrollable columns on the left. Options bitmask of TGridOption values:
### FixedRows
- **Applies to:** StringGrid
- **Format:** Integer (default 1)
- **Example:** `FixedRows=1`
Number of non-scrollable rows at the top.
### DefaultColWidth
- **Applies to:** StringGrid
- **Format:** Integer (pixels)
- **Example:** `DefaultColWidth=80`
### DefaultRowHeight
- **Applies to:** StringGrid
- **Format:** Integer (pixels)
- **Example:** `DefaultRowHeight=20`
### Options (StringGrid)
- **Applies to:** StringGrid
- **Format:** Integer (bitmask)
- **Example:** `Options=1549`
Bitmask of TGridOption values:
| Bit | Value | Option | Description | | Bit | Value | Option | Description |
|-----|--------|---------------------|---------------------------| |-----|--------|---------------------|---------------------------|
@ -797,22 +689,13 @@ Bitmask of TGridOption values:
| 11 | 0x0800 | goTabs | Tab between cells | | 11 | 0x0800 | goTabs | Tab between cells |
| 12 | 0x1000 | goThumbTracking | Track scrollbar thumb | | 12 | 0x1000 | goThumbTracking | Track scrollbar thumb |
### Cells Cells is a bulk-load property: columns are separated by tab characters,
- **Applies to:** StringGrid
- **Format:** Quoted string (tab-delimited columns, `\n`-delimited rows)
- **Example:** `Cells="Name\tAge\nAlice\t30\nBob\t25"`
Bulk-loads all cell data. Columns are separated by tab characters,
rows by newlines. Row 0 is the first row (typically fixed header). rows by newlines. Row 0 is the first row (typically fixed header).
Cell sets a single cell value: column and row are zero-based indices.
### Cell Example: `Cells="Name\tAge\nAlice\t30\nBob\t25"`
- **Applies to:** StringGrid Example: `Cell="1,2,Hello"`
- **Format:** Quoted string (`col,row,value`)
- **Example:** `Cell="1,2,Hello"`
Sets a single cell value. Column and row are zero-based indices.
### BasePath ### BasePath

View file

@ -134,73 +134,206 @@ RadioGroup components do not support opt-in events.
## Properties ## Properties
| Property | Applies To | Value Format | ### Common Properties
|-------------|---------------------------------------------|-------------------------------------------|
| Caption | Label, Button, CheckBox, GroupBox, RadioButton, Panel, MenuItem, RadioGroup, BitBtn, SpeedButton | Quoted string | | Property | Applies To | Format |
| Text | Edit, ComboBox, Memo, MaskEdit | Quoted string (`\n` for line breaks) | |-----------|--------------|-------------------------------|
| Items | ListBox, ComboBox, RadioGroup, TabSet, Notebook, TabbedNotebook, Outline, Header | Quoted string (`\n`-delimited) |
| Checked | CheckBox, RadioButton, MenuItem | 0 or 1 |
| Enabled | All | 0 or 1 | | Enabled | All | 0 or 1 |
| Visible | All | 0 or 1 | | Visible | All | 0 or 1 |
| MaxLength | Edit, MaskEdit | Integer | | TabOrder | All windowed | Integer |
| ReadOnly | Edit, Memo | 0 or 1 |
| ScrollBars | Memo | 0-3 (ssNone..ssBoth) |
| ItemIndex | ListBox, ComboBox, RadioGroup, TabSet, Notebook, TabbedNotebook | Integer (-1 = none) |
| TabOrder | All windowed controls | Integer |
| Stretch | Image | 0 or 1 |
| Center | Image | 0 or 1 |
| Transparent | Image | 0 or 1 |
| Picture | Image | Quoted string (filename, BMP only) |
| BevelOuter | Panel | 0-2 (bvNone, bvLowered, bvRaised) |
| BevelInner | Panel | 0-2 (bvNone, bvLowered, bvRaised) |
| BorderStyle | Panel | 0-1 (bsNone, bsSingle) |
| Kind | ScrollBar, BitBtn | Integer (see below) |
| Min | ScrollBar | Integer |
| Max | ScrollBar | Integer |
| Position | ScrollBar | Integer |
| LargeChange | ScrollBar | Integer |
| SmallChange | ScrollBar | Integer |
| FileName | MediaPlayer | Quoted string (media file path) |
| DeviceType | MediaPlayer | Quoted string (e.g., `dtWaveAudio`) |
| AutoOpen | MediaPlayer | 0 or 1 |
| Command | MediaPlayer | Quoted string (pseudo-property, see below)|
| Parent | MenuItem | Integer (ctrlId of parent menu/item) |
| Columns | RadioGroup | Integer (number of columns) |
| ShortCut | MenuItem | Integer (Delphi ShortCut value) |
| PopupMenu | Any TControl | Integer (ctrlId of PopupMenu) | | PopupMenu | Any TControl | Integer (ctrlId of PopupMenu) |
| Layout | BitBtn, SpeedButton | 0-3 (blGlyphLeft..blGlyphBottom) |
| NumGlyphs | BitBtn, SpeedButton | Integer (1-4) |
| GroupIndex | SpeedButton | Integer (0 = no group) |
| Down | SpeedButton | 0 or 1 |
| AllowAllUp | SpeedButton | 0 or 1 |
| EditMask | MaskEdit | Quoted string |
| OutlineStyle| Outline | 0-6 (osText..osTreePictureText) |
| Shape | Bevel | 0-5 (bsBox..bsRightLine) |
| Style | Bevel | 0-1 (bsLowered, bsRaised) |
| ColCount | StringGrid | Integer (default 5) |
| RowCount | StringGrid | Integer (default 5) |
| FixedCols | StringGrid | Integer (default 1) |
| FixedRows | StringGrid | Integer (default 1) |
| DefaultColWidth | StringGrid | Integer (pixels) |
| DefaultRowHeight| StringGrid | Integer (pixels) |
| Options | StringGrid | Integer (bitmask, see below) |
| Cells | StringGrid | Quoted string (tab-delimited cols, `\n`-delimited rows) |
| Cell | StringGrid | Quoted string (`col,row,value`) |
File path properties (Picture, FileName) are resolved relative to the ### Label, Button, GroupBox
client's `BasePath` setting. Subdirectories are allowed (e.g.,
`Picture="images\logo.bmp"` with `BasePath=C:\MYAPP` resolves to
`C:\MYAPP\images\logo.bmp`).
Command is a pseudo-property that triggers a method call on the | Property | Format |
MediaPlayer rather than setting a value. Valid commands: `Open`, |----------|---------------|
`Play`, `Stop`, `Close`, `Pause`, `Resume`, `Rewind`, `Next`, | Caption | Quoted string |
`Previous`.
StringGrid Options is an integer bitmask of TGridOption values: ### Edit
| Property | Format |
|-----------|---------------|
| Text | Quoted string |
| MaxLength | Integer |
| ReadOnly | 0 or 1 |
### CheckBox, RadioButton
| Property | Format |
|----------|---------------|
| Caption | Quoted string |
| Checked | 0 or 1 |
### ListBox
| Property | Format |
|-----------|--------------------------------|
| Items | Quoted string (`\n`-delimited) |
| ItemIndex | Integer (-1 = none) |
### ComboBox
| Property | Format |
|-----------|--------------------------------|
| Text | Quoted string |
| Items | Quoted string (`\n`-delimited) |
| ItemIndex | Integer (-1 = none) |
### Memo
| Property | Format |
|------------|--------------------------------------|
| Text | Quoted string (`\n` for line breaks) |
| ReadOnly | 0 or 1 |
| ScrollBars | 0-3 (ssNone..ssBoth) |
### Image
| Property | Format |
|-------------|------------------------------------|
| Picture | Quoted string (filename, BMP only) |
| Stretch | 0 or 1 |
| Center | 0 or 1 |
| Transparent | 0 or 1 |
File path resolved relative to client's `BasePath` setting.
### Panel
| Property | Format |
|-------------|------------------------------------|
| Caption | Quoted string |
| BevelOuter | 0-2 (bvNone, bvLowered, bvRaised) |
| BevelInner | 0-2 (bvNone, bvLowered, bvRaised) |
| BorderStyle | 0-1 (bsNone, bsSingle) |
### ScrollBar
| Property | Format |
|-------------|-----------------------------------|
| Kind | 0 (sbHorizontal), 1 (sbVertical) |
| Min | Integer |
| Max | Integer |
| Position | Integer |
| LargeChange | Integer |
| SmallChange | Integer |
### MediaPlayer
| Property | Format |
|------------|-------------------------------------|
| FileName | Quoted string (media file path) |
| DeviceType | Quoted string (e.g., `dtWaveAudio`) |
| AutoOpen | 0 or 1 |
| Command | Quoted string (pseudo-property) |
File path resolved relative to client's `BasePath` setting.
Command triggers a method call rather than setting a value. Valid
commands: `Open`, `Play`, `Stop`, `Close`, `Pause`, `Resume`,
`Rewind`, `Next`, `Previous`.
### MainMenu, PopupMenu
No type-specific properties. One MainMenu per form (auto-attached).
PopupMenu is associated with controls via the common `PopupMenu`
property.
### MenuItem
| Property | Format |
|----------|--------------------------------------|
| Caption | Quoted string |
| Parent | Integer (ctrlId of parent menu/item) |
| Checked | 0 or 1 |
| ShortCut | Integer (Delphi ShortCut value) |
### RadioGroup
| Property | Format |
|-----------|--------------------------------|
| Caption | Quoted string |
| Items | Quoted string (`\n`-delimited) |
| ItemIndex | Integer (-1 = none) |
| Columns | Integer |
### BitBtn
| Property | Format |
|-----------|----------------------------------|
| Caption | Quoted string |
| Kind | 0-10 (bkCustom..bkAll) |
| Layout | 0-3 (blGlyphLeft..blGlyphBottom) |
| NumGlyphs | Integer (1-4) |
### SpeedButton
| Property | Format |
|------------|----------------------------------|
| Caption | Quoted string |
| Layout | 0-3 (blGlyphLeft..blGlyphBottom) |
| NumGlyphs | Integer (1-4) |
| GroupIndex | Integer (0 = no group) |
| Down | 0 or 1 |
| AllowAllUp | 0 or 1 |
### TabSet, Notebook, TabbedNotebook
| Property | Format |
|-----------|--------------------------------|
| Items | Quoted string (`\n`-delimited) |
| ItemIndex | Integer (-1 = none) |
### MaskEdit
| Property | Format |
|-----------|---------------|
| Text | Quoted string |
| MaxLength | Integer |
| EditMask | Quoted string |
### Outline
| Property | Format |
|--------------|---------------------------------|
| Items | Quoted string (`\n`-delimited) |
| OutlineStyle | 0-6 (osText..osTreePictureText) |
### Bevel
| Property | Format |
|----------|----------------------------|
| Shape | 0-5 (bsBox..bsRightLine) |
| Style | 0-1 (bsLowered, bsRaised) |
### Header
| Property | Format |
|----------|--------------------------------|
| Items | Quoted string (`\n`-delimited) |
### ScrollBox
No type-specific properties.
### StringGrid
| Property | Format |
|------------------|---------------------------------------------------------|
| ColCount | Integer (default 5) |
| RowCount | Integer (default 5) |
| FixedCols | Integer (default 1) |
| FixedRows | Integer (default 1) |
| DefaultColWidth | Integer (pixels) |
| DefaultRowHeight | Integer (pixels) |
| Options | Integer (bitmask, see below) |
| Cells | Quoted string (tab-delimited cols, `\n`-delimited rows) |
| Cell | Quoted string (`col,row,value`) |
Options is an integer bitmask of TGridOption values:
| Bit | Value | Option | | Bit | Value | Option |
|--------|--------|---------------------| |-----|--------|---------------------|
| 0 | 0x0001 | goFixedVertLine | | 0 | 0x0001 | goFixedVertLine |
| 1 | 0x0002 | goFixedHorzLine | | 1 | 0x0002 | goFixedHorzLine |
| 2 | 0x0004 | goVertLine | | 2 | 0x0004 | goVertLine |