look here.
https://www.freepascal.org/docs-html/rtl/classes/ifpobserver.htmlThat is the interface that receives notification messages from the observed objects
to use that, you can insert this in your class definition..
TFORM1 = Class(Tform, IfpObserver);
You will get a compiler error of course because you need to implement the method also..
Procedure FpObserveredChange(ASender:TObject; Operation:TObserveredOoperation;Data:Pointer);
Put that in the Tform1 Class and implement the body of it like you would any other method..
So this is the concept behind it. You create an object that has a IfpObverser interface, for example a TstringList and you can add a observer to the list. In this case if you were to do as I showed you above the TFORM1 would be the observer.
When ever the stringlist makes a change it sends notices to all the observers in the list. the Observers receive this and can do as they please with it.
I can make an example if you wish..