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

Вниз

События при помещении компонента на форму   Найти похожие ветки 

 
Raduga   (2003-02-22 12:29) [0]

Здравствуйте!!!
Не подскажите какие события(для формы и компонента) возникают при
помещении компонента на форму в design-time,и вызываются ли какие-нибудь методы компонента по умолчанию? Компонент - наследник от TComponent.
Спасибо.


 
MBo   (2003-02-22 12:43) [1]

Notification вызывается с opInsert


 
Meson   (2003-02-22 12:54) [2]

Это очень легко проверить. Поставь в методах компонента ShowMessage("ИмяМетода") и сразу станет понятно что вызывается и в каком порядке.


 
Юрий Зотов   (2003-02-22 14:43) [3]

Не надо мучаться с кучей ShowMessage. Надо просто нажать F1 и убедиться, что MBo сказал верно.


 
Raduga   (2003-02-24 13:45) [4]

А после того как был вызван конструктор компонента?


 
Юрий Зотов   (2003-02-24 14:10) [5]

А после того как был вызван конструктор компонента, только что созданный компонент будет вставляться в список Components формы (InsertComponent). В этот момент и сработает Notification.


 
Raduga   (2003-02-25 00:19) [6]

Вставлял ShowMessage в Create и Notification. При помещении компонента на форму выводится сначала шоумессадж notification, а затем create"а.


 
Юрий Зотов   (2003-02-25 05:30) [7]

Notification отрабатывает, когда в Вашем конструкторе вызывается Inherited Create. То есть, ПОСЛЕ вызова Вашего конструктора, но ДО его завершения. Точнее - Notification вызывается из конструктора класса TComponent (через InsertComponent).

Что так мучаться целых 3 дня? Лучше скажите, в чем же проблема?



 
Raduga   (2003-02-25 11:58) [8]

>Юрий Зотов
Спасибо, что объяснили.
А проблема в следующем:
Есть компонент (не мой)- наследник от TComponent"a, в котором свойство Name объявлено в public и выполняет совсем другие функции, т.е. не предназначено для хранения имени компонента.Делаю свой компонент - наследник от вышеописанного, как в нем получить собственное имя (имеется в виду стандартное имя комонента при помещении его на форму). Я объявляю дополнительное поле, назовем его FComponentName:TComponentName
которое хранит имя компонента. пробовал заполнять его в конструкторе

constructor TMyComponent.create(AOwner:TComponent)
begin
inherited create...
....
FComponentName:=TComponent(self).name;
....
end;


но поле FComponentName="". Вообще возможно ли получить в конструкторе имя компонента (речь о работе в design-time)?
Или как к нему "добраться" (желательно не используя методы чтения и записи свойств).
Заранее спасибо.






 
Юрий Зотов   (2003-02-25 22:19) [9]

Что-то ОЧЕНЬ странное Вы рассказываете. Во-первых, перемещение свойства Name в public НИЧЕГО не меняет - область видимости в Delphi нельзя понизить. Во-вторых, со свойством Name работает FormDesigner и еще целая куча интерфейсов IDE, поэтому попытка изменить назначение этого свойства должна, IMHO, привести просто к элементарной неработоспособности компонента. В третьих, даже если он и работает, то я бы ОЧЕНЬ не советовал пользоваться ТАКИМИ компонентами.

Ну а если уж очень надо, то посмотрите в TComponent методы GetNamePath и SetName. Если автор "компонента" не покорежил и их заодно, то они дают/устанавливают нормальное имя компонента (а если он и их покорежил, то тем более советую выбросить этот компонент на помойку). Так что воспользуйтесь этими методами - и никакие конструкторы с Notification"ами Вам будут не нужны.





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

Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
3-16858
AlexG
2003-02-17 14:46
2003.03.06
Чтение данных из RemoteDateModul


8-17209
ivanivan
2002-11-19 06:40
2003.03.06
Как


8-17212
GROL
2002-11-20 16:29
2003.03.06
Изменение изображения на экране


4-17460
JibSkeart
2003-01-17 15:32
2003.03.06
Как Работать с окошком с делать прозрачным итд если


14-17355
Artem Gazizov
2003-02-15 23:01
2003.03.06
страны мира





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский