Delphi (VCL) Обобщения и привязка данных?
Кто-нибудь знает, есть ли в Delphi XE (я говорю здесь о VCL) какие-либо классы Generic Collection, которые работают с элементами управления с поддержкой данных? Другими словами, есть ли какие-либо общие классы, такие как TObjectList<>, которые можно назначить для TDataSource.DataSet, или что-то подобное?
Благодарю.
Дэн
2 ответа
Да, вы можете, используя концепцию ObjectDataSet, которая, я думаю, в конечном итоге вам придется реализовать самостоятельно на основе связанного примера кода в качестве отправной точки.
В примере кода показано, как объединить концепцию обычного неуниверсального TObjectList и TDataSet. Он использует RTTI для предоставления любого списка, который вы хотите прикрепить к нему, любого типа объекта. Он использует RTTI и не нуждается в использовании Generics, скорее он требует, чтобы вы наследовали от TPersistent.
Плохая сторона этого в том, что я использовал это, и я никогда не буду использовать это снова. Полученный код был беспорядочным, медленным, а модель ужасной. В следующий раз я бы держался подальше от элементов управления с поддержкой данных и просто использовал контейнеры с ВИРТУАЛЬНЫМИ УПРАВЛЯЮЩИМИ, такими как VirtualTree View и ExGridView.
Я не вижу причин, по которым вы не могли бы начать с приведенного выше кода в качестве основы и объединить дженерики с привязкой данных, но я вижу множество причин, почему вы не должны этого делать.
Иметь другое мнение:
- Пожалуйста, обратитесь к усилиям Стефана Гленке. Он является автором многообещающего DSharp. Больше на его блоге.
- Укажите на DN4D (DotNet4Delphi).
Они оба могут использовать классы Generic Collection, как и ожидалось, с возможностью привязки, которая делает представление данных визуальным компонентам довольно простым.