ger_kar » 30.05.2016 (Пн) 6:51
Кроме, упомянутых объектов, есть еще и непосредственно сам объект класса UserControl самый нижний в иерархии и таким образом получается, что контрол представляет собой слоеный пирог или матрешку. На на самом глубоком уровне залегает UserControl, далее идет сама обертка, которую создает пользователь, создающий свой элемент, и уже над ним идет оболочка контейнер в виде Extender'-а, который имеет класс VBControlExtender и тут возникает множество следующих вопросов:
1) Во первых так это или нет, то что я написал про пирог, сдается мне что так, но не совсем, так как свойство Extender это свойство предоставляемое классом UserControl и значит получается что с одной стороны пользовательский код это оболочка над UserControl, а с другой стороны они как бы параллельно идут.
2) Является ли этот Extender неотъемлемой частью самого контрола, или же это промежуточный элемент, в который VB заботливо оборачивает каждый создаваемый экземпляр любого контрола (или подкладывает под контрол). Т.е. является ли этот пирог монолитным, или подложка это отдельный промежуточный объект создаваемый в момент размещения контрола
3) Из первых двух вытекает следующий вопрос: Это фишка с (Extender'-ом) исключительно VB6-шная фича, или любой контрол, используемый и создаваемый в рамках технологии ActiveX, будет обладать такими свойствами? Т.е. если VB'-шный контрол будет использоваться в другом приложении, создаваемом в другой среде, то будет ли у этого контрола такой же Extender и если да, то какого класса? Понятно, что раз есть у контрола свойство Extender, то оно и в другом месте никуда не денется и также возвратит ссылку на некий объект, но вот что это будет, тут вопрос.
Если контрол например будет менять свои размеры, то такой код все среды VB будет работать или обломится? И если например контрол предполагает множество операций со своим Extender'-ом, то можно сохранить на него ссылку, но контрол может переместиться на другой контейнер и ссылка будет не валидной, а может он переезжает вместе с Extender'-ом и тогда все будет ОК. Ссылку можно объявить как Object, а можно и VBControlExtender. Но тогда в другой среде, может быть Extender', но другого класса и код обломается.
Бороться и искать, найти и перепрятать