Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Class kao property

[es] :: Pascal / Delphi / Kylix :: Class kao property

[ Pregleda: 1237 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.dsl.iskon.hr.



+4 Profil

icon Class kao property04.05.2016. u 20:55 - pre 96 meseci
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.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Class kao property04.05.2016. u 21:07 - pre 96 meseci
A kako tačno pozivaš property Prva?
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.dsl.iskon.hr.



+4 Profil

icon Re: Class kao property04.05.2016. u 21:25 - pre 96 meseci
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 :) )
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Class kao property04.05.2016. u 21:50 - pre 96 meseci
> 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;
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.dsl.iskon.hr.



+4 Profil

icon Re: Class kao property04.05.2016. u 22:05 - pre 96 meseci
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)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Class kao property

[ Pregleda: 1237 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.