Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.04 c
1-92533
Behemoth
2002-10-16 09:24
2002.10.28
Как передать фокус нужному элементу на TabSheet?


4-92786
_sMile
2002-09-07 07:55
2002.10.28
DeleteFile


1-92582
smok_er
2002-10-17 02:22
2002.10.28
Сообщение windows о смене IP адреса


3-92375
PAVELsinicinV
2002-09-29 20:27
2002.10.28
Добавить ещё один столбец в существующую таблицу ...


14-92675
AL2002
2002-10-07 12:29
2002.10.28
Ва-ва, чё делать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский