Olá Luiz,
Não sei como é sua tabela de permissões, mas se o seu problema é capturra os menus e colocá-los em ordem na TreeView, aqui vai uma dica:
O VB não tem um meio de infromar a gente sobre a hierarquia dos menus, assim, nós mesmo devemos criar um modo de fazer isso. Eu costumo utilizar o seguinte critério, imagine um menu chamado Arquivo e um submenu chamado Abrir, no menu eu coloco o nome de mnuArq e no submenu mnuArq_Abrir, se eu tiver um outro submenu ligado a ele, por exemplo, Somente Leitura, eu o chamaria de mnuArq_Abrir_SomenteLeitura. Viu, eu uso o caracter "_" para separar os nomes e assim criar uma hierarquia. Depois, para capturar os nomes e colocá-los na grid, faça o seguinte:
Private Sub Carrega_Menus()
Dim Nome As String
Dim Pos As Integer, PosAnt As Integer
Dim Obj As Control
Dim No as MSComctlLib.node
For Each Obj In Form1.Controls
If TypeOf Obj Is Menu Then
If Obj.Caption <> "-" Then
Pos = InStr(1, Obj.Name, "_")
If Pos = 0 Then
Set No = TreeView1.Nodes.Add (, , Obj.Name, Obj.Caption)
No.EnsureVisible
Else
Do While Pos > 0
PosAnt = Pos
Pos = InStr(PosAnt + 1, Obj.Name, "_")
Loop
Set No=TreeView1.Nodes.Add (Left(Obj.Name, PosAnt - 1), _
tvwChild, Obj.Name, Obj.Caption)
No.EnsureVisible
End If
End If
End If
Next
Set No = Nothing
Set Obj = Nothing
End Sub
Pronto, você verá uma TreeView com os nomes dos menus em ordem de hierarquia.
A única coisa chata é que você provavelmente terá que renomear os seus menus, mas isso é uma base que pode ser aprimorada com a sua criatividade. Qualquer coisa, post, ok?
Um abraço,
Sandro.