Any suggestion to improve the code?
It looks a bit weird to me that the interface is implemented by the form. If I were you, I would just use fphttpclient in the form directly. That OnDataReceived can take a form's method instead, directly updating the progress bar in the form. Despite available, interface is not often used in Object Pascal. The event driven nature of FCL/LCL kinda makes it unnecessary, you just assign event to the corresponding handler instead.
Something as simple as the attached project.