Take a look at the TMethod type in Delphi. As Mirage mentioned, a method consist of pointers to data (pointer to self) and code (pointer to method entry). Using TMethod makes it easier to do the type casting. Using it you can do something like this if you wish:[pascal]function TMyClass.ExecProc(aProcName: string): Boolean;
Var
Proc : procedure of object;
Begin
TMethod(Proc).data := Self;
TMethod(Proc).code := MethodAddress(aProcName);
Result := True;
if not Assigned(Proc) Then
Result := False
else
Proc;
end;[/pascal]You can call published methods by name for example.

Hope this helps.