izmenjeno 1 put, poslednji put komplikator 12.01.2012. u 09:07
Izmene poruke
- komplikator12.01.2012. u 09:07zapis iz teksta poruke
Pozdrav, ekipa, evo mene sa tjednim pitanjem iz OOP.
Opet sam negdje preskočio ili nisam dobro shvatio, a do sada nisam koristio na taj način.
Radi se o slijedećem:
Imam klasu / objekt koja se brine o nečemu (objektu korisnika - prijave, odjave, učitavanje podataka, pripadnost grupama, ser management, promjena lozinke i još dosta toga). Ta klasa ima jedan od eventa koji se zove
UserChanged složen klasičnom pričom: lokalno TNotifyEvent polje vezano na property i metoda kojom okidam lokalno polje.
Forme imaju metodu u kojoj nešto odrađujem kad nastupi event TKorisnik.userChanged. Ta metoda jeu konstruktoru forme vezana na event, s time da forma ima lokalno polje tipa TNotifyEvent u koje pospremam stari handle eventa,
u proceduri odradim preuzeti event i na kraju odradim ovaj "stari" preuzeti iz lokalne varijable principom OlduserChanged(Self);
I ostale forme (kojima je ova main forma gore owner) na isti način nadziru taj event (smisao je da promjena nekog parametra korisniku ili promjena korisnika odmah napravi promjene na izgledu i funkcionalnosti pootvaranih formi u TDI sučelju).
Problem je što sve radi, ali... samo sa jednom formom. Ako više od jedne forme/objekta handla event, bez obzira što se radi preusmjeravanje eventa tako da se upamti, odradi nešto svoje i proslijedi event dalje stvar ne funkcionira.
Još više me buni, što se event zakači za neku klasu, umjesto za instancu objekta. Primjerice postoji samo forma main, a event se poziva i skače i na neku klasu iz koje u tom trenutku uopće nije stvoren objekt (nije otvarana ta forma).
Ima li netko ideju ili riješenje, ne kužim gdje griješim i zašto više formi ne može funkcionirati ovako?
Edit: Znam da c# i .NET imaju multiple delegates iliti višestruki event handling, očito se multicast events ne može izvesti u Delphiju, nego treba posegnuti za nekom cakom tipa slanja windows messagea ili neka slična fora.
Ne mogu vjerovati da do ovoga nikad nisam došao, tj. nikad to zatrebao.
Opet sam negdje preskočio ili nisam dobro shvatio, a do sada nisam koristio na taj način.
Radi se o slijedećem:
Imam klasu / objekt koja se brine o nečemu (objektu korisnika - prijave, odjave, učitavanje podataka, pripadnost grupama, ser management, promjena lozinke i još dosta toga). Ta klasa ima jedan od eventa koji se zove
UserChanged složen klasičnom pričom: lokalno TNotifyEvent polje vezano na property i metoda kojom okidam lokalno polje.
Forme imaju metodu u kojoj nešto odrađujem kad nastupi event TKorisnik.userChanged. Ta metoda jeu konstruktoru forme vezana na event, s time da forma ima lokalno polje tipa TNotifyEvent u koje pospremam stari handle eventa,
u proceduri odradim preuzeti event i na kraju odradim ovaj "stari" preuzeti iz lokalne varijable principom OlduserChanged(Self);
I ostale forme (kojima je ova main forma gore owner) na isti način nadziru taj event (smisao je da promjena nekog parametra korisniku ili promjena korisnika odmah napravi promjene na izgledu i funkcionalnosti pootvaranih formi u TDI sučelju).
Problem je što sve radi, ali... samo sa jednom formom. Ako više od jedne forme/objekta handla event, bez obzira što se radi preusmjeravanje eventa tako da se upamti, odradi nešto svoje i proslijedi event dalje stvar ne funkcionira.
Još više me buni, što se event zakači za neku klasu, umjesto za instancu objekta. Primjerice postoji samo forma main, a event se poziva i skače i na neku klasu iz koje u tom trenutku uopće nije stvoren objekt (nije otvarana ta forma).
Ima li netko ideju ili riješenje, ne kužim gdje griješim i zašto više formi ne može funkcionirati ovako?
Edit: Znam da c# i .NET imaju multiple delegates iliti višestruki event handling, očito se multicast events ne može izvesti u Delphiju, nego treba posegnuti za nekom cakom tipa slanja windows messagea ili neka slična fora.
Ne mogu vjerovati da do ovoga nikad nisam došao, tj. nikad to zatrebao.
Potpis
God is real unless is declared as integer.