My favorite type of component for this would be a TDrawGrid.
The DrawGrid has paint events that allow you to draw your images.. It has
columns and rows which you can maintain the count of.
A TImageList is a good start of storing Images in a indexed form. The issue with
Timagelist is that all images must be the same size.
Using the Image list can be done for iconic displays, what you can do is load each
image using your "ADD" button into a Tbitmap, from there you can resize it to the size
that is being used for the TimageList. This can be done using one of the canvas copy
functions to adjust the size for the destination.
Experiment with the DrawGrid and Image list a little, check back to see what you think and
maybe some code can be supplied here..