Как избавиться от зависимости от глобальных переменных при разработке компонента?

Столкнулся с тем, что при разработке компонентов есть published свойства, в которые заносится некоторая информация. И вот вопрос – как передать эту информацию во внутренний модуль компонента?

Подробно проблему описал на 2 форумах

How to avoid using GlobalVars in components development?

Как передать данные из одного юнита в другой при разработке компонента?

Вот скриншот структуры проекта, демонстрирующего проблему

1

2

 

Проблема в том, чтобы передать данные из поля Somefield в экземпляр класса, описанного во внутреннем модуле компонента uAdditional

Решение

Вот, решение, предложенное на форуме UniGUI и оно мне понравилось – достаточно элегантное.

uAdditional Расширяем класс TfAdditional через поле…

uAdditional Дописываем конструктор TfAdditional через override

uSomeComponent_BPL При создании экземпляра класса TfAdditional передаем туда ссылку на главный компонент

 

This entry was posted in Delphi. Bookmark the permalink.