LACO PARA INATIVAR ITENS DE UM MENUTOOLSTRIP
Boa tarde.
Estou com um problema que não consigo arrumar....
No meu formulário MDI há um Menu ToolStrip... Desejo que ao carregar esse formulário, um laço leia todos os DROPDOWNBUTTONS, seu ITEM, SUBITENS, SUBITENS dos SUBITENS e assim por diante...
Quero que seja feito através de um laço, pois haverá uma parte do programa que delimitarei permissões... sendo assim, pretendo fazer um listview de permissões dinâmico (junto com este laço que pretendo criar)...
Em outras palavras quero fazer algo como isto:
Comecei um código, mas não consigo entrar nos [Ô]SUBITEMS....[Ô] por exemplo:
Citação:For Each menus As ToolStripDropDownButton In PriMenuToolStrip.Items
For Each botao As ToolStripItem In menus.DropDownItems
For Each btn As ToolStripItem In botao.Owner.Items
btn.Enabled = False
Next
botao.Enabled = False
Next
Next
EmpresaToolStripMenuItem.Enabled = True
Vejam que ativei o botão empresa, somente para confirmar... Os subitens deste menu não estão sendo lidos, tampouco inativados...
Alguém consegue me ajudar???
Grato,
Gustavo.
Obrigado!!
http://www.vbmania.com.br/pages/?varModulo=Forum&varMethod=abrir&varID=374663
http://www.macoratti.net/vbn5_xtv.htm
http://www.forumweb.com.br/artigo/202/vb/metodos-recursivos
Ficou assim:
Citação:Private Sub PrincipalForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each menus As ToolStripDropDownButton In PriMenuToolStrip.Items
InativarSubMenus(Nothing, menus)
Next
End Sub
Private Sub InativarSubMenus(botao As Object, Menus_Btn As Object)
For Each botao In Menus_Btn.DropDownItems
If Not TypeOf botao Is ToolStripSeparator Then
botao.Enabled = False
CheckedListBox1.Items.Add(Replace(botao.name, [Ô]&[Ô], [Ô][Ô]))
InativarSubMenus(Nothing, DirectCast(botao, Object))
End If
Next
End Sub
Porem uma última dúvida... no Excel eu usaria a fórmula INDIRETO...
Veja que criei o comando CheckedListBox1.Items.Add(Replace(botao.name, [Ô]&[Ô], [Ô][Ô])), ou seja, vou montar uma listbox com os nomes dos controles que consegui pegar.
Minha dúvida é a seguinte:
Consigo com o nome de um objeto, manipula-lo?
Por exemplo:
Dim Obejto as Object = BotaoAdicionar
... O BotaoAdicionar existe no meu Form e este é somente o nome dele... com essa variável que acabei de criar, como posso fazer ela se tornar o BotaoAdicionar e consequentemente ganhar as propriedades deste?
Obrigado.
Dim Objeto as Control = BotaoAdicionar
depois na hora de usar:
Msgbox(Objeto.Name)
Entendo o que vc descreve acima, mas o BotaoAdicionar já é o próprio objeto...
O que gostaria de saber é se com o name desse botão, eu consiga fazer uma variável virar um controle... por exemplo:
Citação:
Dim nome As String = [Ô]TextBox1[Ô]
Dim objeto As Control = nome
objeto.Text = [Ô]TESTE1[Ô]
O erro já acontece quando eu tento fazer a variável objeto receber o texto do nome do controle TEXTBOX1...
Citação:Dim nome As String = [Ô]TextBox1[Ô]
Dim objeto As Control = nome
objeto.Text = [Ô]TESTE1[Ô]
Isso não é possÃvel.
Bom, de qualquer forma obrigado.
Pode encerrar o tópico.
Grato,
Gustavo.