窗体FORM1
ADO联接
SQL2000
数据库表结构如下:        表名:QX
YONGHU     MOUKUAI       QUANXIAN
ZJF        客户资料         1
ZJF        商品资料         0
窗体上有一个POPUPMENU1
默认情况下,假设POPUPMENU1.N1.CAPTION:='客户资料'
POPUPMENU1.N1.VISIBLE:=TRUE;
POPUPMENU1.N2.CAPTION:='商品资料'
POPUPMENU1.N2.VISIBLE:=TRUE;
问题:如何做到在FORM1显示的情况下,跟据QX表的QUANXIAN字段来判断N1及N2的VISIBLE,如:QUANXIAN为0,VISIBLE:=FALSE;

解决方案 »

  1.   

    在FormCreate事件中写:
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('select MOUKUAI,QUANXIAN from QX where YONGHU = ''ZJF''');
        ADOQuery1.Open;
        ADOQuery1.First;
        while not ADOQuery1.Eof do
        begin
           if Trim(ADOQuery1.FieldValues['MOUKUAI']) = '客户资料' then
           begin
             if Trim(ADOQuery1.FieldValues['QUANXIAN']) = '0' then
                N1.Visible := False
             else
                N1.Visible := True;
           end
           else if Trim(ADOQuery1.FieldValues['MOUKUAI']) = '商品资料' then
           begin
             if Trim(ADOQuery1.FieldValues['QUANXIAN']) = '0' then
                N2.Visible := False
             else
                N2.Visible := True;
           end;
        end;
      

  2.   

    while循环里最后少了一句:ADOQuery1.Next;
      

  3.   

    while not ADOQuery1.Eof do
        begin
           for i:= 0 to PopupMenu1.Items.Count-1 do
           begin
              if Trim(PopupMenu1.Items[i].Caption) = Trim(ADOQuery1.FieldValues['MOUKUAI']) then
              begin
                 if Trim(ADOQuery1.FieldValues['QUANXIAN']) = '0' then
                    PopupMenu1.Items[i].Enabled := False
                 else
                    PopupMenu1.Items[i].Enabled := True;
                 break;
              end;
           end;
           ADOQuery1.Next;
        end;