Silvio,
You can connect a dialog to the button on action.
Dialog-top = button-bottom, dialog-left = button-left.
There You can include what ever You want.
If needed You can paint a colored border around the dialog.
The logic can be used on any other object.
In xBrowse it is connected to a cell.
connecting the dialog to the button ( main function )
// --------------
...
...
DEFINE DIALOG oDlg1 FROM 0, 0 TO 180, 200 OF oDlg PIXEL TRUEPIXEL FONT oFont ;
STYLE WS_POPUP
...
@ 20, 30 BTNBMP oBtn1 2007 ;
SIZE 30, 30 OF oDlg NOBORDER ;
ACTION
MYDLG( oDlg, oBtn1, oFont )
...
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
// --------------
FUNCTION
MYDLG( oDlg, oBtn, oFont )
LOCAL oDlg1, oBtn2, oSlider1, nSlidPos1 := 1, oSlider2, nSlidPos2 := 2
LOCAL oRect1 := oDlg:GetRect()
LOCAL nTop1 := oRect1:nTop
LOCAL nLeft1 := oRect1:nLeft
LOCAL nTop2 := oBtn:nTop() + oBtn:nHeight() + 25 // 25 = dlg-title
LOCAL nLeft2 := oBtn:nLeft()
DEFINE DIALOG oDlg1 FROM 0, 0 TO 180, 200 OF oDlg PIXEL TRUEPIXEL FONT oFont ;
STYLE WS_POPUP
@ 20, 20 SLIDER oSlider1 VAR nSlidPos1 OF oDlg1 ;
HORIZONTAL ;
RANGE 0, 10 ;
COLORS CLR_RED, CLR_HGRAY, CLR_CYAN ;
MARKS 10 ;
SIZE 160, 35 PIXEL UPDATE
oSlider1:SetFont( oFont )
@ 80, 20 SLIDER oSlider2 VAR nSlidPos2 OF oDlg1 ;
HORIZONTAL ;
RANGE 0, 10 ;
COLORS CLR_RED, CLR_HGRAY, CLR_CYAN ;
MARKS 10 ;
SIZE 160, 35 PIXEL UPDATE
oSlider2:SetFont( oFont )
ACTIVATE DIALOG oDlg1 ;
ON INIT oDlg1:Move( nTop1 + nTop2, nLeft1 + nLeft2, , , .t. )
RETURN NIL
best regards
Uwe