Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: 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 вся ветка

Текущий архив: 2002.09.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
1-50732
Mr.Kirya
2002-09-04 23:44
2002.09.16
DXPlay


4-51046
Иван
2002-07-24 16:25
2002.09.16
Заблокированный файл


3-50657
Nina
2002-08-26 15:13
2002.09.16
подскажие как сделать запрос!


3-50607
MyVeryShortLogin
2002-08-26 12:13
2002.09.16
Проблема с генераторами в IB->Delphi


3-50615
Sergey-ZZZ
2002-08-26 15:03
2002.09.16
InterBase