Buenos dias Roberto.
Prueba esta opción, a ver si te gusta.
Al pulsar click, sobre el botón, se desplega un sub menu de botones, se abre una ventana POPUP, donde puedes poner lo que quieras.
Te he desarrollado algunas posibilidades, aunque creo que el límite será tu necesidad o imaginación.
1) Botones verticales
2) Botones horizontales
3) Mix de tipos de botones
4) Un dialogo.
Al perder el foco, la ventana POPUP, se cierra y finaliza.
FOTOS /////////////////////////
1) BOTONES VERTICALES
2) BOTONES HORIZONTALES
3) BOTONES MIXTOS (DE DISTINTOS TIPOS)
4) DIALOGO (Puedes poner lo que quieras)
CODIGO. te copio el código del ejemplo. Ajusta los ficheros de imagen, etc....
LA VENTANA ES MDICHILD, cambialo para tu ejemplo si es necesario
Code: Select all
# INCLUDE "FIVEWIN.CH"
FUNCTION BTNxBTN()
LOCAL oWnd
LOCAL oFont
LOCAL aBotones:=ARRAY(5)
LOCAL oIIButtons // BARRA DE BOTONES
DEFINE FONT oFont NAME "Segoe UI Symbol" SIZE 0,-18
DEFINE WINDOW oWnd FROM 100,100 TO 600,1200 MDICHILD TITLE "Botones sobre botones - PRUEBAS" COLOR CLR_BLACK, GetSysColor(15)
DEFINE BUTTONBAR oIIButtons OF oWnd SIZE 40,40 _3D
@06,010 BTNBMP aBotones[1] FILE "EXIT_W10.BMP" SIZE 30,30 ACTION oWnd:End() OF oIIButtons UPDATE NOBORDER
@06,060 BTNBMP aBotones[2] FILE "BTNXBTN1.BMP" SIZE 30,30 ACTION SUB_BOTONES(oIIButtons,aBotones[2]) OF oIIButtons UPDATE NOBORDER
@06,110 BTNBMP aBotones[3] FILE "BTNXBTN2.BMP" SIZE 30,30 ACTION SUB_BOTONES2(oIIButtons,aBotones[3]) OF oIIButtons UPDATE NOBORDER
@06,160 BTNBMP aBotones[4] FILE "BTNXBTN3.BMP" SIZE 30,30 ACTION SUB_BOTONES3(oIIButtons,aBotones[4]) OF oIIButtons UPDATE NOBORDER
@06,210 BTNBMP aBotones[5] FILE "BTNXBTN4.BMP" SIZE 30,30 ACTION SUB_BOTONES4(oIIButtons,aBotones[5]) OF oIIButtons UPDATE NOBORDER
ACTIVATE WINDOW oWnd MAXIMIZED
RETURN(NIL)
/////////////////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION SUB_BOTONES(oBarra,oBoton)
LOCAL oWnd
LOCAL nFila:=oBoton:nTop+80
LOCAL nColumna:=oBoton:nLeft
LOCAL oBt1, oBt2, oBt3
DEFINE WINDOW oWnd OF oBarra STYLE WS_POPUP FROM nFila, nColumna TO nFila+122, nColumna+42 PIXEL COLOR CLR_BLACK, RGB(159,177,181)
@01,1 BTNBMP oBt1 FILE "PRINT_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 1") OF oWnd UPDATE NOBORDER
@41,1 BTNBMP oBt2 FILE "FIND_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 2 ") OF oWnd UPDATE NOBORDER
@81,1 BTNBMP oBt3 FILE "OK_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 3 ") OF oWnd UPDATE NOBORDER
ACTIVATE WINDOW oWnd
oWnd:bLostFocus := { || oWnd:End() }
return(nil)
//////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION SUB_BOTONES2(oBarra,oBoton)
LOCAL oWnd
LOCAL nFila:=oBoton:nTop+80
LOCAL nColumna:=oBoton:nLeft
LOCAL oBt1, oBt2, oBt3
DEFINE WINDOW oWnd OF oBarra STYLE WS_POPUP FROM nFila, nColumna TO nFila+42, nColumna+122 PIXEL COLOR CLR_BLACK, RGB(159,177,181)
@01,1 BTNBMP oBt1 FILE "PRINT_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 1") OF oWnd UPDATE NOBORDER
@01,41 BTNBMP oBt2 FILE "FIND_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 2 ") OF oWnd UPDATE NOBORDER
@01,81 BTNBMP oBt3 FILE "OK_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 3 ") OF oWnd UPDATE NOBORDER
ACTIVATE WINDOW oWnd
oWnd:bLostFocus := { || oWnd:End() }
return(nil)
////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION SUB_BOTONES3(oBarra,oBoton)
LOCAL oWnd
LOCAL nFila:=oBoton:nTop+80
LOCAL nColumna:=oBoton:nLeft
LOCAL oBt1, oBt2, oBt3, oBt4, oBt5, oBt6
DEFINE WINDOW oWnd OF oBarra STYLE WS_POPUP FROM nFila, nColumna TO nFila+200, nColumna+150 PIXEL COLOR CLR_BLACK, RGB(159,177,181)
@01,31 BTNBMP oBt1 FILE "PRINT_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 1") OF oWnd UPDATE NOBORDER
@01,71 BTNBMP oBt2 FILE "FIND_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 2 ") OF oWnd UPDATE NOBORDER
@01,111 BTNBMP oBt3 FILE "OK_W10.BMP" SIZE 40,40 ACTION MSGALERT("NO DESARROLLADO 3 ") OF oWnd UPDATE NOBORDER
@50,5 BTNBMP oBt4 FILE "CANCEL_W10.BMP" SIZE 140,40 ACTION MSGALERT("NO DESARROLLADO 4 ") OF oWnd UPDATE NOBORDER PROMPT " Cancelar" LEFT
@95,5 BTNBMP oBt5 FILE "ok_W10.BMP" SIZE 140,40 ACTION MSGALERT("NO DESARROLLADO 5 ") OF oWnd UPDATE NOBORDER PROMPT " Validar" LEFT
@160,5 BUTTON oBt6 PROMPT "Mas información" SIZE 140,30 ACTION MSGALERT("MAS INFORMACION NO DISPONIBLE") OF oWnd PIXEL
ACTIVATE WINDOW oWnd
oWnd:bLostFocus := { || oWnd:End() }
return(nil)
/////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION SUB_BOTONES4(oBarra,oBoton)
LOCAL oWnd
LOCAL nFila:=oBoton:nTop+80
LOCAL nColumna:=oBoton:nLeft
LOCAL oBt1
LOCAL oFont
LOCAL oGet1, cVar1:=SPACE(30)
LOCAL oCheck, lCheck:=.t.
DEFINE FONT oFont NAME "Segoe UI Symbol" SIZE 0,-20
DEFINE WINDOW oWnd OF oBarra STYLE WS_POPUP FROM nFila, nColumna TO nFila+300, nColumna+300 PIXEL COLOR CLR_BLACK, RGB(159,177,181)
@10,10 SAY "Busqueda avanzada" OF oWnd PIXEL SIZE 280,30 COLOR CLR_BLACK, CLR_GRAY FONT oFont CENTER
@90,20 SAY "Cliente" OF oWnd PIXEL SIZE 50,22
@85,65 GET oGet1 VAR cVar1 OF oWnd PIXEL SIZE 200,22
@125,65 CHECKBOX oCheck VAR lCheck PROMPT "Busqueda alternativa" OF oWnd PIXEL SIZE 200,22
@260,200 BUTTON oBt1 PROMPT "Aceptar" SIZE 90,30 ACTION MSGALERT("REALIZAMOS BUSQUEDA DE : "+ALLTRIM(cVar1)+" Y/O CERRAMOS EL DIALOGO DE BUSQUEDA") OF oWnd PIXEL
ACTIVATE WINDOW oWnd
oWnd:bLostFocus := { || oWnd:End() }
return(nil)