我在DBGrideh中,设置了两行Footer。现需要在程序中控制。
  DBGridEh1.Columns[0].Footers[0].ValueType:= fvtStaticText;
  DBGridEh1.Columns[0].Footers[0].Value:= '11';
程序编译通过,运行报错List Index Out of bounds(1)
更改为
  DBGridEh1.Columns[0].Footer.ValueType:= fvtStaticText;
  DBGridEh1.Columns[0].Footer.Value:= '11';
则同时两行都被赋值为‘11’了。

解决方案 »

  1.   

    可以参考以下代码,估计缺少 myGrid.Columns[i].Footers.Add  语句。
            
          myGrid.SumList.Active:=true;
          myGrid.FooterRowCount:=2;
          myGrid.FooterColor:=clAqua;
          for i:=0 to myGrid.Columns.Count-1 do
          begin
            myGrid.Columns[i].Footers.Add;
            myGrid.Columns[i].Footers.Add;
            if i=0 then
            begin
              myGrid.Columns[i].Footers[0].Value:='平  均';
              myGrid.Columns[i].Footers[0].ValueType:=fvtStaticText;
              myGrid.Columns[i].Footers[1].Value:='合  计';
              myGrid.Columns[i].Footers[1].ValueType:=fvtStaticText;
            end else
              if myGrid.Columns[i].Field.DataType=ftFloat then
              begin
                myGrid.Columns[i].Footers[0].FieldName:=myGrid.Columns[i].FieldName;
                myGrid.Columns[i].Footers[0].ValueType:=fvtAvg;
                myGrid.Columns[i].Footers[1].FieldName:=myGrid.Columns[i].FieldName;
                myGrid.Columns[i].Footers[1].ValueType:=fvtSum;
              end;
          end;
      

  2.   

    谢谢了,最关键的一句不知道。我有一点不明白。我在dbgrideh中做了设置了myGrid.FooterRowCount:=2;感觉就应该是作了add工作了嘛。不管怎么样,分先给你加上。