Скрыть свойства и события в новом компоненте - PullRequest
0 голосов
/ 08 декабря 2018

Я создал в Lazarus новый компонент на основе TPaintBox.Теперь в Object Inspector у меня есть все Свойства и События, которые принадлежат этому базовому компоненту (TPaintBox).

Мой вопрос: могу ли я скрыть выбранные Свойства и События для моего компонента?

Например, я хотел бы оставить видимыми только свойства Ширина и Высота.

Можете ли вы мне помочь?

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Нет, вы не можете скрыть (отменить публикацию) опубликованных свойств.

В Delphi большинство объектов основаны на родительских классах со всеми теми же свойствами, но в основном скрыты.

Так что покаВы не можете скрыть открытые свойства, обычно вы можете достичь желаемого, основывая свой класс на TCustomxxx.

К сожалению, TPaintbox является исключением.Он происходит от TGraphicControl, но, в свою очередь, происходит от TControl, который уже имеет ряд опубликованных свойств, включая AlignWithMargins, CustomHint и некоторые другие, и который, в свою очередь, происходит от TComponent, в котором опубликованы Name и Tag.Чтобы быть справедливым, вам наверняка понадобится имя, и Tag - это не проблема, я бы подумал.

Если вам просто нужно вернуться в TGraphicControl, это не так уж и плохо.Только один член и несколько подпрограмм для копирования.Но вернуться к TComponent, который вам нужно сделать, чтобы скрыть ряд свойств, на самом деле нереально.

0 голосов
/ 08 декабря 2018

Как только свойство / событие опубликовано, оно не может быть опубликовано.

Однако оно может быть скрыто , по крайней мере, из Инспектора объектов (оно все еще доступно дляcode).

После того, как ваш код времени разработки зарегистрировал компонент в IDE, он может:

0 голосов
/ 08 декабря 2018

Не уверен насчет Лазаря, но в Delphi TPaintBox - это легкий потомок TGraphicControl.Большая часть его декларации просто публикация свойств.Я не знаю, что делает ваш компонент, но может быть проще извлечь его непосредственно из TGraphicControl и продублировать код TPaintBox там, где он действительно необходим.Тогда вы можете опубликовать только те свойства, которые вы хотите.Обратите внимание, что эти свойства по-прежнему опубликованы в TControl и TComponent.

.
...