Q:  How do I populate a popup menu on the fly?

A:

var
  NewItem: TMenuItem;
  i: integer;
begin
  for i := 0 to listBox1.items.count - 1 do begin
    NewItem := TMenuItem.Create(Self);
    NewItem.Caption := listBox1.items[i];
    PopupMenu1.items.Add(NewItem);
  end;
end;