home *** CD-ROM | disk | FTP | other *** search
- {
- Stuart Maclean
-
- Hi there, I've found a neat way of passing an Object a method of its own
- class, which it then executes. The idea comes from Smalltalk's
- change/update mechanism For dependencies under the MVC paradigm.
-
- Works under TP6.
- }
-
- Type
- DependentPtr = ^Dependent;
-
- Dependent = Object
- Procedure Update(p : Pointer);
- Procedure SomeMethod;
- end;
-
- Model = Object
- dep : DependentPtr;
- Procedure Change;
- end;
-
- Procedure Dependent.Update; Assembler;
- Asm
- les di, self
- push es
- push di
- call dWord ptr p
- end;
-
- Procedure Dependent.SomeMethod;
- begin
- { do something here }
- end;
-
- Procedure Model.Change;
- begin
- dep^.Update(@Dependent.Somemethod);
- end;
-
- Var
- m : Model;
- d : Dependent;
-
- begin
- m.dep := @d; { add d as a dependent of m }
- m.Change; { caUses d to be updated }
- end.