More Controls

Additional FiveWin UI controls for labels, progress, layout, timers, and more

graph TD TControl --> TSay TControl --> TMeter TControl --> TProgress TControl --> TSlider TControl --> TScrollBar TControl --> TSplitter TControl --> TPanel subgraph "Display" TSay TMeter TProgress TSlider end subgraph "Layout" TPanel TSplitter TScrollBar TReBar end TWindow --> TTimer TWindow --> TTrayIcon TWindow --> TToast subgraph "Utility" TTimer TTrayIcon TToast end TControl --> TGroupEx subgraph "Containers" TGroupEx end style TSay fill:#1c2129,stroke:#58a6ff,stroke-width:2px,color:#e6edf3 style TMeter fill:#1c2129,stroke:#58a6ff,stroke-width:2px,color:#e6edf3 style TPanel fill:#1c2129,stroke:#58a6ff,stroke-width:2px,color:#e6edf3 style TTimer fill:#1c2129,stroke:#58a6ff,stroke-width:2px,color:#e6edf3

TSay -- Static Text

Fuente: 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.

PropertyTypeDescription
bGetBlockCode block returning the text to display. Re-evaluated on Refresh().
cPictureStringFormat picture string (e.g. "999,999.99")
l3DLogical3D appearance (shaded, raised, or boxed)
lAdjustLogicalAuto-adjust width to text content
lWantClickLogicalIf .T., the label responds to click events
nClrBorderNumericCustom border color (overrides standard border)
bClrTextBlockDynamic 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

Fuente: 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.

PropertyTypeDescription
nTotalNumericMaximum value of the meter
nClrBarNumericColor of the filled portion (default CLR_HBLUE)
nClrBTextNumericText color over the filled bar (default CLR_WHITE)
nClrBlankNumericColor of the unfilled portion
lPercentageLogicalShow percentage text on the meter
cTextStringCustom text displayed on the meter instead of percentage
cStyleStringStyle: nil (linear), "CIRCULAR", or "BMPARRAY"
nClrFillNumericFill color for circular meter
nClrBorderNumericBorder color

Key Methods

MethodDescription
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

Fuente: 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

Fuente: 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.

PropertyTypeDescription
nMinNumericMinimum value of the range
nMaxNumericMaximum value of the range
lHorizontalLogicalHorizontal orientation (default) vs vertical
nMarksNumericNumber of tick marks
lExactLogicalSnap to tick marks
nClrBtnNumericThumb button color
nClrMarksNumericTick mark color
bPosBlockCode block fired when thumb position changes
lSlimStyleLogicalSlim visual style

Key Methods

MethodDescription
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

Fuente: 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.

PropertyTypeDescription
lVerticalLogicalVertical (.T.) or horizontal (.F.) orientation
nMinNumericMinimum scroll position
nMaxNumericMaximum scroll position
nPgStepNumericPage step increment
bGoUpBlockAction for scroll-up / scroll-left
bGoDownBlockAction for scroll-down / scroll-right
bPageUpBlockAction for page-up
bPageDownBlockAction for page-down
bPosBlockAction when thumb is positioned
bTrackBlockAction during thumb tracking (live drag)

Key Methods

MethodDescription
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

Fuente: 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.

PropertyTypeDescription
lVerticalLogicalVertical splitter bar (divides left/right)
aPrevCtrolsArrayControls on the "before" side (left or top)
aHindCtrolsArrayControls on the "after" side (right or bottom)
lStaticLogicalIf .T., splitter is immovable
l3DLogical3D raised appearance
lStyleLogicalModern style with gradient painting
aGradientArrayNormal gradient definition
aGradientOverArrayMouse-over gradient definition
bFirstMarginBlockMinimum position constraint (top/left margin)
bLastMarginBlockMaximum position constraint (bottom/right margin)

Key Methods

MethodDescription
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

Fuente: 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.

PropertyTypeDescription
nOpacityNumericAlpha transparency (0-255, default 255 = opaque)
nClrPaneNumericBackground color

Key Methods

MethodDescription
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

Fuente: 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

Fuente: 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.

MethodDescription
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

Fuente: 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

Fuente: 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.

PropertyTypeDescription
nIntervalNumericTimer interval in milliseconds (default 18 ms)
bActionBlockCode block executed on each timer tick
lActiveLogicalWhether the timer is currently running
hWndOwnerHandleWindow that owns this timer
nIdNumericUnique timer identifier

Key Methods

MethodDescription
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

Fuente: 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.

PropertyTypeDescription
oWndObjectHidden helper window that receives tray messages
oIconObjectIcon displayed in the tray
cCaptionStringTooltip text
bLClickedBlockLeft-click action
bRClickedBlockRight-click action (typically shows a popup menu)
bLDblClickBlockLeft double-click action (typically restores the window)
bMMovedBlockMouse-move action

Key Methods

MethodDescription
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

Fuente: 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.

PropertyTypeDescription
cHeaderStringHeader text
cBodyStringBody message text
cFootStringFooter text
cBmpLeftStringLeft-side bitmap (icon)
cBmpFootStringFooter bitmap
nClrTextHeaderNumericHeader text color
nClrTextBodyNumericBody text color
nClrTextFootNumericFooter text color
nClrBorderNumericBorder color
lAlertLogicalPlay alert sound on show
lBtnCloseLogicalShow close button (default .T.)
nTimerNumericAuto-dismiss time in milliseconds
nWRadioNumericRounded corner width radius
nHRadioNumericRounded corner height radius
lUpPosLogicalSlide up from bottom
lLeftPosLogicalAppear from left side
nLevelNumericOpacity level (0-255)

Key Methods

MethodDescription
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

Fuente: 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

Fuente: 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.

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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

Fuente: 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.

PropertyTypeDescription
cTitleStringText drawn in the header band
cImageStringOptional bitmap/icon file shown left of the title
lExpandedLogicalCurrent state. Toggled by Toggle()
nHeader_HeightNumericHeader band height (auto-grows if image is taller)
nBetweenSpaceNumericVertical gap between linked panels (default 10)
lStretchLastLogicalIf .T., the last linked panel fills the remaining height
aCtrlsArrayChild controls hidden/shown on collapse. Populate with AddCtrl()
aRelatedGroupsArrayOther TGroupEx objects that participate in the same accordion
nClrTitle / nClrHoverNumericTitle text colors (default + hover)
nBtnHoverClr / nBtnBorderClrNumericExpand-button hover and border colors
bTitleBlockClick block on the title text. Receives Self. Defaults to Toggle()
bToggledBlockFired 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.

Ver También