In dem Fall würde ich dazu raten, ein einfaches Panel zu nehmen und die Position der einzelnen Frames zu berechnen und selbst zu setzen.
Vielleicht kann Dir als Anregung meine alte Komponente dienen:
http://www.delphipraxis.net/165177-scrollboxflow.html
Ich erzeuge einfach so viele TRects in einem Array, wie es Controls gibt.
Dann berechne ich die Positionen (TRects) bis das Ergebnis passt und dann weise ich die Positionen den Controls zu.
Anschieben kannst Du die Berechnung immer, wenn ein Frame hinzugefügt oder gelöscht wird oder wenn das Panel in der Größe geändert wird.