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