Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Последовательность создания объектов

11
26 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Интересный момент:
имеем класс главной формы:
 
Код:
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};

с кнопкой созданной в дизайн-тайме
в конструкторе формы пытаюсь достучаться до самой кнопки (Button1 это дочерний класс TForm1)
 
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  if (Button1)ShowMessage(Button1->Owner->Name);
}

все проходит на ура
Собственно сам вопрос:
Как такое может быть, что на этапе создания родительского класса у дочернего он уже прописан в свойстве Owner???
Как VCL так хитро создает объекты? (если учесть что Owner - ReadOnly)
1
26 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: oxotnik333
Интересный момент:
имеем класс главной формы:
 
Код:
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};

с кнопкой созданной в дизайн-тайме
в конструкторе формы пытаюсь достучаться до самой кнопки (Button1 это дочерний класс TForm1)
 
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  if (Button1)ShowMessage(Button1->Owner->Name);
}

все проходит на ура
Собственно сам вопрос:
Как такое может быть, что на этапе создания родительского класса у дочернего он уже прописан в свойстве Owner???
Как VCL так хитро создает объекты? (если учесть что Owner - ReadOnly)



С чего вы взяли что это свойство ридонли? во вторых - при отработке конструктора формы ее объекты уже созданы - это обеспечивает конструктор базового класса - который вызывается первым.

11
26 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: kot_
С чего вы взяли что это свойство ридонли?


вот с этого:
[quote=BCB Help]
__property TComponent* Owner = {read=FOwner};
[/QUOTE]

Цитата: kot_
во вторых - при отработке конструктора формы ее объекты уже созданы - это обеспечивает конструктор базового класса - который вызывается первым.


В смысле TCustomForm::TCustomForm(...) или еще выше брать?
Где подсмотреть реализацию конструктора, который обеспечивает создание дочерних объектов?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог