STRING RETORNADA DO SELECT

LEONARDOSILVEIR 16/04/2011 03:40:04
#371533
Pessoal, no meu select abaixo estou buscando o nome do textbox e jogando dentro de uma variavel e a partir dai quero alterar a propriedade do nome do campo retornado no select para visible = true, por exemplo o select retorna txt_name e ai quero pegar este dado e transforma-lo em txt_name.visible = true para fazer com que este textbox fique visivel.
Segue abaixo minha tentativa de criar, porém sem sucesso, a propriedade nao altera para visible.

Abrirconexao()
tabela.Open([Ô]SELECT MMC_VINC_ACESSO_OPRID.MMC_NIVEL, MMC_NIVEL_MENU.MMC_MENU FROM MMC_VINC_ACESSO_OPRID, MMC_NIVEL_MENU WHERE MMC_VINC_ACESSO_OPRID.MMC_NIVEL = MMC_NIVEL_MENU.MMC_NIVEL AND MMC_VINC_ACESSO_OPRID.ID_OPRID LIKE [ô][Ô] & ID_OPRID.Text & [Ô][ô][Ô], Conexao)

Dim result As String
Do While Not tabela.EOF

result = tabela.Fields([Ô]MMC_MENU[Ô]).Value.ToString & [Ô].visible = True[Ô]

tabela.MoveNext()
Loop
RODRIGOFERRO 16/04/2011 08:10:09
#371537
axo que nesse caso nao da certo porque ele esta sendo tratado como string
acredito que ira precisar usar o System.reflection crie no form um função conforme a seguir !

Public Function GetControlByName(ByVal Name As String) As Control

[ô]now, why would I put a [Ô]_[Ô] in front of the name?
Dim info As System.Reflection.FieldInfo = Me.GetType().GetField([Ô]_[Ô] & Name, _
System.Reflection.BindingFlags.NonPublic Or _
System.Reflection.BindingFlags.Instance Or _
System.Reflection.BindingFlags.Public Or _
System.Reflection.BindingFlags.IgnoreCase)

If info Is Nothing Then Return Nothing
Dim o As Object = info.GetValue(Me)
Return o

End Function


repare que é uma função que retorna um controle, e voce tem que passar o nome dele como parametro !

use assim...

Abrirconexao()
tabela.Open([Ô]SELECT MMC_VINC_ACESSO_OPRID.MMC_NIVEL, MMC_NIVEL_MENU.MMC_MENU FROM MMC_VINC_ACESSO_OPRID, MMC_NIVEL_MENU WHERE MMC_VINC_ACESSO_OPRID.MMC_NIVEL = MMC_NIVEL_MENU.MMC_NIVEL AND MMC_VINC_ACESSO_OPRID.ID_OPRID LIKE [ô][Ô] & ID_OPRID.Text & [Ô][ô][Ô], Conexao)

Dim result As String
Dim ControleAtual as Control
Do While Not tabela.EOF

result = tabela.Fields([Ô]MMC_MENU[Ô]).Value.ToString

ControleAtual = GetControlByName(result)
ControleAtual.Visible = True

tabela.MoveNext()

Loop


Testa ai e me fala !

JONATHANSTECKER 16/04/2011 08:29:58
#371539
é só converter a String para um TextBox
result = tabela.Fields([Ô]MMC_MENU[Ô]).Value.ToString
CType(Me.Controls([Ô]result[Ô]), TextBox).Visible = True
LEONARDOSILVEIR 16/04/2011 12:11:38
#371549
JONATHANSTECKER, como fazer no caso de um toolstripmenuitem? da forma q montei abaixo da erro no Me.Controls([Ô]result[Ô])

CType(Me.Controls([Ô]result[Ô]), ToolStripMenuItem).Visible = True
JONATHANSTECKER 16/04/2011 12:36:11
#371551
Resposta escolhida
Teste assim.:
        result = tabela.Fields([Ô]MMC_MENU[Ô]).Value.ToString
Dim Menu As ToolStripItem() = ToolStrip1.Items.Find(result, True)
If Menu.Length > 0 Then
Menu(0).Visible = False
End If

Só me corrigindo... No exemplo anterior tem que ser retirado as aspas duplas do variável result.
CType(Me.Controls(result), TextBox).Visible = True
LEONARDOSILVEIR 16/04/2011 13:11:28
#371553
Quando entra no Menu(0).Visible = False da o seguinte erro --> O índice estava fora dos limites da matriz.
Deixa eu lhe explicar melhor o que preciso, pode ser que vc tenha outra visao de como fazer. No meu projeto tenho um painel principal onde está disponivel meu MENU de acesso aos formularios, no load do formulario principal, eu inativo todos meus ToolStripMenuItem, e logo depois faço o select como mostrado anteriormente e busco o nome dos ToolStripMenuItem no meu banco de acordo com que estiver vinculado ao usuario, o que preciso é que os ToolStripMenuItem retornado no select sejam ativados (.visible = true).
Tópico encerrado , respostas não são mais permitidas