Suggestion, dans la table des utilisateurs, un champ nommé status serait utile pour préciser le statut de l'utilisateur connecté : admin ou simple user (voire autre).
En accédant à la table, tu lis les droits de la personne et tu les affectes à une variable globale (UserStatus ci-dessous).
En utilisant les TActionList, il devient alors simple de désactiver les éléments de menu (ou de les griser) en utilisant l'évènement OnUpdate :
type
TUserStatus = (usUnknown, usAdmin, usSimpleUser);
var
UserStatus : TUserStatus;
procedure TForm1.Action1Update(Sender: TObject);
begin TAction(Sender).Enabled :UserStatus usAdmin;
end;
Et si cette action est la même pour plusieurs composants, il suffit de connecter leur évènement OnUpdate sur cette seule routine, ce qui économise pas mal de code (gestionnaire partagé).
Tout ceci, évidemment, ne dispense pas de mettre un peu de sécurité dans l'accès à la table des utilisateurs...