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

Клонирование компонента в RunTime


m.medvedb

Вопрос

Как сделать компонент с нуля нет проблем...... Вопрос, как сделать копию компонента и его обработчиков? Точнее FMX позволяет сделать составной компонент..... как клонировать родителя и все связанные с ним компоненты. 

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

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

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

Добрый день,

 

FireMonkey вводит специальный метод TFmxObject.Clone, позволяющий выполнить копирование объекта (без внутреннего состояния) и всех его дочерних объектов путем сериализации/десериализации объекта в памяти.

 

Соответственно, чтобы получить копию объекта нужно использовать метод:

function TFmxObject.Clone(const AOwner: TComponent): TFmxObject;

У этого метода есть важные особенности:

  1. Этот метод не копирует родителя Parent у копируемого объекта.
  2. Этот метод не копирует обработчики событий.
  3. Этот метод не копирует внутреннее состояние объекта. Только если это состояние сериализуется самим объектом.

Поэтому после выполнения копирования, вы должны задать вручную родителя для копии и требуемые обработчики событий.

 

Так сделано, поскольку в большинстве случаев после копирования для копии задается другой родитель, поэтому чтобы уменьшить количество не нужных операций по выравниванию контролов и тд, задание родителя отводится пользователю.

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