Перейти к содержанию
Fire Monkey от А до Я
  • 0

Почему для моего компонента временно создаваеммые контролы в RunTime видны в Structure Panel?


d7d1cd

Вопрос

Привет всем. Я в С++Builder XE6 создал свой компонент TIconLabel на основе 5-ти других. Код компонента такой:

//--- IconLabel.h -------------------------------------------------------------------------------------------
class PACKAGE TIconLabel : public TLayout
{
private:
    TImage *FIcon;
    TLabel *FCaption;
    TLabel *FDescription;
    TFloatAnimation *FAnimation;
 
protected:
 
public:
    __fastcall TIconLabel(TComponent* Owner);
    __fastcall ~TIconLabel();
 
__published:
    __property TImage *Icon = {read=FIcon};
    __property TLabel *Caption = {read=FCaption};
    __property TLabel *Description = {read=FDescription};
    __property TFloatAnimation *Animation = {read=FAnimation};
};
 
//--- IconLabel.cpp -----------------------------------------------------------------------------------------
__fastcall TIconLabel::TIconLabel(TComponent* Owner)
    : TLayout(Owner)
{
FIcon = new TImage(this);
FIcon->Parent = this;
FIcon->HitTest = false;
 
FCaption = new TLabel(this);
FCaption->Parent = this;
FCaption->HitTest = false;
 
FDescription = new TLabel(this);
FDescription->Parent = this;
FDescription->HitTest = false;
 
FAnimation = new TFloatAnimation(this);
FAnimation->Parent = this;
 
HitTest = true;
}
 
 
 
__fastcall TIconLabel::~TIconLabel()
{
FIcon->Free();
FCaption->Free();
FDescription->Free();
FAnimation->Free();
}

Установил я этот компонент, положил его на форму, настроил все свои "встроенные" компоненты. Но мне понадобился еще один экземпляр. Я выделил на форме только что мной настроенный свой компонент, нажал Ctrl+C, выделил форму и нажал Ctrl+V. И получил ... как бы не совсем свой компонент. В структуре объектов я стал видеть все компоненты, которые должны были быть внутри моего компонента.

Подскажите, что я не так сделал?

 

post-387-0-34979800-1409407979.png

 

P.S. Пожалуйста, перенесите тему в соответствующий раздел форума.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Добрый день, при создании временного компонента в ваше случае нужно указать для временно создаваемого компонента (FIcon, FDescription и тд)

​Stored = False

О Stored можно почитать:

Ссылка на комментарий
  • 0

Еще раз спасибо, Ярослав! Все заработало как надо! Видел много ваших ответов на данном форуме и вот лично убедился в Вашем мастерстве!

Изменено пользователем Brovin Yaroslav
Ссылка на комментарий
  • 0

А можно еще вопрос? Я в свой компонент TIconLabel загрузил картинку. Затем в дизайнере скопировал этот компонент. Однако копия оказалась пустой, то есть, картинка, загруженная в первый контрол, не скопировалась. Так же текст, введенный в Label первого контрола, не копируется. Это нормально?

Ссылка на комментарий
  • 0
  • Администраторы

Не за что. Рад помочь. 

 

В вашем коде нормально. У вас все свойства доступны только на чтение. Значит при копировании в них данные не запишутся.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...