Página 1 de 1

Re: Macro de un objeto?

Publicado: Lun Mar 30, 2009 12:01 am
por zeasoftware
Yo hice algo asi:
MENUITEM "&Utilerí­as"
MENU
MENUITEM "&Reindexar" ACTION TFrmReindex():New(
Self ):ShowModal() ;
When AppData:lConected .And. ;
AppData:TAppUser:ItemEnabled( ID_M_UTILERIAS ) ;
ID ID_M_UTILERIAS
Genero una clase oUser donde guardo los privilegios en un array, y con el
metodo ItemEnabled, sustraigo si tiene permiso en esa opcion (posicion del
arreglo)
el ID . lo uso para un metodo que en automatico me lee todas las opciones
del menu y las barras del programa para hacer una alta o modificacion de los
privilegios de dicho usuario.
Cuando cambio usuario ejecuto un metodo de mi modulo principal, algo como
esto:
METHOD MenuState( oMenu, nStart, nEnd ) CLASS App_ZeaSoftware
Local nItems, oItem, nItem
Default oMenu := ::oMenu
If ( oMenu == Nil )
Return ( Nil )
End
Default nStart := 2
Default nEnd := Len(oMenu:aItems) - 2
With Object oMenu
For nItem := nStart to nEnd
oItem := :aItems[nItem]
If !( oItem:lSeparator )
oItem:requestState()
If ( !( oItem:oSubMenu == Nil ) .And. oItem:lEnabled )
::MenuState(oItem:oSubMenu, 1, Len(oItem:oSubMenu:aItems))
End
End
Next
End With
RETURN ( Nil )
Cualquier cosa, en lo que pueda apoyarte,
Saludos
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com

Re: Macro de un objeto?

Publicado: Lun Mar 30, 2009 7:37 am
por jrcsistemas
Ramón.
Estoy estudiando tu metodo. Tendria que generar mi menu por codigo.... y en
cada opcion usar una busqueda en mi tabla de permisos....
voy a ver que hago.....
Podria ser algo como:
WITH OBJECT ::mnFactClie := :AddItem( "emisión de facturastF2","Emisión de
facturas de clientes" )
:OnClick := "MenuItem1_1Click"
:OnCheckState := "BuscarHabilitacion('mnFactClie')" // que
retorne .t. o .f. segun el usuario activo.
END
Gracias
Juan
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje
news:[email=49cfefdb@svctag-j7w3v3j....]49cfefdb@svctag-j7w3v3j....[/email]
> Yo hice algo asi:
> MENUITEM "&Utilerías"
> MENU
> MENUITEM "&Reindexar" ACTION TFrmReindex():New(
> Self ):ShowModal() ;
> When AppData:lConected .And. ;
> AppData:TAppUser:ItemEnabled( ID_M_UTILERIAS ) ;
> ID ID_M_UTILERIAS
>
> Genero una clase oUser donde guardo los privilegios en un array, y con el
> metodo ItemEnabled, sustraigo si tiene permiso en esa opcion (posicion del
> arreglo)
>
> el ID . lo uso para un metodo que en automatico me lee todas las opciones
> del menu y las barras del programa para hacer una alta o modificacion de
> los privilegios de dicho usuario.
>
> Cuando cambio usuario ejecuto un metodo de mi modulo principal, algo como
> esto:
>
> METHOD MenuState( oMenu, nStart, nEnd ) CLASS App_ZeaSoftware
> Local nItems, oItem, nItem
>
> Default oMenu := ::oMenu
> If ( oMenu == Nil )
> Return ( Nil )
> End
>
> Default nStart := 2
> Default nEnd := Len(oMenu:aItems) - 2
>
> With Object oMenu
> For nItem := nStart to nEnd
> oItem := :aItems[nItem]
> If !( oItem:lSeparator )
> oItem:requestState()
> If ( !( oItem:oSubMenu == Nil ) .And. oItem:lEnabled )
> ::MenuState(oItem:oSubMenu, 1, Len(oItem:oSubMenu:aItems))
> End
> End
> Next
>
> End With
>
> RETURN ( Nil )
>
> Cualquier cosa, en lo que pueda apoyarte,
> Saludos
> --
> Ramón Zea
> 01.993.231-62-29
> http://www.paginasprodigy.com/zeasoftware/
> zeasoftware@prodigy.net.mx
> zeasoftware@hotmail.com
> ramonzea@yahoo.com
> zeasoft.movil@hotmail.com
> dirza_com@hotmail.com

Re: Macro de un objeto?

Publicado: Lun Mar 30, 2009 6:32 pm
por zeasoftware