das liegt daran das er sobald du ein item löscht er "count" nicht aktualisiert und dann dann natürlich ausßerhalb der zulässigen bereiches bist.
Delphi-Quellcode:
While PopUpMenu1.Items.Count > 0 do
PopUpMenu1.Items.Delete(0);
Edit: Weis aber nicht ob das funzt