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