A ver. Si entiendo bien, lo que querés hacer es un arreglo de objetos de algún tipo... y generarlos dinámicamente.
Por ejemplo, un arreglo de TImage's:
type TArrTImage=array[1..10] of TImage;
var Arreglo:TArrTImage;
Para crear cosas:
Arreglo[1]:=TImage.Create(Self);
Claro que tendrías que tener la cuenta de los ítemes que tenés creados...
Ahora, si los objetos no tienen porqué ser de la misma clase:
Podríamos hacer algo como un arreglo de objetos de la clase madre y después, por la magia del polimorfismo y la RTTI... todo debería funcionar...
Por ejemplo:
type TArrObj=array[1..10] of TObject;
var Arreglo=TArrObj;
Para crear algo, creo que sería así (pero no estoy seguro):
Arreglo[1]:=TImage.Create(Self);
ó si fuera un botón:
Arreglo[1]:=TButton.Create(Self);
OJO: No sé si la clase TObject es ancestra de TImage y TButton...
Algunas cosas podrían llamarse sin "saber" de que clase es el objeto, como el método "Free". Para otras cosas se podría hacer algo así:
if (Arreglo[1] is TButton) then (Arreglo[1] as TButton).Caption:='Holas';
SI es un TButton (is) entonces lo tomamos COMO (as) un TButton...
Espero me hayas entendido, cualquier cosa, preguntá de nuevo.
Suerte y felices compiladas.