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

Вниз

создание визуальных компонентов   Найти похожие ветки 

 
Vitalik ©   (2002-10-17 22:06) [0]

привет!
Я создаю некий компонент на основе TPanel
Мне нужно, чтобы когда я кладу мой компонент на форму, то у него автоматически устанавливались некоторые свойства. Я пытаюсь делать вот так:

TMyNewComponent = class (TPanel)

****

constructor TMyNewComponent.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
BevelOuter := bvLowered;
Caption:= "" ;
end;

Я делаю это так, потому что так делается в TCustomPanel. Там, в частности, устанавливается значение BevelOuter:=bvRaised; А мне надо, чтобы было bvLowered. Так вот как мне всё это делать?
спасибо!


 
Kibitzer ©   (2002-10-17 22:43) [1]

Всё правильно ты делаешь.


 
Юрий Зотов ©   (2002-10-17 22:47) [2]

Так и делать, все правильно Вы делаете. Но будет совсем грамотно, если еще и переопределить дефолтные значения тех свойств, которые Вы меняете в конструкторе на те, которые Вы в нем фактически выставляете (конечно, только для тех свойств, которые вообще могут иметь дефолтное значение). См. исходники TCustomPanel - там прописаны стандартные дефолтные значения.

type
TMyNewComponent = class(TPanel)
public
constructor Create(AOwner: TComponent); override;
published
property BevelOuter default bvLowered;
end;

constructor TMyNewComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
BevelOuter := bvLowered;
Caption := "";
...
end;


 
Kibitzer ©   (2002-10-17 23:02) [3]


> Юрий Зотов © (17.10.02 22:47)


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

И ещё, я забыл, что так просто свойство Caption не поменять. Нужно делать так:

constructor TMyNewComponent.Create(AOwner: TComponent);
begin
inherited;
BevelOuter := bvLowered;
Caption := "";
ControlStyle:=ControlStyle - [csSetCaption];
end;


 
Юрий Зотов ©   (2002-10-17 23:18) [4]

> Kibitzer © (17.10.02 23:02)

Не согласен.
:о)

Флаг csSetCaption имеет совсем другой смысл. Менять свойство Caption он нисколько не мешает.

csSetCaption: The control’s Caption should match the Name property if it has not been explicitly set to something else .


 
Kibitzer ©   (2002-10-17 23:44) [5]


> Юрий Зотов © (17.10.02 23:18)


> Флаг csSetCaption имеет совсем другой смысл. Менять свойство
> Caption он нисколько не мешает.

А ты попробуй создать этот компонент, положить его на форму в DesigTime и посмотри на Caption. Зачем же тогда Caption := "";. Я не просто так написал второе сообщение. Первое я написал до того как создал компонент, а второе после :-)))


 
Vitalik ©   (2002-10-18 06:13) [6]

А ещё такой вопрос.
У компонентов созданных в design-time конструктор вообще вызывается?
Вот сколько я точки останова в этот мой конструктор не ставлю, а никогда на них остановка не происходит. У меня в конструкторе память выделяется. Получается, что компоненты, которые создаются в design-time просто неработоспособны. Я вообще в первый раз с визуальными компонентами работаю, так вот не подскажете ли как мне мне заставить конструктор работать?


 
Vitalik ©   (2002-10-18 06:27) [7]

Ой, прошу прощения!
На последний мой вопрос я уже знаю ответ!


 
Юрий Зотов ©   (2002-10-18 09:08) [8]

Похоже, что и с невизуальными тоже...
:о)

Конструктор вызывается всегда, но какие же точки останова могут быть в design-time?

Забудьте об этом. В design-time зарегистрированный в Delphi компонент является частью самой Delphi. Встроенный в Delphi дебаггер - тоже часть самой Delphi. Вы хотите, чтобы программа отлаживала сама себя?

Отладка компонента в design-time производится головой и ручками. В особо сложных случаях используется внешний дебаггер, под которым запускается вся Delphi.



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-92482
Хамло
2002-10-18 09:18
2002.10.28
Существует ли какая-нить функция подстановки....?


14-92710
AL2002
2002-10-08 13:17
2002.10.28
Девушки. Не напивайтесь никогда.


1-92540
Separator
2002-10-16 08:41
2002.10.28
Zeos Database Objects


14-92680
KidMan
2002-10-06 23:18
2002.10.28
Инсталяция программы, BDE и алиасы


1-92511
"Ujin
2002-10-18 14:56
2002.10.28
Сотню раз видел, а как надо... :( Как услать письмо с аттачментом