对每个菜单项一个权值,可以用MenuItem的tag属性保存,如新增,修改,删除三个菜单的权值分别为1,2,4(需要是2的N次方)。假设用户的权限保存在purview中,在依据权限初始化菜单时可以使用如下代码:
for i := 0 to MainMenu.Items.Count - 1 do
MainMenu.Items.Visible := (MainMenu.Items.Tag and purview) = MainMenu.Items.Tag;
如果独立控制菜单显示与否,这主要是控制是否执行此模块的一个开关。
这个权限控制好做,通过TAG的值来判断就可以了。
// 在TMainMenu菜单下建立的方法
procedure TForm1.ShowFormClick(Sender: TObject);
begin
if Sender is TMenuItem then
if (Sender as TMenuItem).Tag=1 then // Tag值等于1 表示可以打开From2窗口
Form2.Show;
end;