Hey, Einar,
In the newest version of CoDe, I have an article that covers this. (You'll need Crystal 10 to run the project...if you have a prior version, you can at least look at the project)
What I do is similar to what you described at the end: I have a generic project that contains a preview form with the crystal previewer, and a form manager with a set of public methods. One of the them is called RunReport - you pass it an object reference to the typed report, as well as the dataset to be used for report. The method takes care of setting the reportsource, setting the table sources, etc.
Kevin