FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Menu PopUp automatico al presionar sobre boton Tbar
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Menu PopUp automatico al presionar sobre boton Tbar
Posted: Sat Sep 30, 2017 12:52 PM
Hola amigos del foro:

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 (fw): Select all Collapse
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Sat Sep 30, 2017 03:29 PM
Rolando, no entiendo bien lo que necesitas, pero para que aparezca un menu popup en un boton ...

Code (fw): Select all Collapse
   DEFINE BUTTON ::oBtnSave OF ::oBar RESOURCE "save" ;
      PROMPT "Save" ;
      ACTION ( ::SaveFile( , , , ), ::oActivo:SetFocus() ) ;   //AQUI
      MENU ::MenuSaveAs() ;                                             //AQUI
      TOOLTIP FWString( "Save" )
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Sun Oct 01, 2017 03:12 AM
Cristobal, gracias por responder.

lo que quiero hacer es 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"

Colocar/asignar un menu PopUp a un boton de la barra es sencillo, pero para "mi gusto" no es muy practico.
No es practico porque el usuario tiene que presionar sobre la "flechita" negra que aparece a la derecha del bot贸n; el 谩rea de la "flechita" es muy peque帽a y a veces el usuario ni se percata que existe.

Seria mas practico que al hacer click sobre el boton aparezca el menu PopUp (automaticamente) y si el usuario NO selecciona, ninguna opcion del menu PopUp entonces "deberia" ejecutarse la accion del boton (por haber hecho click sobre el boton)

Para lograr esto modifique el metodo LButtonDown(..) de la clase TBtnBmp()
Code (fw): Select all Collapse
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


Espero haberme hecho entender.
Posts: 244
Joined: Mon Jun 05, 2006 09:39 PM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Sun Oct 01, 2017 08:28 PM
Talvez seja isto
Invoque o method ShowPopUp()

Code (fw): Select all Collapse
 聽DEFINE BUTTON ::oBtnImpressoes of ::oBar 聽 聽 聽 聽 聽;
聽 聽 RESOURCE "B32_PRINTER" 聽noborder 聽 聽 聽 聽 聽 聽 ;
聽 聽 TOOLTIP {"Impress玫es validas do atual T铆tulo Posicionado","Impress玫es - F9"} 聽 聽;
聽 聽 聽 聽 ACTION ( 聽::oBtnImpressoes:ShowPopUp(),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 ::oBrwProtesto:SetFocus()) ;
聽 聽 聽 聽 MENU ::oMenuPrns
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Mon Oct 02, 2017 12:54 AM
Giovany, gracias por contestar.

Tu c贸digo muestra el PopUp, pero no logra cumplir la ultima parte del enunciado:

".... si no se selecciona una opci贸n del men煤, que se ejecute la acci贸n del bot贸n"
Posts: 48
Joined: Sun Sep 20, 2015 01:41 AM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Mon Oct 02, 2017 11:45 PM

Hola Rsalazar.
Al dar click en el bot贸n que muestra el men煤 popup, deber铆as colocar un timer de x segundos y si nadie seleccion贸 una opci贸n popup largas una acci贸n.

Saludos
Ruben Dario Fernandez

Gracias y saludos cordiales.
Rub茅n Dario Fern谩ndez
Fwh 16.08 - Bcc 7.2 - Synwrite

Posts: 48
Joined: Sun Sep 20, 2015 01:41 AM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Mon Oct 02, 2017 11:49 PM

RSalazar, lo mejor ser铆a una ribbonbar. El bot铆n muestra una flechita, si quiere el men煤, acciona la flechita, sino es click en el bot贸n y listo.
Saludos

Gracias y saludos cordiales.
Rub茅n Dario Fern谩ndez
Fwh 16.08 - Bcc 7.2 - Synwrite

Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Menu PopUp automatico al presionar sobre boton Tbar
Posted: Tue Oct 03, 2017 02:29 AM

Ruben, gracias por responder.

El problema en la soluci贸n del timer es poder indicar el tiempo, cuanto tiempo.

la Ribbonbar es una mejor soluci贸n, el "botin" indica que hay mas opciones, sin embargo no tiene el efecto que busco.

De todas maneras, gracias.

Continue the discussion