for I := 0 to DBGrid.Columns.Count-1 do   //只显示listbox2中的字段
  begin
    if ListBox2.items.IndexOf(DBGrid.Columns[i].FieldName) >= 0 then
      dBgrid.columns.Items[I].Visible := True
    else
      DBGrid.Columns.Items[I].Visible := False;
  end;

解决方案 »

  1.   

    啊,还不行,dbgrid1中显示的字段顺序不能和listbox1中的一样,专家再帮帮忙,这个要怎么实现?
      

  2.   

      for I := 0 to DBGrid.Columns.Count-1 do  //只显示listbox2中的字段
      begin
        J := ListBox2.items.IndexOf(DBGrid.Columns[i].FieldName);
        if J >= 0 then
        begin
          dBgrid.columns.Items[I].Visible := True;
          if J < I then
            DBGrid.Columns.Itmes[I].Index := J;
        end
        else
          DBGrid.Columns.Items[I].Visible := False;
      end; 
      

  3.   

    blackdell() :
    谢谢你的帮助,我能和你交个朋友吗?
      

  4.   

    好呀,我也是学习delphi不久,有很多地方想找人探讨,幸运的在网上发现了CSDN网站,这里有很多高手呀。