Page 1 of 1

Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 8:50 am
by goosfancito
Hola.
Tengo la necesidad de que cuadno en un xbrowse se presione la tecla enter se muestre el mismo menu pop que cuando se prsiona la tecla derecha del mouse.
Intente esto que pego aca, pero cuando aparece el menupop lo hace fuera del dialogo, me parece que es porque no tiene coordenadas cuando lo activa,
como hago para que me salga en la posicion que apareceria al presionar la tecla derecha del mouse?

Code: Select all  Expand view
        ::oBrw:bKeyDown   := {| nkey, nRow, nCol | ::MenuPop(nRow, nCol), ::valorRetorno(nKey) }


gracias.

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 12:07 pm
by karinha
Talvez se pueda hacer igual a wbrowse.prg

Code: Select all  Expand view

  Esta en: samples\account\contabil.prg
  oLbx:bRClicked := { | nRow, nCol, nFlags | ;
                        ( oMenu := MenuBegin( .T. ),;
                            MenuAddItem( OemToAnsi("A¤adir"),, .F.,,{|oMenuItem|;
                                                                  EntraApunte(),;
                                                                  FecAct := Apuntes->Fec,;
                                                                  Eval(HallaDH),;
                                                                  oLbx:Refresh(), oLbx:SetFocus() } ,,,,,,, .F., ),;
                            MenuAddItem( "Modificar",, .F.,,{|oMenuItem|;
                                                                  EntraApunte(.T.),;
                                                                  FecAct := Apuntes->Fec,;
                                                                  Eval(HallaDH),;
                                                                  oLbx:Refresh(), oLbx:SetFocus() },,,,,,, .F., ),;
                            MenuAddItem( "Borrar",, .F.,,{|oMenuItem|;
                                                                  IF (Apuntes->Del,;
                                                                    (BorraApunte(),;
                                                                     FecAct := Apuntes->Fec,;
                                                                     Eval(HallaDH),;
                                                                     oLbx:GoUp(), oLbx:Refresh()),;
                                                                    Stop ("Ese asiento no puede borrarse, pruebe desde la gestion") ) },,,,,,, .F., ),;
                            MenuAddItem(),;
                            MenuAddItem( "Localizar",, .F.,,{|oMenuItem| MsgInfo ("No Disponible") },,,,,,, .F., ),;
                            MenuAddItem( "Imprimir",, .F.,,{|oMenuItem| MsgInfo ("No Disponible") },,,,,,, .F., ),;
                            MenuAddItem(),;
                            MenuAddItem( "Plan Contable",, .F.,,{|oMenuItem|;
                                         RegApu := Apuntes->(RecNo()),;
                                         Apuntes->(dbClearRel()),;
                                         MntoCuentas(),;
                                         dbSelectArea("Apuntes"),;
                                         Apuntes->(OrdsetFocus("Fecha")),;
                                         dbSetRelation( "Cuentas", {|| Apuntes->Cta}, "Apuntes->Cta" ),;
                                         Apuntes->(dbGoTo(RegApu)),;
                                         oLbx:SetFocus(), oLbx:Refresh() },,,,,,, .F., ),;
                          MenuEnd(),;
                          oMenu:Activate( nRow, nCol, oDlg )) }
 


Saludos.

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 12:33 pm
by goosfancito
Karina,

A mi lo que no me esta saliendo es que me "arma" el menu fuera del dialogo.

Gracias.
Gustavo.

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 1:15 pm
by cnavarro
Intenta

Code: Select all  Expand view

MENU POPUP oMenu


ACTIVATE POPUP oMenu AT n1, n2 OF oDlg
 

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 2:59 pm
by FranciscoA
Tambien, intentalo asi:
Code: Select all  Expand view
oBrw:bKeyDown    := {| nKey | If(nKey==VK_RETURN, MenuPop(oBrw:nRowSel, oBrw:nColSel, oBrw),), MsgInfo(nKey) }

Function MenuPop(nRow, nCol, oControl)
ACTIVATE POPUP oMenu WINDOW oControl AT nRow, nCol
 

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 8:50 pm
by goosfancito
FranciscoA wrote:Tambien, intentalo asi:
Code: Select all  Expand view
oBrw:bKeyDown    := {| nKey | If(nKey==VK_RETURN, MenuPop(oBrw:nRowSel, oBrw:nColSel, oBrw),), MsgInfo(nKey) }

Function MenuPop(nRow, nCol, oControl)
ACTIVATE POPUP oMenu WINDOW oControl AT nRow, nCol
 


Me lo posiciona arriba a la izquierda bien en el corner del browser...

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 8:52 pm
by goosfancito
cnavarro wrote:Intenta

Code: Select all  Expand view

MENU POPUP oMenu


ACTIVATE POPUP oMenu AT n1, n2 OF oDlg
 


estimado, arranque probando de esa forma, luego lo mismo pero OF OBRW
y nada.

Re: Menu Pop cuando presiono ENTER

PostPosted: Wed Oct 28, 2015 11:05 pm
by cnavarro
Intenta asi

Code: Select all  Expand view


Function MenuPop( oBrw, oCol )

//
MENU POPUP oMenu


ENDMENU
oMenu:Activate( (oBrw:nRowSel * oBrw:nRowHeight) + oBrw:nHeaderHeight, oCol:nDisplayCol, Self )

 


Ten en cuenta que el codeblock bKeydown, no recibe al evaluarse ncol y nrow por defecto, por lo que

Code: Select all  Expand view

::oBrw:bKeyDown   := {| nkey, nFlag | ::MenuPop( ::oBrw, <columna actual> ), ::valorRetorno(nKey) }
 


Lo unico que queda en el ejemplo es saber en que columna estás para pasarla como parámetro
Puedes mirar el metodo RButtonDown de xbrowse

Re: Menu Pop cuando presiono ENTER

PostPosted: Thu Oct 29, 2015 1:29 am
by FranciscoA
Goosfancito, prueba este ejemplo.
Code: Select all  Expand view
 oBrw:bKeyDown    := {| nKey | If(nKey==VK_RETURN, MenuPop(oBrw),), MsgInfo(nKey) }

   ACTIVATE DIALOG oDlg CENTERED
return nil

//-----------------------------------
Function MenuPop(oBrw)
local oMenu, nRow, nCol

nRow := ((oBrw:nRowSel * oBrw:nRowHeight)-4) + if(oBrw:lHeader,oBrw:nHeaderHeight,0)
nCol := oBrw:SelectedCol():nDisplayCol

MENU oMenu POPUP 2007
  MenuItem "MenuItem-1" ACTION MsgInfo("Holas-1")
  MenuItem "MenuItem-2" ACTION MsgInfo("Holas-2")
ENDMENU
//ACTIVATE POPUP oMenu WINDOW oBrw AT nRow, nCol
ACTIVATE POPUP oMenu AT nRow, nCol OF oBrw  //:oWnd
Return oMenu
 

Saludos.