Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скрыть свойства в Object Inspector [D5, Win2k]


VladP ©   (2002-09-03 11:25:00) 

Здавствуйте, мастера!
Можно ли скрыть свойства компонента(чтобы они не показывались в ObjInspector), унаследованного от TWinControl (такие как Left, Top, Width ...).
Пытался писать их в private и protected секции - все равно отображаются. Неужели придется наследоваться от TComponent?


VladP   (2002-09-05 09:47:00) [1]

Работает!
RegisterPropertyEditor (*(GetPropInfo(__typeinfo(TMyComponent), "Left"))->PropType,
__classid(TMyComponent), "Left", NULL);


VladP   (2002-09-05 09:10:00) [2]

PTypeInfo intTypeInfo(void)
{
PPTypeInfo Temp;

Temp = GetPropInfo(__typeinfo(TMyComponent), "Left")->PropType;
assert(Temp != NULL);

return *Temp;
}


Виктор Щербаков   (2002-09-04 14:06:00) [3]

В BCB вроде действительно 2 типа классов. VCL-классы и стандартные C++-классы.
Для VCL-классов там даже специальные ключевые ключевые есть. __delphiclass, __delphireturn.


Толик   (2002-09-04 13:58:00) [4]

to VladP (04.09.02 06:34)
>>Пишу на BCB и аналог TypeInfo(integer) не нашел (__typeinfo() >>работает только с VCL классами).

Изначально вопрос стоял так: "как скрыть св-во в ObjectInsp". Интересно, а что в Вашем понимании "VCL-класс"? VCL-класс - это то, что унаследованно от TObject, ну так и в чём проблема в использовании __typeinfo()? Или вы хотите в ObjInsp засунуть класс не наследуясь от TObject?


Юрий Зотов   (2002-09-04 08:55:00) [5]

В Delphi это модуль System. В BCB тоже обязано быть - ведь и в нем регистрируются редакторы свойств. Посмотрите примеры из комплекта поставки, посмотрите пакеты для BCB - наверняка найдете. Не быть этого просто не может.


VladP   (2002-09-04 06:34:00) [6]

Пишу на BCB и аналог TypeInfo(integer) не нашел (__typeinfo() работает только с VCL классами).


Юрий Зотов   (2002-09-04 00:02:00) [7]

> VladP

А зря не прислушались, батенька...

На работе возможности не было, но вот пришел домой и проверил. Все как и ожидалось.

Задача решается в 4 элементарные строчки (по одной на каждое скрываемое свойство). Что, вероятно, в миллион раз проще, чем наследование от TComponent с последующим восстановлением функциональности TWinControl (практически - дублирование кода двух мощнейших классов).

uses
...
Classes, // RegisterComponents
Controls, // TWinControl
DsgnIntf; // RegisterPropertyEditor

type
TMyWinControl = class(TWinControl)
...
end;

procedure Register;
begin
RegisterComponents("MyControls", [TMyWinControl]);
RegisterPropertyEditor(TypeInfo(integer), TMyWinControl, "Left", nil);
RegisterPropertyEditor(TypeInfo(integer), TMyWinControl, "Top", nil);
RegisterPropertyEditor(TypeInfo(integer), TMyWinControl, "Width", nil);
RegisterPropertyEditor(TypeInfo(integer), TMyWinControl, "Height", nil);
end;


Anatoly Podgoretsky   (2002-09-03 19:51:00) [8]

Да, лишнее это, баловство


VladP   (2002-09-03 19:44:00) [9]

Всем спасибо!
Пришлось все равно наследоваться от TComponent. Совет по перекрыванию доступа не работает. Свойство после этого не измененяет члены класса, но присутствует с OI.
Вообще убрать свойства нужно было лишь из-за того,что компонент имел Align=alClient и свойства просто мешали в OI.
Уще раз всем спасибо.


Юрий Зотов   (2002-09-03 13:02:00) [10]

Не уверен, но...

Попробуйте зарегистрировать для этих свойств пустой редактор (вместо класса редактора передать nil).

Естественно, в run-time это никак не скажется.


MBo   (2002-09-03 12:42:00) [11]

чтобы не показывалось - заведи новое свойство с таким же именем, но доступом только Read.


Кулюкин Олег   (2002-09-03 12:36:00) [12]

Скрыть нельзя, можно написать для них PropertyEditor, и тогда их можно будет увидеть, но нельзя изменить.

Но это все извращения.
Лучше выберите другого предка.


gek   (2002-09-03 11:37:00) [13]

посм от чего произведен TWinControl, сам поймешь


Наверх

Титульная страница Поиск, карта сайта Написать письмо