首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么控制菜单显示

2013-10-22 
如何控制菜单显示?窗体中有菜单MainMenu1,菜单名称分别是n01,n02,n03......数据库中有对应的字段,均为bit

如何控制菜单显示?
窗体中有菜单MainMenu1,菜单名称分别是n01,n02,n03......
数据库中有对应的字段,均为bit型。
字段:        n01   n02   n03
数值:         1     0     1


如何根据数据库的数值,动态控制菜单的显示?
比如数值为1,对应的菜单Visible:=true,反之则为false。
[解决办法]

引用:
Quote: 引用:


procedure TForm1.Button1Click(Sender: TObject);
var
Fname:string ;
i,j:Integer ;
a:TMenuItem;
begin
      ADOQuery1.Close ;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select * from xtjb where user_id=1301');
      ADOQuery1.Open;

         for i := 0 to ADOQuery1.Fields.Count - 1 do
         begin
          if ADOQuery1.Fields[i].AsBoolean  then
          begin
          Fname:=adoQuery1.fields[i].fieldname;
         // MainMenu1.Items.Create(); 这句注视掉
          MainMenu1.Items.Find(ADOQuery1.fields[i].fieldname).visible := ADOQuery1.Fields[i].AsBoolean;
          end;
         end ;

end;

这个是Find不到,引用对象错误吧?

确实是的

procedure TForm1.Button1Click(Sender: TObject);
var
//Fname:string ;
i:Integer ;//,j:Integer ;
a:TMenuItem;
begin
      ADOQuery1.Close ;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select * from xtjb where user_id=1301');
      ADOQuery1.Open;
  
         for i := 0 to ADOQuery1.Fields.Count - 1 do
         begin
          //if ADOQuery1.Fields[i].AsBoolean  then
          //begin
          //Fname:=adoQuery1.fields[i].fieldname;
         // MainMenu1.Items.Create(); 这句注视掉
a:=MainMenu1.Items.Find(ADOQuery1.fields[i].fieldname);
if a<>nil then          
 a.visible := ADOQuery1.Fields[i].AsBoolean;
          //end;
         end ;
  
end;
 
[解决办法]
procedure TForm1.FindItem(T: TMenuItem);
var
  i: Integer;
  F: TField;
begin
  for i := 0 to T.Count - 1 do
  begin
    F := ADOQuery1.FindField(T.Items[i].Name);

    if Assigned(F) then
    begin
      T.Items[i].Visible := F.AsBoolean;
    end;

    if T.Count > 0 then FindItem(T.Items[i]);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from xtjb where user_id=1301');
  ADOQuery1.Open;

  FindItem(MainMenu1.Items);

end;

热点排行