Использование опции MultiSelect в DBGrid

Данный пример реализует множественный выбор записей в табличной сетке и отображение второго поля набора данных.

Метод DisableControls применяется для того, чтобы DBGrid не обновлялся во время изменения набора данных. Последняя позиция набора данных сохраняется как Bookmark.

Метод IndexOf вызывается для проверки существования вкладки. Решение о выборе метода IndexOf (или Refresh) должно определяться спецификой приложения.

procedure TForm1.SelectClick(Sender: TObject);
var
  x: word;
  TempBookmark: TBookMark;
begin
  DBGrid1.DataSource.DataSet.DisableControls;
  with DBGrid1.SelectedRows do
    if Count <> 0 then begin
      TempBookmark := DBGrid1.DataSource.DataSet.GetBookmark;
        for x := 0 to Count - 1 do begin
          if IndexOf(Items[x]) > -1 then begin
            DBGrid1.DataSource.DataSet.Bookmark := Items[x];
            ShowMessage(DBGrid1.DataSource.DataSet.Fields[1].AsString);
          end;
        end;
    end;
  DBGrid1.DataSource.DataSet.GotoBookmark(TempBookmark);
  DBGrid1.DataSource.DataSet.FreeBookmark(TempBookmark);
  DBGrid1.DataSource.DataSet.EnableControls;
end;
[News Group]