for i:=0 to tbplan.ViewData.RowCount -1 do
   begin
      if tbplan.ViewData.Rows[i].Selected then
         begin
             str:=tbplan.ViewData.Rows[i].Values[0];
              cmd.CommandText :='delete from tplanseg where segplanid =''' + str + '''';
                      cmd.Execute ;
         end;
   end;
提示错误,假设选择三条纪录,第一条正确,第二条久保错,提示i出界

解决方案 »

  1.   

    我用dxgrid做过。应该和cxgrid是一样的吧。
      

  2.   

    是不是有一个selectrow这样的属性,就是选中的行数。不一定就是相临的行。
    应该for 这个属性才是。
      

  3.   

    能不能告诉我代码是怎么写的,我这里一删除就报错,可能是删除一条记录之后,if tbplan.ViewData.Rows[i].Selected then
    里面的rows[i]就会出界
      

  4.   

    for i:= tbplan.ViewData.RowCount -1 downto tbplan.ViewData.RowCount -1 do
    ......
    因为你删完第1条,RowCount减1,循环到一半时就出错。
      

  5.   

    是for i:= tbplan.ViewData.RowCount -1 downto 0 do