我用以下方法实现取消的操作
if (Fitem.ADOQuery1.State=dsinsert) then
  Fitem.ADOQuery1.Cancel   //主表处于插入状态时取消主表的操作
  else
  begin
  self.ADOQuery1.CancelBatch();
  Fitem.ADOQuery1.Delete;  //否则取消对细表的批更新并删除主表新增的记录
  end;
  self.Close;//关闭窗体
但执行时系统提示“行句柄引用了一个已被删除的行或被标志为删除的行”