It might be a stupid idea, but it also might not be, but take a look a 2D starfields and read in on the 3D particle systems (good place to start is Nehe). Basically a 2D (or 3D) starfield is a particle engine, only a very basic and easy one.

Particles are at the basics very easy, you have pixels (or an image) that image has an x,y value and on both the x and the y value work some "physical" forces, like you would if you drop a ball, only then the force would work on the x,y,z axis. Basically what happens is that the pixels have a starting position, this can be a single point or multiple points, the are provided with a random speed and then each frame (or in a certain amount of time) the speed is either added or substracted from the x or y value, which makes the pixel/image appear to be moving under the influence of physics forces, like with a dropping ball or fire. Take a look at NeHes OpenGL particle system and just take out the z-axis (might want to replace the z with the y axis) that should do it.

On the array of records, I have never seen it been done differently, however you could use a TList with a objects, but that would make the program run slow especially when you wish to destroy the object... No record-arrays are the best for particle engines I think....

Hope this helps a little!