скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Переназначения объектов



Существует ли возможность переключения набора данных, используемого DBNavigator на набор данных активного элемента управления без из прямого указания?

Все, что вы хотите, поместится в пару строк кода. Добавьте "TypInfo" в список используемых модулей и сделайте примерно следующее:


var
  PropInfo: PPropInfo;
begin
  PropInfo := GetPropInfo(PTypeInfo(ActiveControl.ClassInfo), 'DataSource');
  if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass)
    and (GetTypeData(PropInfo^.PropType)^.ClassType = TDataSource) then
      DBNavigator1.DataSource := TDataSource(GetOrdProp(ActiveControl, PropInfo));
end;

Некоторая избыточность в проверках гарантирует вам, что вам не попадется некий странный объект (от сторонних производителей компонентов, например), имеющий свойство DataSource, но не типа TDataSource.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook