title: Delphi> Please explain this: type... procedure of object
body: <p>I've encountered some code that's new to me...</p>
  
  <p>I've never really seen a <strong>type declaration of a procedure of object</strong>, and I just don't 
  see the point. 
  Why couldn't the developer simply keep a field of type Boolean?</p>
  
  <pre><code>interface
  
      type
        TFinishedCaptureEvent = procedure(AFinished: Boolean) of object;
  
        TFrameCard = class(TFrame)
        ...
        private
          FOnFinishedCapture: TFinishedCaptureEvent;
          procedure DoUpdateMessage(AMessageType: TMessageType);
        public
          property OnFinishedCapture: TFinishedCaptureEvent read FOnFinishedCapture write FOnFinishedCapture;
        end;    
  
  implementation
  
  ...
  
  procedure TFrameCard.DoUpdateMessage(AMessageType: TMessageType);
  begin
    if Assigned(FOnFinishedCapture) then
      FOnFinishedCapture(False);
    ...
  end;
  
  end.
  </code></pre>