Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

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

 
Gari   (2002-10-22 14:49) [0]

Уважаемые господа, проблема маленькая но непрятная. А именно: необходимо скрыть в инспекторе объектов часть свойств компонента (например 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;


 
Skier ©   (2002-10-22 14:51) [1]

>Gari
Это нельзя сделать !
Можно только сделать св-во Read-only.

Но лучше всего наследоваться от
классов с префиксом TCustom...и тогда
всё будет...


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

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


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

Gari (22.10.02 14:55)

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


 
Skier ©   (2002-10-22 14:58) [4]

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

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


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

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


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

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


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

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


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


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


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

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


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

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


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

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


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

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


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

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

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:31) [13]

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


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

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


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

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


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

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

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


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

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


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

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


 
MBo ©   (2002-10-22 15:57) [19]

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


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

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


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

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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
14-11478
vopros
2002-10-16 14:14
2002.11.04
Как звали ваших девушек?


7-11502
VetMIg
2002-08-30 01:59
2002.11.04
Модальные окна


6-11377
Grande
2002-08-30 12:24
2002.11.04
Как прослушать порт?


1-11187
Андрей Прокофьев
2002-10-24 14:18
2002.11.04
Как включить (и прочитать) в ресурс анимационный курсор


6-11364
novato
2002-09-05 07:56
2002.11.04
Socket+proxy=отправка сообщений))