with form6.adoquery1 do
       begin
        close;
        sql.Clear;
        sql.Add('select idate,amount,person,shouzhi,item1,item2,ps from income order by idate desc');
        open;
        dbgrid1.Columns[0].Title.caption:='日期';
        dbgrid1.Columns[1].Title.caption:='金额';
        dbgrid1.Columns[2].Title.caption:='经手人员';
        dbgrid1.Columns[3].Title.caption:='收/支';
        dbgrid1.Columns[4].Title.caption:='收支总类';
        dbgrid1.Columns[5].Title.caption:='收支细类';
        dbgrid1.Columns[6].Title.caption:='备注';
        dbgrid1.Columns[0].Width:=100;
        dbgrid1.Columns[1].Width:=64;
        dbgrid1.Columns[2].Width:=52;
        dbgrid1.Columns[3].Width:=64;
        dbgrid1.Columns[4].Width:=64;
        dbgrid1.Columns[5].Width:=72;
        dbgrid1.Columns[6].Width:=146;
我想问一下为什么会弹出list index out of bounds(1),我在form2用的是同样的组件同样也用adoquery1也用dbgrid1,为什么在form6就会报错,同样的代码啊,该怎么解决啊。

解决方案 »

  1.   

    检查dbgrid1.Columns的索引是否有越界
      

  2.   

    超出长度了。比如 你的
    var
    a: Tstringlist;
    f:string
    begin
    a:= Tstringlist.Create;a.add(1);f:=a[5];//实际上a.count只有1条命令就会出现上面的错误。
    end所以应该是你的dbgrid1.Columns[X]  X赋值超出了
      

  3.   

    把form2的dbgrid 复制过来。
      

  4.   

    eg:if (Trim(_CLASSNAME)='Tjs_bom_manage_frm') then
          begin
            self.Caption:='Æ·ÃûÑ¡Ôñ';
            dxDBGrid1Column1.FieldName:='DEA001';
            dxDBGrid1Column1.Caption:='Æ·ºÅ';
            dxDBGrid1Column1.Width:=120;
            dxDBGrid1Column2.FieldName:='DEA002';
            dxDBGrid1Column2.Caption:='Æ·Ãû';
            dxDBGrid1Column2.Width:=100;
            dxDBGrid1Column3.FieldName:='DEA003';
            dxDBGrid1Column3.Caption:='¿â´æµ¥Î»';
            dxDBGrid1Column3.Width:=80;
            dxDBGrid1Column4.Visible:=false;
            dxDBGrid1Column5.Visible:=false;
            dxDBGrid1Column6.Visible:=false;
            dxDBGrid1Column7.Visible:=false;
            dxDBGrid1Column8.Visible:=false;
          end;
      

  5.   

    估计你的数据源没有连接好,先把
    dbgrid1.Columns[0].Title.caption:='日期';

    dbgrid1.Columns[6].Width:=146;
    各行注释掉,看看能否正常显示。
      

  6.   

    应该是dbgrid1连接的数据集不是form6.adoquery1引起的
     open;
    //加上这句试试?
    dbgrid1.datasource.dataset := form6.adoquery1;
    //
      dbgrid1.Columns[0].Title.caption:='日期';