TForm.OnShow wird gefeuert, wenn
TForm.Visible sich auf True ändert (muss also vorher False gewesen sein).
TForm.OnActivate wird gefeuert, wenn die Form den Focus erhält und vorher den Focus nicht hatte.
Weder das eine noch das andere kann ich aus deinem Code herauslesen.
Geschickter wäre es mit
TApplicationEvents.OnIdle zu arbeiten.
Wenn dieses Event kommt und die Form sichtbar ist, dann prüft man, welchen aktuellen Status die Anzeige darstellt. Ist es nicht der aktuelle Status, dann die Daten aktualisieren und den Status merken, ansonsten ist ja alles schick.
Der Status kann eine einfache Integer-Zahl sein, die bei jeder Änderung einfach hochgezählt wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)