More Controls
Additional FiveWin UI controls for labels, progress, layout, timers, and more
TSay -- Static Text
Source: source/classes/say.prg | Parent: TControl
TSay displays a static text label. It supports centered, right-aligned, bordered, 3D shaded, and transparent styles. The text can be data-bound via a code block and refreshed automatically.
| Property | Type | Description |
|---|---|---|
bGet | Block | Code block returning the text to display. Re-evaluated on Refresh(). |
cPicture | String | Format picture string (e.g. "999,999.99") |
l3D | Logical | 3D appearance (shaded, raised, or boxed) |
lAdjust | Logical | Auto-adjust width to text content |
lWantClick | Logical | If .T., the label responds to click events |
nClrBorder | Numeric | Custom border color (overrides standard border) |
bClrText | Block | Dynamic text color block, re-evaluated on Refresh() |
Command Syntax
@ nRow, nCol SAY [ oSay PROMPT ] cText ;
[ OF oWnd ] ;
[ PICTURE cPicture ] ;
[ FONT oFont ] ;
[ CENTERED | RIGHT ] ;
[ BORDER ] ;
[ SIZE nWidth, nHeight ] ;
[ COLOR nClrText, nClrBack ] ;
[ SHADED | BOX | RAISED ] ;
[ TRANSPARENT ] ;
[ ADJUST ]
Example
@ 1, 1 SAY oSay PROMPT "Total:" OF oDlg ;
FONT oBold COLOR CLR_BLUE, CLR_WHITE
@ 1, 10 SAY oTotal PROMPT nTotal OF oDlg ;
PICTURE "999,999.99" UPDATE
TMeter / TMeterEx -- Progress Meter
Source: source/classes/meter.prg | Parent: TControl
TMeter displays a progress bar with optional percentage text. It supports standard linear bars, circular meters, and bitmap-array styles. The TMeterEx variant adds enhanced visual effects with custom bitmaps.
| Property | Type | Description |
|---|---|---|
nTotal | Numeric | Maximum value of the meter |
nClrBar | Numeric | Color of the filled portion (default CLR_HBLUE) |
nClrBText | Numeric | Text color over the filled bar (default CLR_WHITE) |
nClrBlank | Numeric | Color of the unfilled portion |
lPercentage | Logical | Show percentage text on the meter |
cText | String | Custom text displayed on the meter instead of percentage |
cStyle | String | Style: nil (linear), "CIRCULAR", or "BMPARRAY" |
nClrFill | Numeric | Fill color for circular meter |
nClrBorder | Numeric | Border color |
Key Methods
| Method | Description |
|---|---|
Set( nActual ) | Set the current meter value and repaint |
SetTotal( nTotal ) | Change the total and refresh |
Command Syntax
@ nRow, nCol METER [ oMeter VAR ] nActual ;
TOTAL nTotal ;
[ OF oWnd ] ;
[ SIZE nWidth, nHeight ] ;
[ FONT oFont ] ;
[ PROMPT cText ] ;
[ NOPERCENTAGE ] ;
[ COLOR nClrPane, nClrText ] ;
[ BARCOLOR nClrBar, nClrBText ] ;
[ PIXEL ] ;
[ UPDATE ] ;
[ CIRCULAR [ INNERDIA nInnerDia ] ] ;
[ FILLCOLOR nClrFill ] ;
[ BORDERCOLOR nClrBorder ]
Example
LOCAL oMeter, nProgress := 0
@ 5, 2 METER oMeter VAR nProgress TOTAL 100 OF oDlg ;
SIZE 200, 20 PIXEL BARCOLOR CLR_GREEN, CLR_WHITE
// Update during processing
FOR n := 1 TO 100
nProgress := n
oMeter:Refresh()
SysRefresh()
NEXT
TProgress -- Progress Bar
Source: source/classes/progress.prg | Parent: TControl
TProgress wraps the Windows common control progress bar (msctls_progress32). It provides a native-looking progress indicator with optional stepped updates.
Command Syntax
@ nRow, nCol PROGRESS oPrg ;
[ OF oWnd ] ;
[ POS nPos ] ;
[ SIZE nWidth, nHeight ] ;
[ PIXEL ]
REDEFINE PROGRESS oPrg ID nId OF oWnd
Example
@ 3, 1 PROGRESS oPrg OF oDlg POS 0 SIZE 200, 18 PIXEL
// Step through progress
oPrg:SetRange( 0, 100 )
oPrg:SetStep( 1 )
FOR n := 1 TO 100
oPrg:StepIt()
SysRefresh()
NEXT
TSlider / TTrackBar -- Slider Control
Source: source/classes/slider.prg | Parent: TControl
TSlider is an owner-drawn trackbar for selecting a numeric value within a range by dragging a thumb. It supports horizontal/vertical orientation, tick marks, and a slim visual style.
| Property | Type | Description |
|---|---|---|
nMin | Numeric | Minimum value of the range |
nMax | Numeric | Maximum value of the range |
lHorizontal | Logical | Horizontal orientation (default) vs vertical |
nMarks | Numeric | Number of tick marks |
lExact | Logical | Snap to tick marks |
nClrBtn | Numeric | Thumb button color |
nClrMarks | Numeric | Tick mark color |
bPos | Block | Code block fired when thumb position changes |
lSlimStyle | Logical | Slim visual style |
Key Methods
| Method | Description |
|---|---|
Set( nVal ) | Programmatically set the slider value |
Change() | Called internally when value changes; fires bChange |
Example
LOCAL nVolume := 50
@ 3, 2 SLIDER oSlider VAR nVolume ;
HORIZONTAL OF oDlg ;
RANGE 0, 100 MARKS 10 ;
SIZE 200, 30 PIXEL ;
ON CHANGE UpdateVolume( nVolume )
TScrollBar -- Scroll Bar
Source: source/classes/scrllbar.prg | Parent: TControl
TScrollBar creates either a standalone scrollbar control or binds to a window's built-in scrollbar (via WinNew()). It supports vertical and horizontal orientations with page stepping, thumb tracking, and navigation callbacks.
| Property | Type | Description |
|---|---|---|
lVertical | Logical | Vertical (.T.) or horizontal (.F.) orientation |
nMin | Numeric | Minimum scroll position |
nMax | Numeric | Maximum scroll position |
nPgStep | Numeric | Page step increment |
bGoUp | Block | Action for scroll-up / scroll-left |
bGoDown | Block | Action for scroll-down / scroll-right |
bPageUp | Block | Action for page-up |
bPageDown | Block | Action for page-down |
bPos | Block | Action when thumb is positioned |
bTrack | Block | Action during thumb tracking (live drag) |
Key Methods
| Method | Description |
|---|---|
GetPos() | Returns the current scroll position |
SetPos( nPos ) | Sets the thumb to the given position |
SetRange( nMin, nMax ) | Sets the scroll range |
SetPage( nSize ) | Sets the page size |
GoUp() / GoDown() | Single step scroll and fire callback |
PageUp() / PageDown() | Page scroll and fire callback |
GoTop() / GoBottom() | Jump to min/max position |
Command Syntax
// Standalone scrollbar control
@ nRow, nCol SCROLLBAR [ oSbr ] ;
[ RANGE nMin, nMax ] ;
[ PAGESTEP nPgStep ] ;
[ VERTICAL | HORIZONTAL ] ;
[ OF oWnd ] ;
[ SIZE nWidth, nHeight ] ;
[ UP ACTION bUp ] [ DOWN ACTION bDown ] ;
[ PAGEUP bPgUp ] [ PAGEDOWN bPgDown ] ;
[ ON THUMBPOS bPos ] ;
[ PIXEL ]
// Window-attached scrollbar
DEFINE SCROLLBAR [ oSbr ] ;
[ VERTICAL | HORIZONTAL ] ;
OF oWnd ;
[ RANGE nMin, nMax ] ;
[ PAGESTEP nPgStep ] ;
[ UP ACTION bUp ] [ DOWN ACTION bDown ] ;
[ PAGEUP bPgUp ] [ PAGEDOWN bPgDown ] ;
[ ON THUMBPOS bPos ]
Example
DEFINE SCROLLBAR oScroll VERTICAL OF oWnd ;
RANGE 1, 100 PAGESTEP 10 ;
UP ACTION GoUp() ;
DOWN ACTION GoDown() ;
ON THUMBPOS { |nPos| GoToPos( nPos ) }
TSplitter -- Draggable Splitter
Source: source/classes/splitter.prg | Parent: TControl
TSplitter provides a draggable divider between two groups of controls. When the user drags the splitter, it resizes the controls on either side. Supports vertical and horizontal orientations, margin constraints, and gradient painting.
| Property | Type | Description |
|---|---|---|
lVertical | Logical | Vertical splitter bar (divides left/right) |
aPrevCtrols | Array | Controls on the "before" side (left or top) |
aHindCtrols | Array | Controls on the "after" side (right or bottom) |
lStatic | Logical | If .T., splitter is immovable |
l3D | Logical | 3D raised appearance |
lStyle | Logical | Modern style with gradient painting |
aGradient | Array | Normal gradient definition |
aGradientOver | Array | Mouse-over gradient definition |
bFirstMargin | Block | Minimum position constraint (top/left margin) |
bLastMargin | Block | Maximum position constraint (bottom/right margin) |
Key Methods
| Method | Description |
|---|---|
SetPosition( nPos ) | Move splitter to an absolute position |
AdjClient() | Auto-adjust to fill the client area |
AdjTop() / AdjBottom() | Dock to top or bottom |
AdjLeft() / AdjRight() | Dock to left or right |
Command Syntax
@ nRow, nCol SPLITTER [ oSplit ] ;
[ VERTICAL | HORIZONTAL ] ;
PREVIOUS CONTROLS oPrev1, oPrev2 [ NO ADJUST ] ;
HINDS CONTROLS oHind1, oHind2 [ NO ADJUST ] ;
[ TOP MARGIN nMargin1 ] ;
[ BOTTOM MARGIN nMargin2 ] ;
[ SIZE nWidth, nHeight ] ;
[ OF oWnd ] ;
[ ON CHANGE bChange ] ;
[ 3D ] ;
[ STYLE ] ;
[ PIXEL ]
Example
// Left panel and right panel with vertical splitter
@ 0, 0 PANEL oPnlLeft OF oWnd SIZE 200, 400
@ 0, 204 PANEL oPnlRight OF oWnd SIZE 400, 400
@ 0, 200 SPLITTER oSplit VERTICAL ;
PREVIOUS CONTROLS oPnlLeft ;
HINDS CONTROLS oPnlRight ;
SIZE 4, 400 PIXEL OF oWnd ;
LEFT MARGIN 100 RIGHT MARGIN 100 ;
STYLE
TPanel -- Container Panel
Source: source/classes/tpanel.prg | Parent: TControl
TPanel is a lightweight container control primarily used for layout alignment. Child controls placed on a panel move and resize with it, making it the foundation for split-panel layouts and dockable regions.
| Property | Type | Description |
|---|---|---|
nOpacity | Numeric | Alpha transparency (0-255, default 255 = opaque) |
nClrPane | Numeric | Background color |
Key Methods
| Method | Description |
|---|---|
New( nTop, nLeft, nBottom, nRight, oWnd, lDesign, cVarName, lBorder ) | Constructor |
Redefine( nId, oWnd, lDesign, cVarName, lBorder ) | Redefine from resource |
GoNextCtrl( hCtrl ) | Tab-navigate to next child control |
GoPrevCtrl( hCtrl ) | Tab-navigate to previous child control |
Example
// Panel aligned to fill the client area
@ 0, 0 PANEL oPanel OF oWnd SIZE 400, 300 BORDER
// Place controls inside the panel
@ 2, 2 SAY "Name:" OF oPanel
@ 2, 8 GET oGet VAR cName OF oPanel SIZE 150, 22 PIXEL
TScrollPanel -- Scrollable Panel
Source: source/classes/tscrlpnl.prg | Parent: TPanel
TScrollPanel extends TPanel with built-in scrollbar support. It is useful when the content area exceeds the visible area -- the panel automatically shows scrollbars and allows the user to scroll through all child controls.
Example
// A scrollable form with many fields
oScrlPanel := TScrollPanel():New( 0, 0, 300, 400, oDlg )
oScrlPanel:SetVirtualSize( 300, 800 ) // virtual height > visible height
// Place many controls inside
FOR n := 1 TO 20
@ n * 22, 10 SAY "Field " + Str(n) OF oScrlPanel PIXEL
NEXT
TReBar -- Rebar / CoolBar
Source: source/classes/rebar.prg | Parent: TControl
TReBar wraps the Windows ReBarWindow32 common control. It creates a container for dockable toolbar bands that the user can rearrange by dragging. Each band can hold a toolbar, combobox, or any other control.
| Method | Description |
|---|---|
New( oWnd ) | Constructor. Docks to the top of the parent window. |
InsertBand( oControl, cText ) | Add a control as a new rebar band with a label |
Command Syntax
DEFINE REBAR oReBar OF oWnd
Example
DEFINE REBAR oReBar OF oWnd
DEFINE BUTTONBAR oBar1 OF oReBar SIZE 32, 32
DEFINE BUTTON OF oBar1 RESOURCE "NEW" TOOLTIP "New" ACTION NewDoc()
DEFINE BUTTON OF oBar1 RESOURCE "OPEN" TOOLTIP "Open" ACTION OpenDoc()
oReBar:InsertBand( oBar1, "File" )
TPager -- Pager Control
Source: source/classes/tpager.prg | Parent: TControl
TPager wraps the Windows Pager common control. It creates a scrollable container for a child control (typically a toolbar) that is too wide to display in the available space. Arrow buttons appear at the edges to scroll the content.
Example
oPager := TPager():New( oWnd )
// Add a wide toolbar as the contained control
oPager:SetChild( oToolBar )
TTimer -- Timer
Source: source/classes/timer.prg | Parent: none (standalone)
TTimer provides periodic callback execution using Windows timers. It is not a visual control -- it runs in the background and fires its bAction block at regular intervals.
| Property | Type | Description |
|---|---|---|
nInterval | Numeric | Timer interval in milliseconds (default 18 ms) |
bAction | Block | Code block executed on each timer tick |
lActive | Logical | Whether the timer is currently running |
hWndOwner | Handle | Window that owns this timer |
nId | Numeric | Unique timer identifier |
Key Methods
| Method | Description |
|---|---|
New( nInterval, bAction, oWnd ) | Constructor. Creates the timer but does not start it. |
Activate() | Start the timer. It begins firing bAction every nInterval ms. |
DeActivate() | Stop the timer. |
End() | Stop and destroy the timer. |
Command Syntax
DEFINE TIMER [ oTimer ] ;
INTERVAL nMilliseconds ;
ACTION uAction ;
[ OF oWnd ]
ACTIVATE TIMER oTimer
Example
LOCAL oTimer
DEFINE TIMER oTimer ;
INTERVAL 1000 ;
ACTION UpdateClock( oSayClock ) ;
OF oWnd
ACTIVATE TIMER oTimer
// Later, to stop:
oTimer:DeActivate()
// To destroy:
oTimer:End()
TTrayIcon -- System Tray Icon
Source: source/classes/ttray.prg | Parent: none (standalone)
TTrayIcon places an icon in the Windows system notification area (system tray). It handles left-click, right-click, double-click, and mouse-move events, making it ideal for background applications and minimize-to-tray functionality.
| Property | Type | Description |
|---|---|---|
oWnd | Object | Hidden helper window that receives tray messages |
oIcon | Object | Icon displayed in the tray |
cCaption | String | Tooltip text |
bLClicked | Block | Left-click action |
bRClicked | Block | Right-click action (typically shows a popup menu) |
bLDblClick | Block | Left double-click action (typically restores the window) |
bMMoved | Block | Mouse-move action |
Key Methods
| Method | Description |
|---|---|
New( oWnd, oIcon, cTip, uLClick, uRClick, uMMoved, uLDblClick ) | Constructor. Creates and shows the tray icon. |
SetIcon( oIcon, cToolTip ) | Change the tray icon and tooltip at runtime |
SetText( cTitle ) | Change the tooltip text |
Refresh( oIcon, cTip, lAdd ) | Update the tray icon via Shell_NotifyIcon |
End() | Remove the tray icon |
Example
LOCAL oTray
oTray := TTrayIcon():New( oWnd, oIcon, "My Application",;
{ || oWnd:Show(), oWnd:SetFocus() },; // Left click: restore
{ || ShowTrayMenu( oTray ) },; // Right click: popup menu
,; // Mouse move
{ || oWnd:Show(), oWnd:SetFocus() } ) // Double click: restore
// Minimize to tray
oWnd:bMinimize := { || oWnd:Hide(), .F. }
// Cleanup
oWnd:bEnd := { || oTray:End() }
TToast -- Toast Notifications
Source: source/classes/ttoast.prg | Parent: TWindow
TToast creates popup notification windows (similar to Windows 10/11 toast notifications) that appear briefly and auto-dismiss. They support a header, body, footer, icons, custom fonts, rounded corners, and optional alert sounds.
| Property | Type | Description |
|---|---|---|
cHeader | String | Header text |
cBody | String | Body message text |
cFoot | String | Footer text |
cBmpLeft | String | Left-side bitmap (icon) |
cBmpFoot | String | Footer bitmap |
nClrTextHeader | Numeric | Header text color |
nClrTextBody | Numeric | Body text color |
nClrTextFoot | Numeric | Footer text color |
nClrBorder | Numeric | Border color |
lAlert | Logical | Play alert sound on show |
lBtnClose | Logical | Show close button (default .T.) |
nTimer | Numeric | Auto-dismiss time in milliseconds |
nWRadio | Numeric | Rounded corner width radius |
nHRadio | Numeric | Rounded corner height radius |
lUpPos | Logical | Slide up from bottom |
lLeftPos | Logical | Appear from left side |
nLevel | Numeric | Opacity level (0-255) |
Key Methods
| Method | Description |
|---|---|
New( nTop, nLeft, nWidth, nHeight, oWnd, ... ) | Constructor with full layout control |
NewToast( nType, cText, cBmp, nWidth, nHeight, oWnd, ... ) | Quick constructor for common toast types |
ActivaAlert() | Show the toast with animation |
Example
LOCAL oToast
oToast := TToast():New( , , 320, 120, oWnd, , ;
CLR_WHITE, RGB( 240, 240, 240 ), CLR_BLACK, ;
10, 10, 220, .T., .T., 5000 )
oToast:cHeader := "Notification"
oToast:cBody := "Record saved successfully!"
oToast:cBmpLeft := "bitmaps/check.bmp"
oToast:ActivaAlert()
TRating, TTagCloud, TUrlLink, TSysLink
TRating -- Star Rating
Source: source/classes/trating.prg | Parent: TControl
Displays a clickable star-rating widget (typically 1-5 stars). The user clicks to set a rating value.
oRating := TRating():New( nRow, nCol, oWnd, nStars, bChange )
TTagCloud -- Tag Cloud
Source: source/classes/ttagclou.prg | Parent: TControl
Displays a set of clickable text tags with varying font sizes based on weight/frequency. Click a tag to fire its action.
TUrlLink -- URL Hyperlink
Source: source/classes/urllink.prg | Parent: TControl
A clickable hyperlink label that opens the system browser when clicked. Changes cursor to a hand and underlines on hover.
@ 5, 2 URLLINK oLink PROMPT "Visit FiveTech" ;
URL "https://www.fivetechsoft.com" OF oDlg
TSysLink -- System Link
Source: source/classes/tsyslink.prg | Parent: TControl
Wraps the Windows SysLink common control. Supports multiple hyperlinks embedded within text using HTML-like <a href="..."> syntax.
TUpDown, THotKey, TAnimate, TIPAddress
TUpDown -- Spinner Control
Source: source/classes/updown.prg | Parent: TControl
An up/down spinner paired with a TGet for incrementing and decrementing a numeric value within a range.
@ 2, 10 GET oGet VAR nValue OF oDlg SIZE 60, 22 PIXEL SPINNER MIN 0 MAX 100
THotKey -- Hotkey Input
Source: source/classes/hotkey.prg | Parent: TControl
Wraps the Windows HotKey common control. Allows the user to press a key combination which is captured and stored for later use as an application shortcut.
TAnimate -- Animation Control
Source: source/classes/animate.prg | Parent: TControl
Wraps the Windows Animate common control for playing AVI clips (no sound). Useful for displaying progress animations.
@ 1, 1 ANIMATE oAnim OF oDlg FILE "progress.avi" SIZE 100, 80 PIXEL
oAnim:Play()
TIPAddress -- IP Address Input
Source: source/classes/ipaddr.prg | Parent: TControl
Wraps the Windows IP Address common control. Provides a four-field input for entering IPv4 addresses with automatic field validation and tab navigation between octets.
TActiveX -- ActiveX Container
Source: source/classes/activex.prg | Parent: TControl
TActiveX hosts ActiveX/COM controls inside a FiveWin window. It can embed Internet Explorer, media players, PDF viewers, and any registered ActiveX component.
oActiveX := TActiveX():New( oWnd, "Shell.Explorer.2" )
oActiveX:Do( "Navigate2", "https://www.google.com" )
TDatePicker / TTimePicker
Source: source/classes/dtpick.prg | Parent: TControl
TDatePicker wraps the Windows Date-Time Picker common control, providing a dropdown calendar for date selection. TTimePicker uses the same control with time-selection mode.
@ 3, 2 DTPICKER oDate VAR dDate OF oDlg SIZE 120, 22 PIXEL
// Time picker
@ 3, 16 TIMEPICKER oTime VAR cTime OF oDlg SIZE 100, 22 PIXEL
TGroupEx -- Accordion Group
Source: source/classes/tgroupex.prg | Header: include/tgroupex.ch | Parent: TControl | Author: Silvio Falconi
TGroupEx is a collapsible group container with a self-painted rounded header that holds a title, an optional icon and an expand/collapse button. Several TGroupEx instances can be linked together with LINK GROUPS so they behave as a vertical accordion: opening one panel re-stacks the others underneath it, and the last panel can optionally stretch to fill the remaining height.
| Property | Type | Description |
|---|---|---|
cTitle | String | Text drawn in the header band |
cImage | String | Optional bitmap/icon file shown left of the title |
lExpanded | Logical | Current state. Toggled by Toggle() |
nHeader_Height | Numeric | Header band height (auto-grows if image is taller) |
nBetweenSpace | Numeric | Vertical gap between linked panels (default 10) |
lStretchLast | Logical | If .T., the last linked panel fills the remaining height |
aCtrls | Array | Child controls hidden/shown on collapse. Populate with AddCtrl() |
aRelatedGroups | Array | Other TGroupEx objects that participate in the same accordion |
nClrTitle / nClrHover | Numeric | Title text colors (default + hover) |
nBtnHoverClr / nBtnBorderClr | Numeric | Expand-button hover and border colors |
bTitle | Block | Click block on the title text. Receives Self. Defaults to Toggle() |
bToggled | Block | Fired after Toggle() with ( Self, lExpanded ) |
Command Syntax
@ nRow, nCol GROUPEX oGrp ;
[ OF oWnd ] ;
SIZE nWidth, nHeight ;
TITLE cTitle ;
[ IMAGE cBmp ] ;
[ OPENBTN cBmp1 CLOSEBTN cBmp2 ] ;
[ BORDER ] [ COLORBORDER nClr ] ;
[ BACKCOLOR nClr ] ;
[ DESIGN ] [ PIXEL ]
REDEFINE GROUPEX oGrp ID nId [ OF oDlg ] TITLE cTitle [ IMAGE cBmp ] ...
SET STYLE OF oGrp TO nStyle THEME nTheme // nTheme: 1 Win, 2 Orange, 3 Dark
SET LAST OF oGrp STRETCH // last panel fills remaining height
LINK GROUPS { oGrp1, oGrp2, oGrp3 } // accordion behaviour
OPEN ALL GROUPS OF oGrp
CLOSE ALL GROUPS OF oGrp
Accordion sample
#include "FiveWin.ch"
#include "tgroupex.ch"
FUNCTION Main()
LOCAL oDlg, oGrp1, oGrp2, oGrp3, oFont
DEFINE FONT oFont NAME "Segoe UI" SIZE 0, -12
DEFINE DIALOG oDlg SIZE 580, 550 PIXEL FONT oFont ;
TITLE "Northwind Style Groups" COLOR CLR_BLACK, CLR_WHITE
@ 10, 10 GROUPEX oGrp1 OF oDlg SIZE 540, 240 TITLE "Categories" PIXEL
@ 260, 10 GROUPEX oGrp2 OF oDlg SIZE 540, 180 TITLE "Products" PIXEL
@ 450, 10 GROUPEX oGrp3 OF oDlg SIZE 540, 130 TITLE "Orders" PIXEL
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT LINK GROUPS { oGrp1, oGrp2, oGrp3 }
RELEASE FONT oFont
RETURN NIL
Controls placed OF oGrp are children of the panel. To make them disappear when the panel collapses, register each one with oGrp:AddCtrl( oCtrl ) (or copy oGrp:aControls into oGrp:aCtrls). The full sample lives at samples/test/ui/testgrpex.prg.
See Also
- TControl -- parent class for most controls
- TButton / TBtnBmp -- buttons and toolbars
- TGet / TMGet -- text input controls
- TListView -- list view with icons and columns
- TTreeView -- hierarchical tree control