//删除多选的记录
void __fastcall TForm1::N1Click(TObject *Sender)
{
  for(int i=0;i <(DBGrid1->SelectedRows->Count);i++)
  {
    DBGrid1->DataSource->DataSet->Bookmark=DBGrid1->SelectedRows->Items[i];
    DBGrid1->DataSource->DataSet->Delete();
  }
}
但是记录已经删除了DBGrid1->SelectedRows->Count还是不变,除非重新选择记录.这样很容易出错.
高人指点一下.

不行,还是没有更新DBGrid1->SelectedRows->Count的值.

把这个DBGrid的DataSource的Enabled设置成false,再恢复为true试试

要将MultiSelect 设为True

以上都不行,是不是BUG啊

删除数据后
执行 selcet * from….
搜索出数据,显示就不会错了

引用 5 楼 epsont507 的回复:
以上都不行,是不是BUG啊

不会吧

删完了,刷新一下数据集

你的Bookmark用来干啥的?  代码不怎么完整!

  for(int i=0;i <DBGrid1->SelectedRows->Count;i++)
  {
    DBGrid1->DataSource->DataSet->GotoBookmark((void *)fm_ch_prod->DBGrid1->SelectedRows->Items[i].c_str());  //定位 如果有的话
    DBGrid1->DataSource->DataSet->Delete();
  }

汗…….改的不对…..

修改版
for(int i=0;i <DBGrid1->SelectedRows->Count;i++)
  {
    DBGrid1->DataSource->DataSet->GotoBookmark((void *)DBGrid1->SelectedRows->Items[i].c_str());  //定位 如果有的话
    DBGrid1->DataSource->DataSet->Delete();
  }