Permisos sobre el Menu Powerbuilder 10.5

Quería consultarte la mejor manera de manejar permisos sobre el menu en powerbuilder 10.5, la idea es tener una tabla usuario, una tabla con los objetos del meno y una tabla con los permisos, no se si es lo mejor, es lo que se me ocurrió. ¿Qué me sugieres?
Lo que no me imagino es como debe ser la sintaxis para que se inhabiliten las opciones del menu.
ES tienes algún ejemplo te lo agradeceré.
Correo: [email protected]
1

1 respuesta

Respuesta
1
Te doy la siguiente idea.
Crea las siguientes tablas
Usuario // Registras los usuarios
OpcionesMenu // Registras los TAG de tus menus (ejm 10,101,102,20,201,202,203,30..)
Perfiles //Donde guardaras los perfiles asosiados a los Usuarios
PerfilOpcion // En esta combinaras los diversos perfiles a que opciones tendran acceso.
***********************************
Bueno esto de las tablas es solo una idea puedes suar la que mejor te parezca, ahora te mostrare como desactivar menús, a todas tus opciones de menu le tienes que poner en la propiedad TAG numero para que en base a este actives o desactives. Poer ejemplo a los del primer nuvel dales este numero 10,20,30,40 luego a los hijos del 10 llamalos 101,102.. de esa manera.
Luego te creas una función y le copias exactamente este código. La cual debe tener un solo argumento del tipo MENU y llamarlo al argumento am_menu. Y que retorne un valor entero
Double n_per[]
Double n_cod_tag
Long i_row
Integer i_nro_item1
Integer i_nro_item2
Integer i,i1
Integer j,j1
/* TODO ESTO DEBERIA SER REMPLAZADO POR LA LECTURA DE LA OPCIONES QUE SE TENGA GUARDADA EN UNA TABLA
DONDE I_ROW = NUMERO DE FILAS DEVUELTAS POR LA COLNSULTA
n_pe = Vector que cargara todas las opciones que sera activadas r*/
i_row = 3
n_per[1] = 10
n_per[2] = 102
n_per[3] = 20
/*FINI */
i_nro_item1 = UpperBound(am_menu.Item)
For i=1 To i_nro_item1 //Busca el tag en el primer nivel
n_cod_tag = Double(Upper(Trim(m_menu.Item.Tag)))
If Not isNull (n_cod_tag) Then
m_menu.Item.Enabled = False
For j=1 To i_row
If n_cod_tag = n_per[j] Then
m_menu.Item.Enabled = True
Continue
End If
Next
End If
i_nro_item2 = UpperBound(m_menu.Item.Item)
For i1=1 To i_nro_item2 //Busca el tag en el segundo nivel
n_cod_tag = Double(Upper(Trim(m_menu.Item.Item[i1].Tag)))
If Not isNull (n_cod_tag) Then
m_menu.Item.Item[i1].Enabled = False
For j1=1 To i_row
If n_cod_tag = n_per[j1] Then
m_menu.Item.Item[i1].Enabled = True
Continue
End If
Next
End If
Next
Next
return 0
***************************************
Eso seria todo, pero para mayior detalle te dejo el fuente de este ejemplo que trabaje en este link
****
No olvides finaliza la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas