for I := 0 to Count - 1 do
Warum genau denn bis Count-1? Geht man hier einfach auf verdacht bis in einen sehr hohen Bereich?
In PopupList registriert sich jede TPopupMenu-Instanz beim Create und meldet sich im Destroy wieder ab. Die aktuelle Anzahl der Einträge einer Liste steht in Count und das erste Element hat den Index 0. Deswegen durchläuft
for I := 0 to Count - 1 do
die gesamte Liste. Da wir in der Message lediglich das
Handle des Menüs bekommen, suchen wir die dazu passende Instanz in der For-Schleife. Sobald diese gefunden ist, bricht das Break die Schleife ab.