Estoy intentando hacer los siguiente:
"al hacer click sobre un botón de la barra de herramienta, que aparezca el menú PopUp automáticamente y si no se selecciona una opción del menú, que se ejecute la acción del botón"
Para esto modifique la clase TBtnBmp:
- Code: Select all Expand view RUN
METHOD LButtonDown( nRow, nCol ) CLASS TBtnBmp
local oWnd
if ::lDrag .or. ! Empty( ::oDragCursor )
return Super:LButtonDown( nRow, nCol )
endif
::lWorking = .T.
::lBtnUp = .F.
SetFocus( ::hWnd ) // To let the main window child control
SysRefresh() // process its valid
//Aca el cambio...
//copiado de ::LButtonUp() (codigo que muestra PopUp)
if ::oPopup != nil
if ::oWnd:oWnd != nil .and. Upper( ::oWnd:oWnd:Classname() ) == "TBAR"
oWnd := ::oWnd:oWnd
else
oWnd := ::oWnd
endif
//oWnd:NcMouseMove() // close the tooltip
oWnd:oPopup = If( ValType( ::oPopup ) == 'B', Eval( ::oPopUp, Self ), ::oPopUp )
oWnd:oPopup:Activate( ::nTop + ::nHeight(), Max( ::nLeft, 1 ), oWnd, .F. )
if ValType( ::oPopUp ) == 'B'
oWnd:oPopUp:End()
endif
oWnd:oPopup = nil
::Refresh()
endif
//...hasta aca
if GetFocus() == ::hWnd
::lCaptured = .T.
::lPressed = .T.
::Capture()
::Refresh() // .F.
endif
::lWorking = .F.
if ::lBtnUp
::LButtonUp( nRow, nCol )
::lBtnUp = .F.
endif
return 0
Este cambio casi logra el efecto deseado, solo falta la parte de:
".... si no se selecciona una opción del menú, que se ejecute la acción del botón"
Alguien habrá realizado algo similar.
De antemano, cualquier ayuda sera bienvenida.
Rolando
Cochabamba, Bolivia.
FWH 13.02, xharbour 121 Rev 6717