AnyDAC
ContentsIndexHome
Example
var
  i: Integer;
....
// delete all rows, where ID = 100, without navigating through dataset
for i := ADQuery1.Table.Rows.Count - 1 downto 0 do
  if ADQuery1.Table.Rows[i].GetData('id') = 100 then
    ADQuery1.Table.Rows[i].Delete;
ADQuery1.Resync([]);