Du könntest zum Testen ein
Application.ProcessMessages;
hinter
Panel1.Visible := False;
einbauen.
Aber das ist wie gesagt nur ein Test. Schöner wäre es, wenn du die Methode
UrlDownloadToFile()
in einen eigenen Thread auslagerst. Ich vermute einfach mal, dass das noch nicht passiert ist. So wie es jetzt ist, wird deine
GUI während des Downloads nicht korrekt neu gezeichnet da sie ja mit dem Herunterladen der Datei beschäftigt ist.