Hoje iremos demonstrar como adicionar submenus dentro de um menu via AdvPL.
As rotinas de cadastro em AdvPL, possuem um menu que é montado através de um Array, geralmente com as informações de Descrição da rotina, Função e número da opção do menu.
Mas e para adicionar um submenu, como fazer? No caso, ao invés de informar o nome de uma função, basta informar o array que será adicionado.
Note no print abaixo, que adicionamos uma opção no menu (Visualizar XYZ) e em seguida um submenu, e dentro do submenu tem algumas funções e mais um submenu:
Abaixo o código fonte desenvolvido:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function nomeFunction Ponto de entrada para adicionar opções no menu do cadastro de produtos @type Function @author Atilio @since 24/05/2021 @see https://tdn.totvs.com/pages/releaseview.action?pageId=370617549 /*/ User Function MTA010MNU() Local aArea := GetArea() Local aSubMenu := {} Local aSubMenu2 := {} //Adicionando opções no segundo submenu aAdd(aSubMenu2, {"Item A", "u_FuncSubA()", 0, 2, 0, NIL}) aAdd(aSubMenu2, {"Item B", "u_FuncSubB()", 0, 2, 0, NIL}) //Adicionando opções no primeiro submenu aAdd(aSubMenu, {"Opção 1", "u_FuncSub1()", 0, 2, 0, NIL}) aAdd(aSubMenu, {"Opção 2", "u_FuncSub1()", 0, 2, 0, NIL}) aAdd(aSubMenu, {"Opção 3", "u_FuncSub1()", 0, 2, 0, NIL}) aAdd(aSubMenu, {"Opção 4", "u_FuncSub1()", 0, 2, 0, NIL}) aAdd(aSubMenu, {"Opção Itens", aSubMenu2, 0, 2, 0, NIL}) //Adicionando uma função no menu principal e adicionando o submenu aAdd(aRotina, {"* Visualizar XYZ", "u_Funcao1()", 0, 2, 0, NIL}) aAdd(aRotina, {"* Sub-Menu", aSubMenu, 0, 2, 0, NIL}) RestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.