Anton Duzenko дата публикации 08-12-2006 09:40 Доступ к protected-свойству BorderWidth класса TPageControl
Есть такой виндовый контрол - Pagecontrol. В VCL этот
контрол реализован компонентом TPageControl, одной из
особенностей которого является неуправляемая толщина рамки.
Дело в том, что свойство BorderWidth, объявленное в секции
protected базового класса TWinControl, не вынесено в классе
TPageControl в секцию published.
Раньше меня это не волновало, но в дизайн программы,
которую я сейчас разрабатываю, рамка Pagecontrol'a ну никак
н вписывается. Возник вопрос, как ее убрать. Есть
стандартный метод - написать новый класс - наследник
Pagecоntrol'a, и в нем опубликовать свойство BorderWidth. Но
это тот случай когда овчинка выделки не стоит. Вспомнился
прием одного программиста на С++, который, когда делал
проект на Дельфи, модифицировал стандартные библиотеки :(.
Мы пойдем другим путем.
Создаем новый тестовый проект, кидаем на форму разные
компоненты, в которых BorderWidth опубликовано (StatusBar,
TreeView, etc), и пишем код, измеряющий расстояние между
адресом объекта и адресом его свойства BorderWidth. Для всех
компонентов он один и тот же - 364 байта. Делаем индуктивный
вывод, о том, что у всех наследников TWinControl на 364
байте находится BorderWidth. Проверяем на PageControl'e.
Работает :)
[TPageControl] [Секции private/public/protected/published]
Обсуждение материала [ 11-05-2012 02:40 ] 47 сообщений |