Forum Delphi.cz
Delphi => Obecné => Téma založeno: 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
-
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
- Asi by bolo vhodnejšie Tmujbutton=class(TComponent)
- A najlepšie by bolo vytvoriť si vlastný komponent
- Alebo použiť/kúpiť TSM. A nebudeš riešiť takéto veci
- Keďže hodnoty prideľuješ dynamicky, tak inú cestu nemáš
- Ešte je možnosť (nevieme čo všetko máš v zámere) odvádzať si podľa potreby potomkov
-
Zabudol som na
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ť.
-
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 )
-
Existuje Assign. Ak to nepoznáš, tak si o tom prečítaj. Možno to je to čo hľadáš. A možno nie.
-
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).