Hola webmasterplc.
Una opción es que le asignes niveles a cada categoría de usuario, por ejemplo: Administrador 3, Jefe 2, Operario 1 y luego habilites o no los items de acuerdo al valor asignado en la propiedad
Tag de cada
TMenuItem.
Para ejemplificar, pone un
TMainMenu con el siguiente formato y valores de Tag en sus subitems:
Código:
Menu1 Menu2
----------------------------
Item1 ,Tag:1 Item1 ,Tag:1
Item2 ,Tag:2 Item2 ,Tag:2
Item3 ,Tag:3 Item3 ,Tag:3
En este ejemplo simple, selecciono el tipo de usuario desde un
TComboBox y habilito/desabilito los subitems de acuerdo al nivel de usuario:
Código Delphi
[-]
...
procedure TForm1.FormCreate(Sender: TObject);
var
i,j: Integer;
begin
ComBoBox1.Items.AddObject('Administrador',TObject(3));
ComboBox1.Items.AddObject('Jefe',TObject(2));
ComboBox1.Items.AddObject('Operario',TObject(1));
with MainMenu1 do
for i:= 0 to Items.Count-1 do
if Items[i].Count-1 > 0 then
for j:= 0 to Items[i].Count-1 do
Items[i].Items[j].Enabled:= False;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
LvlAcceso: Integer;
i,j: Integer;
begin
LvlAcceso := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
with MainMenu1 do
for i:= 0 to Items.Count-1 do
if Items[i].Count-1 > 0 then
for j:= 0 to Items[i].Count-1 do
Items[i].Items[j].Enabled:= LvlAcceso >= Items[i].Items[j].Tag
end;
Logicamente en tu caso los datos del usuario deberán estar almacenado en alguna tabla de alguna BD.
Saludos.