var
qxb:boolean;
qxs:string;
i:integer;
begin
qxs:=query.fiedbyname('qxs').asstring//把权限字符串读入qxs中
for i:=1 to length(qxs) do
   if qxs[i]='1' then  qxb:=true
      else qxb:=false;
menui.n1.enable:=qxb
menui.n2.enable:=qxb
^^^^^^//用0,1确定menu的子菜单(n1,n2...)是否可用

解决方案 »

  1.   

    for i := 1 to length(qxs) do
    begin
      if ...
      menui...
      ...
    end;注意for .. do 的使用方法
      

  2.   

    笨方法:
    menui.n1.enable := qxs[1]='1';
    menui.n2.enable := qxs[2]='1';
    ...
      

  3.   

    对啊,楼主,你的 循环忘记了begin  end 你可以在formcreate 或者 show 事件中编写
    然后 根据取出来的字段长度 来循环
      

  4.   

    你的循环错了 
    menui.n1.enable:=qxb
    menui.n2.enable:=qxb比如你有5位,
    它取的只是你最后一个 的qxb ,
    然后前面4 个 的qxb 都已经被覆盖了
    你想想是吗?
      

  5.   

    var
    qxb:boolean;
    qxs:string;
    i:integer;
    begin
    qxs:=query.fiedbyname('qxs').asstring//把权限字符串读入qxs中
    for i:=1 to length(qxs) do
    begin
       if qxs[i]='1' then  qxb:=true
          else qxb:=false;
    menui.n1.enable:=qxb
    menui.n2.enable:=qxb
    end