Let me break this down into two so that they are easier to understand. Firstly, procedure(AFinished: Boolean) not a boolean variable, it is a reference to a procedure that takes a boolean value as a parameter. This is basically the heading of a procedure, except for without a procedure name, because it is just a type definition. Any procedure matching this signature can be assigned to this variable.
The of object means that this is not just a reference to a procedure, but a reference to a method; it must belong to the object. The compiler needs to know the difference so that it can store the self pointer for the object along with the procedure pointer so that it can be called correctly, as other posters pointed out.
Basically, this is an announcement of a new event handler, and it is a fairly common pattern in Delphi. This is the same thing that VCL does everywhere. When you create a button and assign an OnClick handler, it should be procedure (Sender: TObject) of object; . Your form gives the button a link to the method, referring to itself and the event handler procedure, and then the button uses this information to call the handler in the form when someone clicks on it.
This code does the same. This provides a way to notify any external object when DoUpdateMessage starts, using the standard Delphi idiom for event notification.
Mason wheeler
source share