[ franjo_tahi2 @ 24.10.2011. 09:58 ] @
Radim nasljednika kontrole TDataSource. Kako napraviti overrload events-a OnDataChange?
pokušao sam ovako pa ne ide... ne znam kako da mu kažem da izvrši proc. DoOnDataChage.
Isto tako ne znam kako da pozovem korisničku tj. onu koja je definirana van klase.

Code:

TMyDataSource = class(TDataSource)
  private
    { Private declarations }
    fOnDataChange: TDataChangeEvent;
    ...
 published
    { Published declarations }
    property OnDataChange: TDataChangeEvent read fOnDataChange write fOnDataChange;
  end;

procedure TMyDataSource.DoOnDataChange;
begin
  ShowMessage('mjenja 2.1');
  // da li poziv može:
  if Assigned(OnDataChange) then OnDataChange;
end;


[ savkic @ 24.10.2011. 15:01 ] @
> Radim nasljednika kontrole TDataSource. Kako napraviti overrload events-a OnDataChange?

Koliko vidim nema DoOnDataChange metoda tako da ćeš morati da handler koji korisnik postavi zameniš sa svojim koji uradi šta želiš i posle pozove korisnikov handler.
[ franjo_tahi2 @ 24.10.2011. 15:41 ] @
Obviously je to, ali meni se ne izvršava moja metoda koju definiram u klasi.
Koliko sa gledao po klasi TDataSource i njenim predhodnicima, nema metode doOn..... Kako da klasu natjeram da izvši moju meodu DoOnDataChage koju sam definirao unutar nje (na listingu post prije)?

Nisam kopirau u listing, njena delkaracija postoji u klasi i Delphi uredno prevede kod.

Nisam naposao: koristim D2007

Molim ako mi možete pomoći što prije, zapeo sam na tom dijelu. Ako ne uspjem ugurati kod u novu kontrolu koja će nasljediti TDataSource, morat ću kreirati posbenu klasu, a to mi nije najelegantije rješenje. Radi, ali...
[ Rapaic Rajko @ 25.10.2011. 08:42 ] @
Lepo ti savkic rekao, ali evo jos mala pomoc:

Code:

  TMyDataSource = class(TDataSource)
  private
    { Private declarations }
    fUserDataChange: TDataChangeEvent;
    fMyDataChange: TDataChangeEvent;
    ...
  public
    procedure Loaded; override;
  published
    { Published declarations }
    property OnDataChange: TDataChangeEvent read fOnDataChange write fUserDataChange;
  end;


Sve sto sad treba da uradis je da u metodi Loaded podmetnes TVOJ handler, u kojem proveravas da li je dodeljen USER handler, i ako jeste izvrsavas ga. Prakticno, kod koji si napisao u Doxxx metodi...

Pozz
[ franjo_tahi2 @ 25.10.2011. 13:54 ] @
Uspio riješiti, zahvaljujem na pomoći :)

Što sve ne radimo za korisnika... žele upis/izmjenu naopako: najpije se unesu podaci u obične TEdit kontrole, a onda se kaže "upiši". Sada mjenjam tDtaSource tako da to njemu kažem: koje kontrole koristi za prikaz, koje za update/append itd. (a moglo je sve jednostavnije...)