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]
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
carloscharly Hola, aun tendrá el ejemplo? gracias - Angel Pt