Código Delphi
[-]
with qry_permisos do
begin
Active := true;
first;
for x := 3 to FieldCount - 1 do
begin
campo := Fields.Fields[x].DisplayName;
for y := 0 to fmenuprincipal.ActionManager1.ActionCount - 1 do
begin
with fmenuprincipal.ActionManager1.Actions[y] do
if index = x-3 then
if FieldByName(campo).AsBoolean = false then
enabled := false;
end;
end;
end;
El Index de la propiedad Actions[y] solo te da la posición dentro de la lista de acciones.
Supongo que deberías utilizar un método que te asegure que estás habilitando o deshabilitado la accion que quieres.
Por ejemplo, podrías utilizar su nombre o utilizar la propiedad Tag.
Yo en tu caso utilizaría algo así:
Código Delphi
[-]
...
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TAction then
begin
if (TAction(Components[i]).Name = 'Action' + IntToStr(x)) then
TAction(Components[i]).Enabled := FieldByName(campo).AsBoolean;
end;
end;
...