LACO PARA INATIVAR ITENS DE UM MENUTOOLSTRIP

GGERMINIANI 12/07/2013 16:48:25
#425967
Pessoal,

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.
JABA 12/07/2013 18:18:39
#425968
Resposta escolhida
Você tem que usar um metodo que chama ele mesmo (metodo recursivo)
GGERMINIANI 12/07/2013 19:30:47
#425971
Você poderia me ajudar a construir?? Não faço idéia de como começar...

Obrigado!!
JABA 13/07/2013 12:19:24
#425983
http://msdn.microsoft.com/pt-br/library/wwc698z7(v=vs.80).aspx

http://www.vbmania.com.br/pages/?varModulo=Forum&varMethod=abrir&varID=374663

http://www.macoratti.net/vbn5_xtv.htm
GGERMINIANI 16/07/2013 10:28:09
#426101
Infelizmente não estou conseguindo entender o conceito do metodo recursivo.
JABA 16/07/2013 13:02:15
#426120
http://www.jorgepaulino.com/2008/09/vbnet-dicas-de-programao-9.html

http://www.forumweb.com.br/artigo/202/vb/metodos-recursivos
GGERMINIANI 16/07/2013 13:12:56
#426122
Vlw JABA! Consegui!!!

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.
JABA 17/07/2013 20:24:51
#426225
tenta com um Control pra ver:

Dim Objeto as Control = BotaoAdicionar

depois na hora de usar:

Msgbox(Objeto.Name)
GGERMINIANI 22/07/2013 10:58:59
#426355
Oi JABA...

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...
JABA 22/07/2013 11:26:06
#426357
Citação:

Dim nome As String = [Ô]TextBox1[Ô]
Dim objeto As Control = nome
objeto.Text = [Ô]TESTE1[Ô]



Isso não é possível.
GGERMINIANI 22/07/2013 11:47:05
#426360
Humm... compreendo.

Bom, de qualquer forma obrigado.

Pode encerrar o tópico.

Grato,
Gustavo.
Tópico encerrado , respostas não são mais permitidas