Rotinas Para Manipulaçao de Grids

procedure TForm1.InverterSelecaoGrid(table : TTable; Grid : TDBGrid);
begin
  inherited;

    Table.First;
    while not Table.Eof do
    begin
      if Grid.IsSelectedRecord then
        grid.UnselectRecord
      else
         grid.SelectRecord;

      Table.Next;
      Application.ProcessMessages;
    end;
end;

procedure TForm1.ExcluirItensSelecionadosGrid(Grid : TDBGrid);
var i          : integer;
Begin
    with Grid, Grid.datasource.dataset do
    begin
        DisableControls;
        for i:= 0 to SelectedList.Count-1 do
        begin
          GotoBookmark(SelectedList.items[i]);
          Freebookmark(SelectedList.items[i]);
          Delete;
        end;
        SelectedList.clear;
        EnableControls;
    end;
end;

                                                                             
//O Grid deve está sempre com a Propriedade Multiselect = True;              
//EX:  GridD.Options := GridD.Options + [dgMultiSelect];                                                                            
//OBS: Para Excluir os Itens Não Selecionados, Basta Chamar a Procedure      
//Inverter Seleção e Depois a de Excluir ITens Selecionados.