Ajude o site desativando o bloqueador de anúncio
Cabeçalho

ADVPL - MENU POP Como abrir menu com o botão direito no grid?

Autor: Eurai Criado: 13/08/2021 Atualizado: 22/11/2025 ADVPL
Postagem

📌 Exemplo de abertura de MENU POP em Grid (ADVPL)

 

Recebi uma pergunta por e-mail pedindo um exemplo de como abrir um MENU em um grid no ADVPL.

Neste artigo trago exatamente esse exemplo, utilizando um MENU POP. 🖱️📋

A abertura do menu é feita através do método bRClicked do componente TcBrowser, chamando a função que monta o menu.

Você pode adicionar quantas opções quiser e cada item pode estar vinculado a uma static function.

O fonte atualizado está disponível no GitHub. ✔️

 

🧩 Código completo do exemplo

#INCLUDE "TOTVS.CH"

/*/{Protheus.doc} UDMENUPP
Menu POP

@type       function
@author     Eurai Rapelli
@since      2021.08.07
/*/
User Function UDMENUPP()
Local oDlg        := Nil
Local oBar01      := Nil 
Local oBtnBmp01   := Nil   
Local oMsgBar01   := Nil 
Local oMsgItem01  := Nil

Private oBrowse       := Nil
Private oPnlItens     := Nil
Private aBrowse       := {{Space(255),Space(255)}}

Private nForeCor      := CLR_GRAY
Private nBackCor      := CLR_WHITE

Private nCols         := 2

Private oFont12a      := TFont():New("Arial",12,12,,.F.,,,,.T.,.F.)

oDlg          := MSDialog():New(000,000,500,1000,"Universo do Desenvolvedor - Exemplo de Menu POP",,,.F.,,,,,,.T.,,,.T.)
oDlg:lMaximized := .T.

oMsgBar01     := TMsgBar():New(oDlg, "Eurai Rapelli", .F.,.F.,.F.,.F.,RGB(116,116,116),,oFont12a,.F.)
oMsgItem01    := TMsgItem():New(oMsgBar01,'www.udesenv.com.br',100,oFont12a,CLR_WHITE,,.T., {|| ShellExecute('OPEN','www.udesenv.com.br','','', 3 ) })

oPnlItens         := TPanel():NEW(000,000,"",oDlg,,.T.,,CLR_BLUE,,000,000,.T.,.T.)
oPnlItens:Align   := CONTROL_ALIGN_ALLCLIENT

oBrowse := TCBrowse():New(01,01,260,156,,{"A"},{100},oPnlItens,,,,,{||},,,,,,,.F.,,.T.,,.F.,,,)
oBrowse:SetArray(aBrowse)
oBrowse:AddColumn(TcColumn():New('A',&(" { || aBrowse[oBrowse:nAt,01] } "),,{|| nForeCor},{|| nBackCor}))
oBrowse:AddColumn(TcColumn():New('B',&(" { || aBrowse[oBrowse:nAt,02] } "),,{|| nForeCor},{|| nBackCor}))
oBrowse:Align         := CONTROL_ALIGN_ALLCLIENT
oBrowse:bRClicked     := { |o,x,y| MenuPop(o,x,y) }
oBrowse:LADJUSTCOLSIZE := .T.

oBar01     := TBar():New(oDlg,25,35,.T.,,,'fw_degrade_menu',.T.)
oBtnBmp01  := TBtnBmp2():New(000,000,035,025,'FINAL',,,,{|| oDlg:End()},oBar01,'Sair',,.F.,.F.)

oDlg:Activate(,,,.T.)

Return(Nil)

/*/{Protheus.doc} MenuPop
Monta Menu, chama na tela

@author      
@since       17.12.2012

@Example     MenuPop()
/*/
Static Function MenuPop(o,x,y)
Local oMenuItem := {}

MENU oMenu POPUP

aAdd(oMenuItem, ;
     MenuAddItem("Adiciona XXXXX",,,, .T.,,,, oMenu, ;
     { || Alert('funcao de XXXXX') },,,,,{|| .T.} ) )

ENDMENU

oMenu:Activate(Iif(x > oBrowse:NCLIENTWIDTH, oBrowse:NCLIENTWIDTH/2, x), ;
               21 + oBrowse:nRowPos, o)

Return(Nil)

 

advpl_-_menu_pop_-_botao_direito

 


 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço, e até a próxima! 👋

 

 

 

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL