Habilitar/Deshabilitar elementos de un menu por medio de una BD

13/06/2005 - 16:59 por Omar Flores | Informe spam
Hola a todos, tengo hecho un sistema al cual le quiero implementar algo de
seguridad, es decir habilitar/deshabilitar las opciones del menu a las
cuales puede tener acceso determinado usuario, ya tengo hecho el esquema de
seguridad pero el problema que tengo es el siguiente:

Por ejemplo, para habilitar una opción de un menu es
Me.nombre_elemento_del_menu.Enabled=True

y lo que yo hago es leer de una Tabla el "nombre_elemento_del_menu" pero al
momento de implantarlo no se como concatenar eso con el ".Enabled" para
asignarlo al True ya que cuando hago esto me lo toma como un string.

"nombre_elemento_del_menu".Enabled=True

Traté de convertir el nombre a objeto y sigue igual no se puede hacer esto,
espero y alguien me pueda ayudar a solucionar este detalle.

Preguntas similare

Leer las respuestas

#1 Diego Cofré
13/06/2005 - 22:13 | Informe spam
Omar:
Cada formulario expone una coleccion de controles llamada Controls. Podes
recorrer esa coleccion y cuando encuentres un elemento cuya propiedad Name
esté en tu tabla de permisos, podes habilitarlo. Te mando un pequeño ejemplo
que recorre la coleccion de controles y si encuentra uno llamado
"DataGrid1", lo deshabilita.

Dim Ctrl As Control
For Each Ctrl In Me.Controls

If Ctrl.Name = "DataGrid1" Then

Ctrl.Enabled = False

End If

Next

Espero que te sirva

Saludos

Diego
Respuesta Responder a este mensaje
#2 Ch0rY
14/06/2005 - 00:59 | Informe spam
Eso lo estoy usando mucho ultimamente
¿no hay una forma mas facil, que tener que recorrer todos los controles?
y no digamos si encima, esos controles tienen otros, como por ejemplo los
Paneles, hay que recurrir a la recursividad "¿redundancia?", me nudo rollo.

chory
Respuesta Responder a este mensaje
#3 Omar Flores
14/06/2005 - 15:11 | Informe spam
Que tal Diego, se me presento un problema con el código que me pusiste como
ejemplo.

Resulta que la forma principal tengo los siguientes componentes MainMenu,
StatusBar, ButtonBar y resulta que cuando empiezo a recorrer los controles
con el código que me mandaste solo detecta el StatusBar y el ButtonBar el
MainMenu NO y es el que necesito, me puedes decir a que se debe esto y/o
como solucionarlo.

Por favor ayudenme.

Muchas gracias.

"Diego Cofré" escribió en el mensaje
news:
Omar:
Cada formulario expone una coleccion de controles llamada Controls. Podes
recorrer esa coleccion y cuando encuentres un elemento cuya propiedad Name
esté en tu tabla de permisos, podes habilitarlo. Te mando un pequeño
ejemplo que recorre la coleccion de controles y si encuentra uno llamado
"DataGrid1", lo deshabilita.

Dim Ctrl As Control
For Each Ctrl In Me.Controls

If Ctrl.Name = "DataGrid1" Then

Ctrl.Enabled = False

End If

Next

Espero que te sirva

Saludos

Diego


Respuesta Responder a este mensaje
#4 Tristan
14/06/2005 - 19:01 | Informe spam
Por supuesto que las hay. De todas formas, no lo entiendo, a ti ya te he
contestado esa pregunta :-(

Para empezar puedes poner referencias a los controles que te interesan en un
array, o cualquier otro tipo de colección. Ya te expliqué como hacerlo en tu
pregunta anterior.

Pero en concreto para los elementos de un menú, no tienes que crear ninguna
colección.

For Each item As MenuItem In MainMenu1.MenuItems
For Each subItem As MenuItem In item.MenuItems
MsgBox(item.Text & "-" & subItem.Text)
Next
Next

Obviamente, lo más flexible es utilizar recursividad, puesto que un menú no
tiene por que tener solo dos niveles.

La solución de recorrer todos los controles, es lo última que yo emplearía.
No tiene demasiado sentido.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Omar Flores
14/06/2005 - 20:09 | Informe spam
Que tal, esto es lo que necesito pero mi menu tiene varios niveles, me
puedes decir por favor como le puedo hacer para leer todos los niveles de mi
menu.

De hecho lo que necesito es lo siguente:
Tengo una tabla con los nombres de los items (nombre_item) del menu y lo que
quiero hacer es leer la tabla
y habilitar los elementos
nombre_item.Enabled=True

Espero y me puedas ayudar, te lo agradecería muchísimo.

Saludos.

"Tristan" escribió en el mensaje
news:OOZ%
Por supuesto que las hay. De todas formas, no lo entiendo, a ti ya te he
contestado esa pregunta :-(

Para empezar puedes poner referencias a los controles que te interesan en
un array, o cualquier otro tipo de colección. Ya te expliqué como hacerlo
en tu pregunta anterior.

Pero en concreto para los elementos de un menú, no tienes que crear
ninguna colección.

For Each item As MenuItem In MainMenu1.MenuItems
For Each subItem As MenuItem In item.MenuItems
MsgBox(item.Text & "-" & subItem.Text)
Next
Next

Obviamente, lo más flexible es utilizar recursividad, puesto que un menú
no tiene por que tener solo dos niveles.

La solución de recorrer todos los controles, es lo última que yo
emplearía. No tiene demasiado sentido.

Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida