franjo_tahi @ 25.07.2008. 10:38
Radim svoju kontrolu, nasljednika TPanel-a. Na njoj su još nekoliko TEdit-a i TMemo.

Kontrola mora biti vezana na TIBQuery i (osim još nekih poslića) prikazuje dio SQL-a koji se odnisi na WHERE.
Na jedan TIBQery može biti vezano više ovih novih kontrola.

Problem je u sljedećem:
Trebao bih koristiti TIBQuery.AfterOpen tako da nakon eventualne izmjene SQL-a obnovim podatke na svojoj kotroli.
Kako znati kad je event okinut? Pokušao sam u svojoj kontroli kreirati proceduru OnAfterOpen i pri povezivanju dviju kontrola reći TIBQuery-u da mu je to AfterOpen. Nova procedura u mojoj kontroli se starta, ali se ne starta orginalna procedura u TIBQuery-u.
Da je moja kontrola nasljednik TIBQuery-a, bilo bi lako napraviti override, ali ovako...

Ima li tko ideju što napraviti? Znači: mora se startati procedura u mojoj kontroli, a nakon nje, ako posoji, procedura u TIBQuery-u, tj. moraju postojati dvije procedure AfterOpen.

Unaprijed hvala na svakoj pomoći. Ako imate komadić koda koji to rješava...
savkic @ 25.07.2008. 14:35
> Ima li tko ideju što napraviti? Znači: mora se startati procedura u mojoj kontroli, a nakon nje, ako posoji, procedura u TIBQuery-u, tj. moraju
> postojati dvije procedure AfterOpen

Pre nego postaviš svoj OnAfterOpen handler sačuvaj postojeći handler i na kraju (početku) tvog handlera pozovi taj sačuvani. Npr. ako je handler tipa TNotifyEvent:

Code:

FOldHandler: TNotifyEvent;

FOldHandler := Query.OnAfterOpen;
Query.OnAfterOpen := NewHandler;

kod handlera:

if Assigned(FOldHandler) then
  FOldHandler(Sender);

franjo_tahi @ 02.08.2008. 21:12
Hvala, radi, jednostavno...