Delphi. Передаем ссылку на Owner через (Self.Owner as TOwnerType) а не через UnitVar

Проблема

Разрабатывал компонент. Ссылку на Owner всегда передавал в inherited конструкторе так

Компонент визуальный. Разместил несколько его экземпляров на форме, стал тестировать. Начались глюки.

Скажем, если заполняю какое-то свойство у SomeComponentName1.SomeProperty, то оно заполняется у SomeComponentName2.SomeProperty, а у первого не заполняется. В общем стал копать и похоже SomeUnitVar работает как глобальная переменная, от которых все бегут.

Решение

Обращаться в локальных методах к Owner через (Self.Owner as TOwnerType), например так…

Такой подход дал положительный результат. Сделать полем объекта мы здесь не можем, потому как возникнет циклическая связь. Под Implementation писать тоже не можем, в силу указанной выше причины.

 

 

This entry was posted in Delphi. Bookmark the permalink.

Leave a Reply