Версия для печати


Доступ к protected-свойству BorderWidth класса TPageControl.
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=1296

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.

Работает :)