Вниз
Скачать: CL | DM;

Скрыть свойства в Object Inspector   Найти похожие ветки 

← →
VladP   (2002-09-03 11:25) [0]

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


← →
gek ©   (2002-09-03 11:37) [1]

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


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

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

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


← →
MBo ©   (2002-09-03 12:42) [3]

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


← →
Юрий Зотов ©   (2002-09-03 13:02) [4]

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

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

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


← →
VladP   (2002-09-03 19:44) [5]

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


← →
Anatoly Podgoretsky ©   (2002-09-03 19:51) [6]

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


← →
Юрий Зотов ©   (2002-09-04 00:02) [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;


← →
VladP   (2002-09-04 06:34) [8]

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


← →
Юрий Зотов ©   (2002-09-04 08:55) [9]

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


← →
Толик ©   (2002-09-04 13:58) [10]

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

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


← →
Виктор Щербаков ©   (2002-09-04 14:06) [11]

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


← →
VladP   (2002-09-05 09:10) [12]

PTypeInfo intTypeInfo(void)
{
PPTypeInfo Temp;

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

return *Temp;
}


← →
VladP   (2002-09-05 09:47) [13]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
4-51023
SPeller
2002-07-24 19:08
2002.09.16
CreateToolbarEx


1-50696
AndreiLvov
2002-09-03 09:29
2002.09.16
Несимметричное масштабирование шрифта


14-50965
Ренат
2002-08-19 10:45
2002.09.16
А какие автомобили предпочитают программеры?


6-50893
BOL
2002-07-03 16:20
2002.09.16
Рассылка большого количества писем по разным адресам


14-50979
Zer
2002-08-22 15:24
2002.09.16
Господа!!!




   Наверх