Ver Mensaje Individual
  #2  
Antiguo 09-06-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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, GetPropList, 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
Responder Con Cita