Como adicionar opções em uma rotina padrão sem ter ponto de entrada no MenuDef | Ti Responde 002

No vídeo de hoje, iremos responder a dúvida em como adicionar uma função no Outras Ações quando não existe ponto de entrada.

Hoje, a dúvida foi feita pelo grande Serinhano, onde ele perguntou como poderia adicionar opções na função FATA110 sendo que ela não possui ponto de entrada no Menu.

Então basicamente o que fazemos é criar uma User Function, que aciona o Menu, o Model e o View da função FATA110.

Obs.: Existe outra forma, no ponto de entrada ChkExec, daria para verificar com um If o nome da função, e depois adicionar um atalho via SetKey, por exemplo nas teclas F5, F6, F7, etc. Conforme exemplo abaixo:

User Function ChkExec()
	Local aArea 	:= FWGetArea()
	Local lContinua := .T.
	Local cFuncao	:= Upper(ParamIXB)
	
	//Se vier da rotina Pedido de Veículos, habilita o uso de atalhos, devido a tela não ter ponto de entrada para manipular o menu
	If ("VEIXA050" $ cFuncao)
		SetKey(VK_F7, {|| u_zSuaFuncao()})
	EndIf
	
	//Se vier da Rotina de Turnos, habilita o uso de atalhos, devido a tela não ter ponto de entrada para manipular o menu
	If ("GPEA080" $ cFuncao)
		SetKey(VK_F5, {|| u_zSuaFuncao()})
	EndIf
	
	FWRestArea(aArea)
Return lContinua

Continuando com o artigo original, isso é demonstrado no vídeo abaixo:

E abaixo o código fonte desenvolvido para exemplificar:

//Bibliotecas
#Include "TOTVS.ch"
#Include "FWMVCDef.ch"
   
/*/{Protheus.doc} zVid02
Função para "clonar" a função padrão FATA110 adicionando opções no Outras Ações
@author Atilio
@since 29/12/2021
/*/
   
User Function zVid02()
    Local oBrowse     := Nil  
    Private cCadastro := "Grupos de Clientes"
    Private aRotina   := FwLoadMenuDef("FATA110")
       
    //Talvez é necessário chamar aqui o SetFunName dependendo da rotina padrão
   
    //Adicionar a opção no menu padrão
    ADD OPTION aRotina TITLE "* Função Teste" ACTION 'Alert("teste")'    OPERATION 8    ACCESS 0
   
    //Abre o browse da rotina
    oBrowse := FWMBrowse():New()
    oBrowse:SetAlias('ACY')
    oBrowse:SetDescription(cCadastro)
    oBrowse:Activate()
Return
   
//Busca o Model da função FATA110
Static Function ModelDef()
Return FWLoadModel('FATA110')
   
//Busca o View da função FATA110
Static Function ViewDef()
Return FWLoadView('FATA110')

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. Alexandre Serinhano disse:

    Grande Atilio, obrigado pela força.

Deixe uma resposta