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:
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 0Este 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