Clone FireMonkey objects

by Feb 6, 2013

I've got a task of cloning FireMonkey objects. Let it be "chess". An object is created as an aggregate in design-time. Look at the picture in the Structure pane. I have made the composite pawn model and start thinking of make 15 more.

If you’re thinking of a similar method, please, try Clone method. It will help you clone any FireMonkey object, not necessarily pawns, 3D primitives, but also controls. The only hint you need to know is that the only property “Parent” is not cloned, not to trigger rebuilding of the scene. Very often cloning should be done “purely-in-memory” with no consequences to the visual interface and corresponding times to draw.

The code shows how to do clones:

var
tmp : TDummy
begin
// cloning without visual effects
tmp := TDummy(duPawn.Clone(self))
// setting Parent property to see the clone
tmp.Parent := self // Dummy1 or any typically parental object
// don't foreget to change Position (x, y and z)
end

Once again, Clone is implemented in TFmxObject (FMX.Types).

Thanks to Eugene Kryukov, FireMonkey architect and my good adviser.