while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
end;
end;
end;
ADOQuery1.Next;
end;
end;
你检查一下你的
adoquery1.Next;
位置写对没有。写成这样
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
else
MainMenu1.Items[i].Items [j].Enabled:=true;
end;
end;
end;
ADOQuery1.Next;
end;
end;
嗯~~但是我不要先将所有的菜单都设为false 因为只有少数的菜单有权限限制.在表中也没有存放所有的菜单名称.可不可以先进行判断菜单是否等于当前记录中的菜单名称,然后再跟进权限字段进行决定是否要显示,以下是我改过后的代码,可是不知怎么回事那个菜单一直不会变,即J的值不会变:
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
else
MainMenu1.Items[i].Items [j].Enabled:=true;
end;
end;
end;
end;
adoquery1.Next;
end;
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
把菜单名和数据库里存的对比,有的就设Enabled为True
ADQ.open
while not ADQ.Eof do
begin
tagz:=ADQ.FieldByName('FunctionNo').AsString ;
for i:=0 to MainMenu1.Items.Count-1 do
begin
if MainMenu1.Items[i].name=tagz then
MainMenu1.Items[i].Enabled:=True;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if MainMenu1.Items[i].Items [j].name =tagz then
MainMenu1.Items[i].Items [j].Enabled:=True;
end;
end;
ADQ.Next;
end;
楼上的大哥~好像我的程序有错帮我看看行不?
adoquery1.Close;
ADOQuery1.Parameters.ParamByName('user_name').Value:=user_name;
adoquery1.Open;
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
if adoquery1.FieldByName('Examine_cadre').AsString='0' then //权限判断
begin
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=true;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.items[i].items[j].name=mode_id then
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
end
else
begin
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=true;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.items[i].items[j].name=mode_id then
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
end;
end;
adoquery1.Next;
end;
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
//ShowMessage(MainMenu1.Items[i].Items[j].Caption+','+IntToStr(MainMenu1.Items[i].Items [j].Tag ) );
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
for i:=0 to MainMenu1.Items.Count-1 do
begin
if MainMenu1.Items[i].Tag=tagz then//判断是否具有使用权限-----
MainMenu1.Items[i].Enabled:=True;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
//ShowMessage(MainMenu1.Items[i].Items[j].Caption+','+IntToStr(MainMenu1.Items[i].Items [j].Tag ) );
if MainMenu1.Items[i].Items [j].Tag =tagz then
MainMenu1.Items[i].Items [j].Enabled:=True;
end;
end;