[ FranjoZG @ 04.05.2016. 20:55 ] @
Zašto ne radi (i što napraviti da radi) set property-a koji je klasa. Primjer

Code:

tClass1=class
   private
      fNesto: string:
      fDrugo: integer;
   publshed
      property Nesto: string read fNesto write fNesto;
      property Drugo: integer read fDrugo write fDrugo;
end;

tClass2=class(neka visual...)
  private
     fPrva: tClass1;
  protected
     procedure sefPrva(Value: tClass1);
  published
     property Prva: tClass1 read fPrva write setfPrva;
end;

...

procedure tClass2.setfPrva(Value: tClass1);
begin
   fPrva.Nesto := Value.Nesto;
   fPrva.Drugo := Value.Drugo;
end;


procedura setfPrva se ne pokrene... Znam da to mogu napraviti u klasi tClass1 i tada radi, ali mi je zgodnije u tClass2.
[ savkic @ 04.05.2016. 21:07 ] @
A kako tačno pozivaš property Prva?
[ FranjoZG @ 04.05.2016. 21:25 ] @
Radi se o usser kontroli, u programu:
Code:

...
  cl2.Prva.Nesto := 'asdf';
...


ili u object inspektoru mijenjam kao property.
Vidi se uredno i otvaraju se subproperty Nesto i Drugo iz klase tClass1. Uredno ih upisuje i pamti
To je samo dio koda, primjer, sve ostalo radi, a čini mi se da delphi preskače setfPrva, tj. da dođe do objekta preko čitanja property-a u tClass2, a onda u tClass1 radi upis svakog property-a.
Moram to testirati... e da je vremena....

Problem je što klasa tClass1 ne zna za klasu tClass2, a kod setiranje Nesto ili Drugo mora pozvati proceduru iz klase tClass2. Znam da mogu u klasu tClass1 dodati atribut koji će znati tko mu je vlastnik ili prosljediti proceduru, ali nisam očekivao da se delphi ovako ponaša (bezobranik jedan :) )
[ savkic @ 04.05.2016. 21:50 ] @
> cl2.Prva.Nesto := 'asdf';

Ne možeš tako, tvoj setter jasno kaže da setuje klasa ne property.
Dakle za tvoj setter je adekvatna upotreba:
cl2.Prva := NekaInstancaPrve;
[ FranjoZG @ 04.05.2016. 22:05 ] @
Da shvatio sam. Moram napraviti set na cl1, pa kod set Nesto da se okine procedura koja mi treba iz cl2

Upravo to rješavam, mislim da je OK jedino kaj je više pisanja... (da nisam lijen nikad ne bih bio programer)