我用dbgrid1.Columns[0].Title.caption:='序号';
  dbgrid1.Columns[1].Title.caption:='计算公式';
  dbgrid1.Columns[2].Title.caption:='(凸面)一次值';
  dbgrid1.Columns[3].Title.caption:='(凹面)二次值';
修改dbgrid的标题头
老是出错,提示index(1)之类,好像数组溢出一样
如果只修改一个(比如只有dbgrid1.Columns[0].Title.caption:='序号';)就不会有问题
我新建一个工程,也用上面的语句又可以了两个工程唯一的区别是,出错的工程dbgrid的数据库连接是动态赋值的,没出错的工程数据库连接是事先设定好的,这有关系吗不知道我说清楚没,大侠帮我

解决方案 »

  1.   

    如果你没有在dbgrid里生成足够数量的columns当然Index溢出了(你的情况应该是4个)
      

  2.   

    好像数组溢出一样  那就是数据集当中没有这么多列
    可能的原因是你的数据集控件里,定义了某几个字段,则数据集里只保存那几个字段的数据。也就是检查一下数据集控件或者Sql语句,确定数据集里的字段数与定义的列相匹配。
      

  3.   

    你把
    dbgrid1.Columns[0].Title.caption:='序号';
      dbgrid1.Columns[1].Title.caption:='计算公式';
      dbgrid1.Columns[2].Title.caption:='(凸面)一次值';
      dbgrid1.Columns[3].Title.caption:='(凹面)二次值';
    放在最后试试看
      

  4.   

    有可能你在dbgrid还没有取得数据之前就给dbgrid赋值了,这样的话dbgrid的Columns只有一个,所以你的dbgrid1.Columns[0].Title.caption:='序号'就不会出错了。
      

  5.   

    在dbgrid里生成足够数量的columns是什么意思?我用的那个数据表只有三个字段
    而我修改两个或者三个都会出错
    如果我只修改一个就不会有问题了难道我只生成了一个columns,可是显示的时候是三个字段都有的啊
      

  6.   

    coolarmy(bb考拉猪) 这么说好像我明白了,我去试试看
    先谢谢各位了
      

  7.   

    你先把数据取出来,然后
    dbgrid1.Columns[0].Title.caption:='序号';
      dbgrid1.Columns[1].Title.caption:='计算公式';
      dbgrid1.Columns[2].Title.caption:='(凸面)一次值';
      dbgrid1.Columns[3].Title.caption:='(凹面)二次值';
      

  8.   

    procedure TForm2.formcreate(Sender: TObject);
    begin
    dbgrid1.Columns.Add;
    dbgrid1.Columns[0].Title.caption:='序号';
    dbgrid1.Columns.Add;
      dbgrid1.Columns[1].Title.caption:='计算公式';
    dbgrid1.Columns.Add;
      dbgrid1.Columns[2].Title.caption:='(凸面)一次值';
    dbgrid1.Columns.Add;
      dbgrid1.Columns[3].Title.caption:='(凹面)二次值';
    end;
      

  9.   

    你的错误总的来说有两种可能,楼上各位都讲到过.
    一. 没有从数据集中获得数据就对DBGRID的各列进行操作.这当然要出错了.(注意代码位置呀)
    二. 数据集中的列数少于你设置的列数也会报错.解决: 动态情况下先检测数据集中的列数(count),然后动态赋值.
          静态情况下利用dbgrid里的column属性进行操作.       
                                  ^-^
      

  10.   

    因为是动态连接数据库,所以一定要在你修改标题以前连接到数据库去到数据才不会出错,否则
    是没有那么多列的,只有一列,所以你修改一个就可以
    如果你的标中一共只有三个子段,那么你的行数应该是  Columns[0],Columns[1],Columns[2]
      

  11.   

    试试这个:
      dbgrid1.Columns[0].FieldName:=你要连接的字段1  
      dbgrid1.Columns[0].Title.caption:='序号';
      dbgrid1.Columns[1].FieldName:=你要连接的字段2  
      dbgrid1.Columns[1].Title.caption:='计算公式';
      dbgrid1.Columns[2].FieldName:=你要连接的字段3 
      dbgrid1.Columns[2].Title.caption:='(凸面)一次值';
      dbgrid1.Columns[3].FieldName:=你要连接的字段4  
      dbgrid1.Columns[3].Title.caption:='(凹面)二次值';
      

  12.   

    lemon_wei(soft_fans) 的正确,我用过了!
      

  13.   

    第一是数据库表字段对不对
    二是数据库表有没有打开
    三是你的dbgrid双击有没有加新的tcolumn,如果加了就不行了