I can't speak from DelphiX experience (I'll let someone else do that), but I can give you a prod in the right direction.

Instead of thinking about movement in terms of "pixels per frame", think about movement in terms of "pixels per time unit" (e.g. per second, or something like that). This change will separate out the frame rate from the character movement so that the game plays at the same rate on all machines (just a bit jerkier on slower ones, probably). Thus, it won't matter what the frame rate is and you decide how far your objects move rather than the monitor refresh rate.

The next change, in association with the above, would be to introduce reals instead of integers for the position, acceleration, velocity, gravity, and so on. Don't think in terms of whole numbers all the time! The penalty for converting from reals to integers is negligible unless you go totally overboard with the amount of updatable objects. You can get away with doing all your calculation in real numbers, then round down to the final position at the end if/when the object is visible on the screen. It's possible to use fixed point if you want, but you probably won't need to unless you have a _lot_ of sprites.

Now... I have no idea how, or if, the above is relevant to DelphiX, and I have no idea whether the above will play nicely with DelphiX's sprite engine. It's time for someone else to add to this thread and/or demolish the above info as nonsense.