Я хочу, чтобы потомок TPageControl
не имел Style
, кроме tsTabs
.TPageControl: как предотвратить изменение свойства стиля
На первый взгляд я попытался переопределить SetStyle
, но он объявлен частным в базовом классе. у кого есть идеи?
Я хочу, чтобы потомок TPageControl
не имел Style
, кроме tsTabs
.TPageControl: как предотвратить изменение свойства стиля
На первый взгляд я попытался переопределить SetStyle
, но он объявлен частным в базовом классе. у кого есть идеи?
TPageControl
не поддерживает то, о чем вы просите. Для того, чтобы сделать то, что вы просите, вы должны либо:
ваш компонент повторно объявить Style
свойство с новыми методами геттер/сеттер, а затем иметь сеттер выход, не делая ничего. Однако унаследованное свойство Style
по-прежнему будет технически доступно во время выполнения, если пользователь компонента действительно хочет получить к нему доступ.
вывести свой компонент из TCustomTabControl
вместо TPageControl
, и повторно реализовать все, что TPageControl
делает, но без содействия защищенных Style
собственности. Однако унаследованное свойство Style
по-прежнему будет технически доступно во время выполнения, если пользователь компонента действительно хочет получить к нему доступ.
ваш компонент переопределяет виртуальный метод CreateParams()
и заставляет стиль окна TCS_TABS
в поле TCreateParams.Style
. Свойство Style
по-прежнему будет иметь любое значение, которое назначает пользователь (что также повлияет на поведение свойства TabPosition
), но по крайней мере основное окно всегда будет вести себя так, как если бы использовался стиль tsTabs
.
используйте обходную библиотеку, чтобы зацепить TCustomTabControl.SetStyle()
непосредственно во время выполнения и вернуть ее, ничего не делая.
@kobik: Любая процедура/функция/метод может быть подключена во время выполнения, сложная часть заключается в получении адреса памяти, и есть способы сделать это даже для частных методов. –
Просто используйте некоторые сдержанности. –
Я бы ожидал, что будет доступен «TCustomPageControl». но нет. см. связанную Q, которая может помочь: [Как удалить свойство из потомствующего компонента] (http://stackoverflow.com/questions/15961579/how-do-you-remove-a-property-from-a-descendent- компонент) – kobik
@kobik: 'TPageControl' происходит от' TCustomTabControl'. Но в любом случае большинство методов, описанных в этой ссылке, просто скрывают свойство во время разработки, но свойство все еще доступно для кода во время выполнения. –