Ver Mensaje Individual
  #2  
Antiguo 09-09-2011
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
Es un tipo de datos. A las variables de ese tipo les puedes asignar métodos con esas características y ejecutarlos desde dichas variables.

Un uso común de esto está en los eventos de la VCL. Por ejemplo, eventos como OnClick corresponde al tipo de datos:

Código Delphi [-]
TNotifyEvent = procedure(Sender: TNotifyEvent);

El evento OnClick, como tal está declarado así:

Código Delphi [-]
TControl = class(TComponent)
private
  ...
  FOnClick: TNotifyEvent;
  ...
public
  ...
  property OnClick: TNotifyEvent read FOnClick write FOnClick;
  ...

En algún lugar del código de TControl que maneja los clics del ratón está este código:

Código Delphi [-]
if Assigned(FOnClick) then
  FOnClick(Self);

Es decir, si el puntero FOnClick tiene un valor asignado, ejecuta el método al que apunta pasando la instancia de TControl como parámetro.

Aunque puede tener diversos usos, el más común, me parece, es en este contexto de los eventos.

Agrego: el tipo de datos procedure ha existido siempre en pascal y sirve para almacenar procedimientos en general. El uso de of object simplemente indica que en lugar de un procedimiento regular, se trata del método de un objeto.

// Saludos
Responder Con Cita