la clase TSBUTTON de M.Mercado tiene lo que necesitas.
*=============================================================================
* TSButton.ch Version 4.0 1/Aug/2002
* Static Lines and Boxes from code
*=============================================================================
#xcommand @ <nTop>, <nLeft> [STATIC <oLine>] ;
<cType: HORZ LINE, HLINE, VERT LINE, VLINE, WHITE BOX, WBOX, ;
GRAY BOX, GBOX, BLACK BOX, BBOX> ;
[ SIZE <nWidth> [, <nHeight > ] ] ;
[ OF <oWnd> ] ;
[ <Colors: COLOR, COLORS> <nClrLite> [,<nClrDark> [,<nClrText> ] ] ] ;
[ <lPixel: PIXEL, PIXELS> ] ;
[ <lUpdate: UPDATE> ] ;
[ <lRounded: ROUNDED> ] ;
[ <label:LABEL, TEXT, PROMPT> <cLabel> ] ;
[ FONT <oFont> ] ;
[ ALIGN <nAlign> ] ;
[ <lDesign: DESIGN> ] ;
=> ;
[ <oLine> := ] TSLines():New( <nTop>, <nLeft>, <nWidth>, ;
<nHeight>, Upper(<(cType)>), <oWnd>, <nClrLite>, ;
<nClrDark>, <nClrText>, <.lPixel.>, <.lUpdate.>, ;
<.lRounded.>, <cLabel>, <oFont>, <nAlign>, ;
<.lDesign.> )
*=============================================================================
* TSButton.ch Version 4.0 1/Aug/2002
* Static Lines and Boxes from resources
*=============================================================================
#xcommand REDEFINE [STATIC <oLine> ] ;
<cType: HORZ LINE, HLINE, VERT LINE, VLINE, WHITE BOX, WBOX, ;
GRAY BOX, GBOX, BLACK BOX, BBOX> ;
[ ID <nId> ] ;
[ OF <oWnd> ] ;
[ <Colors: COLOR, COLORS> <nClrLite> [,<nClrDark> [,<nClrText> ] ] ] ;
[ <lUpdate: UPDATE> ] ;
[ <lRounded: ROUNDED> ] ;
[ <label:LABEL, TEXT, PROMPT> <cLabel> ] ;
[ FONT <oFont> ] ;
[ ALIGN <nAlign> ] ;
[ <lDesign: DESIGN> ] ;
=> ;
[ <oLine> := ] TSLines():ReDefine( Upper(<(cType)>), <nId>, ;
<oWnd>, <nClrLite>, <nClrDark>, <nClrText>, ;
<.lUpdate.>, <.lRounded.>, <cLabel>, <oFont>, ;
<nAlign>, <.lDesign.> )