Exemplos: | #include "protheus.ch" User Function GrpMenu() Local aMenu := {{""}} Local aAllGrp := AllGroups() Local aGrp := {} Local oDlg Local oCbx Local oList Local oBtn Local oPanel1, oPanel2 Local nI Local cGrp := "" // Armazena os códigos dos grupos de usuários cadastrados For nI := 1 to len(aAllGrp) aadd(aGrp, aAllGrp[ni][1][1]) Next // Monta a janela para exibição dos dados DEFINE MSDIALOG oDlg TITLE "Teste AllGroups" FROM 010, 010 TO 600, 600 OF oMainWnd PIXEL @00,00 MSPANEL oPanel1 PROMPT "" SIZE 00,35 OF oDlg oPanel1:Align := CONTROL_ALIGN_TOP @ 010, 005 COMBOBOX oCbx VAR cGrp ITEMS aGrp SIZE 080, 012 OF oPanel1 PIXEL @ 010, 090 BUTTON oBtn PROMPT "Carrega Menu" SIZE 40,11 PIXEL OF oPanel1 ACTION (If(!Empty(cGrp), (LoadMenu(cGrp, @aMenu), RefreshList(@oList, aMenu)), ) ) @00,00 MSPANEL oPanel2 PROMPT "" SIZE 00,200 OF oDlg oPanel2:Align := CONTROL_ALIGN_ALLCLIENT @ 005, 005 LISTBOX oList FIELDS HEADER "Menus" SIZE 280, 250 OF oPanel2 PIXEL oList:SetArray(aMenu) oList:bLine := {|| {aMenu[oList:nAt] }} ACTIVATE MSDIALOG oDlg CENTERED Return // Carrega as informações do menu do grupo informado Static Function LoadMenu(cGroup, aMenu) aMenu := FWGrpMenu(cGroup) Return // atualiza a lista de menus no listbox Static Function RefreshList(oList, aMenu) oList:SetArray(aMenu) oList:bLine := {|| {aMenu[oList:nAt]} } oList:Refresh() Return |
Retorno: | aMenuExemplo: aMenu[1] - "01X\\system\\SIGAATF.XNU" aMenu[2] - "025\\system\\SIGACOM.XNU"
Obs: É verificado se o grupo tem acesso ao modulo, no casoCaso o Grupo não tenha acesso a algum módulo será acrescentado "X" apos o código do módulo, como mostra o exemplo abaixo. aMenu[1] - "01X\\system\\SIGAATF.XNU" 01 - Código do módulo X - Mostra que o grupo não tem acesso ao módulo system\\SIGAATF.XNU - Diretório do arquivo aMenu[2] - "025\\system\\SIGACOM.XNU" 02 - Código do módulo 5 - Mostra nível de acesso system\\SIGAATF.XNU - Diretório do arquivo |