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.