if n[1]=1 then TF_main.N1.Enabled:=true else TF_main.N1.Enabled:=false;
if n[2]=1 then TF_main.N2.Enabled:=true else TF_main.N2.Enabled:=false;
if n[3]=1 then TF_main.N3.Enabled:=true else TF_main.N3.Enabled:=false;
if n[4]=1 then TF_main.N4.Enabled:=true else TF_main.N4.Enabled:=false;
if n[5]=1 then TF_main.N5.Enabled:=true else TF_main.N5.Enabled:=false;
if n[6]=1 then TF_main.N6.Enabled:=true else TF_main.N6.Enabled:=false;主窗口为MDI结构,N1——N2为菜单的控件名

解决方案 »

  1.   

    function getM(id:integer;):TmenuItem;
    var i:integer;
    begin
    Result:=nil;
      for i:=0 to ComponentCount-1 do
        if Components[i] is TMenuItem then
    if (Components[i] as TMenuItem ).Name='N'+IntToStr(id) then
       begin
    Result:=Components[i] as TMenuItem ;
    Exit;
    end;
    end;for i:=1 to 6 do GetM(i).Enabled:=n[i]=1;
      

  2.   

    对上面兄台的方法补充一点:
    for i:=1 to 6 do 
    if getM(i)<>nil then
    getM(i).Enabled:=n[i]=1;
    //以避免因getM返回的不是一个TMenuItem对象时出问题