Forum Delphi.cz

Delphi => Obecné => Téma založeno: anec 06-11-2019, 16:13:30

Název: jak na kopii objektu
Přispěvatel: anec 06-11-2019, 16:13:30
vytvoril jsem

Tmujbutton=class(tWinControl)
   abutton:tbuton;
   alabel: tlabel;
   cislo:integer;
   text:string;
  constructor create;
end;

tmujbutton.create
begin
  abutton:=tbutton.create;
  alabel   :=tlabel.cretae;
  cislo:=0;
  text:='';
end;

da se cely tento objekt nejak jednoduse zkopirovat? kopie vsech vlastnosti metod pripadnych subobjektu proste vse

mam
je na to nejaka funkce nebo si to musim vsechno napsat rucne?
díky

m1,m2:tmujobjekt;
m1:=tmujobjekt.create;
m2:=tmujobjekt.create;
m1.cislo:=25;
m1.abutton.onclick:=udejklik;
m2.copyallfrom(m1)
m1.cislo:=26;

takze ted bude v
m1.cislo 26 a v m2.cislo bude 25 a onclick a button.onclick bude vlastn stejny


Název: Re:jak na kopii objektu
Přispěvatel: Stanislav Hruška 06-11-2019, 17:02:29
V prvom rade by si mal písať čitateľne a používať jednoznačné názvy. Tmujbutton a potom tmujobjekt; Kto sa v tom má vyznať?
K veci
Název: Re:jak na kopii objektu
Přispěvatel: Stanislav Hruška 06-11-2019, 17:09:06
Zabudol som na
Citace
button.onclick bude vlastn stejny
Tak si definuj a priraď už v základnej triede. Ale tak, aby sa to dalo potom preťažiť.
Název: Re:jak na kopii objektu
Přispěvatel: anec 06-11-2019, 17:20:10
díky za reakci, toto byl jen příklad toho o co mi jde.

jde mi o to jestli jde jednoduše kopírovat obsah objektu (obsah = jakýkoliv objekt, string, cokoliv, díky )
Název: Re:jak na kopii objektu
Přispěvatel: Stanislav Hruška 06-11-2019, 17:38:04
Existuje Assign. Ak to nepoznáš, tak si o tom prečítaj. Možno to je to čo hľadáš. A možno nie.
Název: Re:jak na kopii objektu
Přispěvatel: starous 06-11-2019, 18:57:27
Zkus použít tohle:
https://github.com/spinettaro/delphi-event-bus/blob/master/source/external/RTTIUtilsU.pas (https://github.com/spinettaro/delphi-event-bus/blob/master/source/external/RTTIUtilsU.pas)

Jsou tam definovány metody Clone a CopyObject. Využívá to rozšířených vlastností RTTI v novějších Delphi (zřejmě od verze 2010).