procedure TMainView.AbilitaVoceMenu(NomeMenu: string; Valore: boolean);
var
i: integer;
begin
i:=0;
for i:=0 to Self.MainMenu1.Items.Count-1 do
begin
if Self.MainMenu1.Items[i].Name=NomeMenu then
begin
Self.MainMenu1.Items[i].Visible:=Valore;
end;
end;
end;
Ma che giro facevi con il codice?
EDIT:
Questo controlla solo il primo livello di menu (quello della barra, per capirci)
Ricordati che il menu è un albero. Va navigato tutto...
Prova:
procedure TMainView.FormCreate(Sender: TObject);
var
indicePrimoLivello: integer;
begin
indicePrimoLivello := 0;
for indicePrimoLivello := 0 to Self.MainMenu1.Items.Count - 1 do
begin
if MainMenu1.Items[indicePrimoLivello].Count > 0 then
AbilitaVoceMenu(Self.MainMenu1.Items[indicePrimoLivello], 'menuFileNuovoDocumento', False)
else
if SameText(MainMenu1.Items[indicePrimoLivello].Name, 'menuFileNuovoDocumento') then
begin
MainMenu1.Items[indicePrimoLivello].Visible := False;
end;
end;
end;
procedure TMainView.AbilitaVoceMenu(Item: TMenuItem; NomeMenu: string; Valore: boolean);
var
indiceLivello: integer;
test: TMenuItem;
begin
indiceLivello := 0;
for indiceLivello := 0 to Item.Count - 1 do
begin
test := Item.Items[indiceLivello];
if test.Count > 0 then
AbilitaVoceMenu(test, NomeMenu, Valore)
else
if SameText(test.Name, NomeMenu) then
begin
test.Visible := valore;
end;
end;
end;