Autor Téma: jak na kopii objektu  (Přečteno 691 krát)

Offline anec

  • Mladík
  • **
  • Příspěvků: 94
  • Karma: 1
jak na kopii objektu
« kdy: 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


« Poslední změna: 06-11-2019, 16:17:36 od anec »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:jak na kopii objektu
« Odpověď #1 kdy: 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
  • 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
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:jak na kopii objektu
« Odpověď #2 kdy: 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ť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline anec

  • Mladík
  • **
  • Příspěvků: 94
  • Karma: 1
Re:jak na kopii objektu
« Odpověď #3 kdy: 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 )

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:jak na kopii objektu
« Odpověď #4 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline starous

  • Mladík
  • **
  • Příspěvků: 62
  • Karma: 2
Re:jak na kopii objektu
« Odpověď #5 kdy: 06-11-2019, 18:57:27 »
Zkus použít tohle:
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).