Results 1 to 6 of 6

Thread: Afteredit event aan procedure koppelen

  1. #1

    Afteredit event aan procedure koppelen

    Hoi,

    Ik wil graag weten of je een afteredit event aan een eigen procedure kan koppelen.

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Ja

    MijnDataSet.AfterEdit := <mijn procedure >;
    Last edited by GolezTrol; 17-Oct-19 at 13:24.
    Delphi is great. Lazarus is more powerfull

  3. #3
    In feite doe je dat al als je een event handler koppelt in design time. Je dubbelklikt het event, waarna de IDE een procedure voor je maakt, én deze via de dfm koppelt aan dat event. In runtime kan het dus ook, zoals jkuiper laat zien. Maar de procedure moet wel de juiste signature hebben, d.w.z. dezelfde parameters als het event-type. In het geval van een AfterEdit event is dat een TDataSetNotifyEvent:

    Delphi Code:
    1. TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

    Dus je procedure moet ook een TDataSet accepteren.

    Je kan natuurlijk ook m.b.v. de IDE een event handler koppelen, en van daaruit weer een andere procedure aanroepen, waarmee je dus een stuk vrijer bent om die te declararen hoe en waar je wilt.
    1+1=b

  4. #4
    Bedankt voor de info.

    Hoe koppel je de TDataSetNotifyEvent aan je eigen procedure? Dat is mij niet helemaal duidelijk.

  5. #5
    Je moet dus een procedure maken die matcht met de signature: procedure(DataSet: TDataSet) of object;

    Die signature betekent het volgende:
    - Het moet een procedure zijn (geen function).
    - Hij moet een TDataset accepteren als normale parameter (geen var, out, const).
    - Hij moet onderdeel zijn van een object, ofwel een method in een class (inclusief form of data module), en geen losse procedure ergens in een unit.

    Die procedure kan er dus bijvoorbeeld zo uitzien:

    Delphi Code:
    1. procedure TMijnForm.MijnAfterEditProc(DataSet: TDataSet);
    2. begin
    3.   ShowMessage('Klaaaar!');
    4. end;

    Daarna kan je 'm simpelweg toekennen door de procedure aan de eventproperty to te kennen. Je gebruikt daarbij een instance van het object waar hij in zit, zoals MijnForm1, en de naam van de procedure zonder haakjes of parameters:

    Delphi Code:
    1. MijnDataModule1.DieEneDataSet.AfterEdit := MijnForm1.MijnAfterEditProc;

    MijnDataModule1 of MijnForm1 mag je natuurlijk weglaten als je dit doet vanuit een non-static method in de betreffende datamodule of form.
    1+1=b

  6. #6
    Dank. Ga het uitwerken.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •