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

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

Скрыть свойства. [D5, WinME]


Страницы:   1 2

Gari ©   (2002-10-22 14:49:00) 

Уважаемые господа, проблема маленькая но непрятная. А именно: необходимо скрыть в инспекторе объектов часть свойств компонента (например height, width и.т.д), так вот в FAQ я нашел как это делается, но болты, не чего не получается вчем ошибка подскажите пожалуйста.
привожу пример кода:
TMyControl = class(TWinControl)
protected
procedure SetHeight(Value: Integer);
function GetHeight: Integer;
public
property Height: Integer read GetHeight write SetHeight;
end;

procedure TMyControl.SetHeight(Value: Integer);
begin
inherited Height := Value;
end;

function TMyControl.GetHeight;
begin
Result := inherited Height;
end;


Юрий Зотов   (2002-10-22 18:04:00) [1]

Понизить видимость в Delphi нельзя. Поэтому и вводятся custom-классы.

Но cкрыть (не убрать из класса, а только скрыть из Object Inspector) published-свойство можно, и даже очень просто - зарегистрировать для него пустой редактор свойства (передав nil вместо класса редактора).


Gari   (2002-10-22 16:02:00) [2]

Конечно можно было бы объединять и по категориям, но тогда возникают дополнительные (но решаемые) сложности при переводе компонента в элемент управления ActiveX. Ну и плюс ко всему некоторые пользователи (не буду останавливаться на всех аспектах работы) просто пугаются свойств, названия которых не понимают. Как раз для этого я еще ко всему, с помощью совета в форуме, названия пишу по русски.


MBo   (2002-10-22 15:57:00) [3]

>решить эту проблему
Честно говоря, не пойму, какую проблему это решит - только создаст новые.
Свойство Height не зря сделано published на раннем этапе иерархии - оно совершенно необходимо всем компонентам.
P.S.
Иногда может помочь группировка свойств в OI Arrange by Category, скрытие ненужных категорий, отнесение своих свойств к определенным категориям


Кулюкин Олег   (2002-10-22 15:51:00) [4]

2 Nomad.kz (22.10.02 15:50)
А где они это пишут?


Nomad.kz   (2002-10-22 15:50:00) [5]

Дык, вроде борланды пишут, что если перенести свойство из published в public, то усе будет на этот счет в порядке ...
Только не пинайте меня ногами, если глупость ляпнул ;-)


Gari   (2002-10-22 15:49:00) [6]

Если да, то огромное спасибо. такая шняга мне в компоненте была крайне неоходиом. Так как по мимо стандартных свойств, у меня еще штук 20 добавляется, и мешать их очень не хотелось. А ваш пример, УВАЖАЕМЫЙ мне позволит решить эту проблему.

Еще раз огромное спасибо.


MBo   (2002-10-22 15:44:00) [7]

>А это поможет, скрыть свойства.
Я не поленился проверить...


Кулюкин Олег   (2002-10-22 15:41:00) [8]

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


Gari   (2002-10-22 15:31:00) [9]

А это поможет, скрыть свойства.


MBo   (2002-10-22 15:26:00) [10]

извращенцам ;)

type TMyControl=class(TCustomControl)
private
FH:Integer;
public
Constructor Create(Owner:TComponent);override;
published
property Height:Integer read FH;
end;
procedure Register;

implementation
procedure Register;
begin
RegisterComponents("Samples",[TMyControl]);
end;
{ TMyControl }

constructor TMyControl.Create(Owner: TComponent);
begin
inherited;
Inherited Height:=100;
Width:=100;
end;


Gari   (2002-10-22 15:10:00) [11]

все понял. Раз некак, не чего страшного.


Skier   (2002-10-22 15:08:00) [12]

>Gari
Только прошу без суицида !!! :)
НО - НИКАК !


Gari   (2002-10-22 15:07:00) [13]

А каким либо образом, такую проблему можно решить. Мне бы это сильно помогло.


Игорь Шевченко   (2002-10-22 15:06:00) [14]


> Извените, я думал что форум он для всех в том числе
> и для простых смертных. Прочитать книгу, это не трудно,
> дай бог научили в первом классе, я бы хотел получить ответ
> именно из уст непосредственных разработсиков.


Это не на этот форум. Это к Borland"у.

Но там, IMHO, еще дальше пошлют :-)


Skier   (2002-10-22 15:03:00) [15]

>Gari
Скрыть нельзя НИКАКИЕ свойства - если они,
в классе-предке, объявлены в разделе published.


Gari   (2002-10-22 15:00:00) [16]

Сразу в догонку второй вопрос, я так понял что скрыть можно только свойства read_onlyю так ли это.


Gari   (2002-10-22 14:59:00) [17]

Извените, я думал что форум он для всех в том числе и для простых смертных. Прочитать книгу, это не трудно, дай бог научили в первом классе, я бы хотел получить ответ именно из уст непосредственных разработсиков.


Skier   (2002-10-22 14:58:00) [18]

>Gari
св-во Height объявлено в классе
TControl как published и "уменьшить видимость"
этого св-ва НЕЛЬЗЯ !

Такие уж правила в Borland-e придумали...:)


Игорь Шевченко   (2002-10-22 14:57:00) [19]

Gari (22.10.02 14:55)

Учите матчасть, уважаемый. Object Pascal Languauge Guide зовется.


Gari   (2002-10-22 14:55:00) [20]

А если по подробнее почему нельзя. Мы же переопределяем данные свойства, т.е. в нашем компоненте они стаят на первом месте по отношению к родительскому классу. Я думал что может быть в коде что то не дописали таке бывает, в Faq.


Страницы:   1 2

Наверх

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