你的DBGrid连接的表的结构如何?

解决方案 »

  1.   

    代码好像没有错误,关键在于你的DBGrid的列是否已经设计好了,调用函数
    dbgrid.Columns.RebuildColumns是通过数据库连接系统自动重新生成DBGrid的列,
    应该将这行代码删除,再在循环中动态生成DBGrid的列,就没有问题了。
    代码类似如下:var  
      Column: TColumn;
    begin
      Qry_Auto.Open;
      dbgrid.Columns.Clear;
    //dbgrid.Columns.RebuildColumns;
      for i:=0 to Qry_Auto.RecordCount-1 do
      begin
        Column:=dbGrid.Columns.Add;
        Column.FieldName:=Qry_Auto.fieldbyname('code').asstring;
        Column.Title.Caption:=Qry_Auto.fieldbyname('name').asstring;
        if Column.FieldName='gzh' then
        begin
            Column.ReadOnly:=true;
        end;