Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 1.648 pregleda

Najnovija ↓

Višestruko handlanje eventa 12.01.2012. u 08:19 · pre 180 meseci
izmenjeno 1 put, poslednji put komplikator 12.01.2012. u 09:07
  1. komplikator12.01.2012. u 09:07zapis iz teksta poruke
#1
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.
Potpis
God is real unless is declared as integer.
Re: Višestruko handlanje eventa 12.01.2012. u 10:31 · pre 180 meseci #2
Molim moderatore da obrišu ili zatvore temu. Našao sam rješenje u obliku eventa koji predstavlja objekt (koji pak sadrži listu proceduralnih tipova) koji se izvršavaju.
Dok se sve složi i upotrjebi dobro srukturiranje klasa i malo polimorfizma sve skupa čak dobro izgleda.
Potpis
God is real unless is declared as integer.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme