A megoldáshoz azt használjuk fel, hogy egy-egy komponenst igen egyszerűen kihelyezhetünk vágólapra és onnan beilleszthetünk, akár egy másik helyre is, mint például egy TPanel komponens.
Egy dologra kell csak vigyáznunk a másolás közben: a Form-on nem lehet két azonos nevű komponens, tehát kimásolt komponens beillesztése előtt meg kell változtatnunk a forrás komponens nevét. Mivel a másolás folyamatában a komponens minden tulajdonsága, még a Name property is változatlan értékkel kerül beillesztésre, így gondot okozhatnak az azonos nevek. Ez a hátrány viszont előny is: így nincs gondunk a többi property értékének beállítására, mivel azok is másolásra kerülnek.
A duplikálást akárhányszor elvégezhetjük, ha figyelünk arra, hogy minden beillesztett komponens és a már meglévők is különböző névvel fussanak.
Másoláshoz a Clipboard osztály SetComponent függvénye szolgál, melynek paraméterként meg kell adnunk a másolandó komponenst.
procedure TForm1.Button1Click(Sender: TObject);
begin
Clipboard.SetComponent(Edit1);
Edit1.Name:=Edit1.Name+'old';
Beillesztéskor szintén a Clipboard osztályt kell használnunk, de most annak GetComponent függvényét. Ez két paramétert vár: az elsőben a beillesztett komponens tulajdonosát kell megadni, másodikként pedig a szülőjét. Ez utóbbi lesz az, melynek területén megjelenik a beillesztett komponens.
Clipboard.GetComponent(Self, Panel1);
Button1.Enabled:=false;
end;
Van még egy fontos teendőnk a helyes működés érdekében: mindazon komponensek típusát regisztrálnunk kell, melyeket a vágólapra szeretnénk másolni. Mivel mellékelt példánkban csak TEdit-et másolunk, így elegendő ezt regisztrálni.
initialization
RegisterClasses([TEdit]);