A ver, tkMethod no significa que tengamos un método entre manos, sino que tenemos una
propiedad cuyo tipo de datos es un método. Recuerda, por ejemplo, qué esTNotifyEvent:
Código Delphi
[-]
type
TNotifyEvent = procedure (Sender: TObject) of object;
TNotifyEvent es un
tipo de datos; el tipo
procedimiento (de objeto).
Si te fijas, la misma función que mencionas, Get
PropList, justamente, lo que obtiene es una lista de propiedades, no de métodos, sólo propiedades.
Cuando haces:
Código Delphi
[-]
if ( propsInfo^[i].PropType^.Kind = tkMethod ) then
estás aislando sólo aquellas propiedades cuyo tipo de datos es un procedimiento (o función) lo cual incluye todos los eventos (por cierto, se pueden definir eventos que devuelven valores; funciones, aunque nunca he visto uno).
En resumen, no es lo mismo método, que propiedad tipo método.
Si pones
Código Delphi
[-]
type
TMiTipoEvento = procedure (...) of object;
TForm1 = class(TForm)
published
property Algo: Integer;
property PasaAlgo: TMiTipoEvento;
procedure HazAlgo;
end;
GetPropList te listará Algo y PasaAlgo (mostrando que lo que mencioné en el mensaje anterior no es cierto) pero no listará HazAlgo. HazAlgo es un método mientras que PasaAlgo es un propiedad.
// Saludos