Все, что вы хотите, поместится в пару строк кода. Добавьте "TypInfo" в список используемых модулей и сделайте примерно следующее:
varPropInfo: PPropInfo;beginPropInfo := GetPropInfo(PTypeInfo(ActiveControl.ClassInfo), 'DataSource');if (PropInfo <> nil)and (PropInfo^.PropType^.Kind = tkClass)and (GetTypeData(PropInfo^.PropType)^.ClassType = TDataSource) thenDBNavigator1.DataSource := TDataSource(GetOrdProp(ActiveControl, PropInfo));end; |
Некоторая избыточность в проверках гарантирует вам, что вам не попадется некий странный объект (от сторонних производителей компонентов, например), имеющий свойство DataSource, но не типа TDataSource. [000696]