Power Builder - Control de Acceso a TabPages

   
Vista:

Control de Acceso a TabPages

Publicado por Gerardo (12 intervenciones) el 20/06/2011 18:44:21
tengo una ventana con un Tab de 5 tabpages,

se quiere controlar el acceso a cada Tabpage según se le asigne a cada usuario,
por ejemplo:

USR1 accede a los 5 tabpages
USR2 accede a el 1er y el 2do tabpage
USR3 accede a el 3er, 4to y 5to tabpage

Una de las formas como pensé hacerlo es registrando en una tabla el acceso por usuario a cada control, por ejemplo

Usuario cod_ctrl Nomb_ctrl acceso
USR1 01 tab_1.tabpage_1 1
USR1 02 tab_1.tabpage_2 1
USR1 03 tab_1.tabpage_3 1
USR1 04 tab_1.tabpage_4 1
USR1 05 tab_1.tabpage_5 1
USR2 01 tab_1.tabpage_1 1
USR2 02 tab_1.tabpage_2 1
USR3 03 tab_1.tabpage_3 1
USR3 04 tab_1.tabpage_4 1
USR3 05 tab_1.tabpage_5 1


¿Cómo podría por script de la ventana controlar este aceso de los usuarios??
o si tienene otra idea, les agradecería mucho puedan compartirla.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Control de Acceso a TabPages

Publicado por JeinnerH (638 intervenciones) el 21/06/2011 01:07:07
La forma en la que almacenas la información por usuario me parece bien, a excepción de que la forma en la cual se pueden recorrer los objetos de una ventana (si lo quieres hacer automático), es por medio de la función Control[], y esta no acepta referencias a los objetos sino un número.

Por tanto, si lo quieres hacer automático debes conseguir cuál es el número de objeto de cada tab y almacenar este como referencia.

Al momento del open de la ventana, bastaría con recorrer la lista de derechos de cada usuario y abilitar cada tab, según su número de control. Suponiendo que todos los taba estén por defecto en Enabled=FALSE

dw_derechos.Retrieve(ls_cod_usuario, 'nombre ventana')
For li_registro=1 to RowCount()
Tab_1.Control[dw_derechos.object.Numero_ctrl[li_registro]].Enabled=TRUE
Next

Algo así.

Otra opción sería comparar cada nombre de tab con lo que hay en la tabla de derechos:
If 'Tab_1.TabPage_1' = dw_derechos.object.Nombre_Ctrl[1] Then &
Tab_1.TabPage_1.Enabled=TRUE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de Acceso a TabPages

Publicado por Gerardo (12 intervenciones) el 21/06/2011 17:31:05
Gracias estimado,

algo así lo habia implementado. En el open codifique un cursor, con un select que lee la tabla y los derechos. pense ponerlo en una funcion de ventana para que pueda servir para otros controles, es decir le mandaría como argumento el nombre del control. Ahí tengo una pequeña duda...
en la parte del scropt que dice:
...
.....
For li_registro=1 to RowCount()
Tab_1.Control[dw_derechos.object.Numero_ctrl[li_registro]].Enabled=TRUE
Next

Tab_1 sería el valor que le mante a la función de ventana, la pregunta es dentro de la función
como codificaría esa parte

For li_registro=1 to RowCount()
????.Control[dw_derechos.object.Numero_ctrl[li_registro]].Enabled=TRUE
Next

alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de Acceso a TabPages

Publicado por JeinnerH jhidalgo@excelteccr.com (638 intervenciones) el 22/06/2011 15:56:09
No recuerdo si hay alguna otra forma de hacer referencia a los objetos de ventanas sin usar el Control[], así que lo que debieras hacer es algo como esto:

Control[12].Control[dw_derechos.object.Numero_ctrl[li_registro]].Enabled=TRUE

En donde Control[12] correspondería al Tab, tendrías que averiguar primero a cuál número de objeto corresponde, para asignarle los derechos. O se podría hacer de forma dinámica, recorriendo la lista de controles en la ventana, hasta encontrar el Tab, eso si sólo hubiese un tab por ventana.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de Acceso a TabPages

Publicado por Gerardo (12 intervenciones) el 23/06/2011 00:17:14
Muchas gracias estimado,

voy a considerar la idea, en el caso del Control[12] se me ocurre definir una tabla con los registros de las opciones y los controles debidamente numerados, a los cuales se les va a habilitar o deshabilitar el acceso mediante otra tabla similar a la que mencionaba al inicio.

buen aporte.

Gracias y que Dios te bendiga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar