Ver Mensaje Individual
  #7  
Antiguo 09-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola amadis.

Otro enfoque diferente con consecuencia similar, es desactivar todos los componentes del TForm cuya propiedad Tag tenga un valor mayor al nivel de acceso del usuario:
Código Delphi [-]
uses TypInfo;

procedure SetLevelAccess(aForm: TForm; const UserAccessLevel: Integer);
var
  PInfo  : PPropInfo;
  i, vTag: Integer;
begin
  with aForm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (GetPropInfo(Components[i].ClassInfo, 'Enabled') <> nil) and
         (GetPropInfo(Components[i].ClassInfo, 'Tag') <> nil)  then
      begin
        vTag := GetOrdProp(Components[i], 'Tag');
        if vTag < UserAccessLevel then
          SetOrdProp(Components[i], 'Enabled', Integer(False));
      end;
    end;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLevelAccess(Form1, qyUsers.FieldByName('UserLevel').AsInteger); 
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita