On select, add the selection to a queue and do not process yet. Then process the items in the queue. A queue is FIFO. There are several good (de)queues available in the standard fpc distribution. E.g. fgl, generics.collections, contnrs. You can also use a Tstrings descendant as a queue.
I am not aware that a listbox (any) has such functionality, although re-ordering is possible.
I always would go for a queue, it is easy and exactly what you asked.