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

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


m.medvedb

Вопрос

Опубликовано

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

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

  • 1
  • Администраторы
Опубликовано

Добрый день,

 

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

 

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

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

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

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

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

 

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

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