Ver Mensaje Individual
  #3  
Antiguo 02-01-2013
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Reputación: 13
MartinS Va por buen camino
Cita:
Empezado por mantraxer21 Ver Mensaje
Estiamdos,

Alguna idea de "Code" respecto a un menu dinámico con Un Motor de Datos ...

Ejemplo

Usuarios XXX (Lectura de Ficheros, Listar, Consultas y Búsquedas)
Usuarios YYY (Inserciones - Modificaciones, Listar, Consultar, Buscar)
Usuarios ZZZ ( Modificaciones, Lecturas, Inserciones, Listar, Buscar)

Al momento de loguearse en el sistema, este sea capaz de llamar a alguna función que cargue las opciones del menú y saber que opciones sí puede ejecutar o ver un usuario logueado. Creo y supongo que las opciones del menú tienen que estar cargadas en el motor de datos...

Alguien tiene ideas, script para empezar un empujón ==??????

Gracias
Hola: Te detallo mas o menos como lo realizo yo:

Cada usuario que se loguea en el sistema tiene un "nivel" de permiso para operar, es decir, uno de los campos de la tabla de usuarios contempla el nivel (Es este caso, Administradores, operativos, Casuales "solo consulta". Tambien podria ser 0,1,2 etc). Le asigno por importacia un numero que va de 0 a 2 a la propiedad tag de cada uno de los items del menu al momento del diseño de este y luego con un procedimiento que le puse como nombre Nivel que se ejecuta despues del logueo del usuario, es el siguiente

Código Delphi [-]
Procedure TPPrincipal.Nivel;
Var I,Seguro : Integer;
begin
   if Dm.TipoUsers = 'Administradores' then
     Seguro := 2 else
     if Dm.TipoUsers = 'Operativos' then
      Seguro := 1 else
      Seguro := 0;
  if Seguro = 2 then // Admin
  For i := 0 to ComponentCount -1 do
  Begin
    if (Components[i] Is TMenuItem)  then
     Begin
       if (Components[i] as TMenuItem).Tag in [0..2] then
         (Components[i] as TMenuItem).Enabled := True;
      End;
  End;
  if Seguro = 1 then // Operarios
  For i := 0 to ComponentCount -1 do
  Begin
    if (Components[i] Is TMenuItem)  then
     Begin
       if (Components[i] as TMenuItem).Tag in [0..1] then
         (Components[i] as TMenuItem).Enabled := True else
         (Components[i] as TMenuItem).Enabled := False;
      End;
  End;
  if Seguro = 0 then // Casual
  For i := 0 to ComponentCount -1 do
  Begin
    if (Components[i] Is TMenuItem)  then
     Begin
       if (Components[i] as TMenuItem).Tag = 0 then
         (Components[i] as TMenuItem).Enabled := True else
         (Components[i] as TMenuItem).Enabled := False;
      End;
  End;

end;

Yo lo que hago, como podras apreciar, es deshabilitar el items que no corresponde por nivel de usuario, pero podrias cambiarle la propiedad enabled por visible y deberia funcionar o aproximarse a lo que estas pidiendo.

Espero que haya sido de utilidad.

Saludos y felicidades
Responder Con Cita