У меня есть пользовательский TDatasetProvider, который позволяет создавать новые поля для любых данных, которые он предоставляет.
Итак, скажем, вы получили следующие поля в исходном наборе данных:
- CustomerId
- Имя
- Возраст
И вам нужно выбрать его на DBGrid, показывая растровое изображение. Ну, с тех пор как мой DSP может добавить
логическое поле, называемое Selected
для данных набора данных.
Как я это делаю сейчас:
- Создайте 2 объекта TClientDataset (Origin and Target)
- В Origin я загружаю данные, полученные из параметров метода InternalGetRecords (я переопределял его)
- В Target я создаю fielddefs, определенные из набора данных Origin, и добавляю разработчики файлы fielddefs, созданные во время разработки
- Выполнить CreateDataset для цели
- И, строка-by-row (и поле за полем), я копирую данные из базы данных Origin в набор данных Target
- В конце верните вариант данных в качестве возвращаемого значения из InternalGetRecords.
Я действительно не знаю, есть ли более элегантный (и более быстрый) способ сделать это. Есть другой (более быстрый и/или элегантный) способ получить этот результат?