I use the crystal activex control and this is what we do:
Public oCrystal
oCrystal = CREATEOBJECT( 'Crystal.CrystalReport' )
*-- Set Crystal's Default Screen Behaviour...
oCrystal.ProgressDialog = .T.
oCrystal.WindowAllowDrillDown = .T.
oCrystal.WindowControlBox = .F.
oCrystal.WindowMaxButton = .F.
oCrystal.WindowMinButton = .F.
oCrystal.WindowShowCancelBtn = .T.
oCrystal.WindowShowCloseBtn = .T.
oCrystal.WindowShowExportBtn = .T.
oCrystal.WindowShowGroupTree = .T.
oCrystal.WindowShowNavigationCtls = .T.
oCrystal.WindowShowPrintBtn = .T.
oCrystal.WindowShowPrintSetupBtn = .T.
oCrystal.WindowShowProgressCtls = .T.
oCrystal.WindowShowZoomCtl = .T.
oCrystal.WindowShowSearchBtn = .T.
oCrystal.WindowState = 2
oCrystal.Destination = 0 && Screen
*-- Tell crystal the report being used...
oCrystal.ReportFileName = "MyReport.rpt"
*-- Set the Report's Parameters...
oCrystal.ReportTitle = "My Report"
oCrystal.ParameterFields( 0) = [cCompanyName;] + (oApp.cCompName) + [;TRUE]
oCrystal.ParameterFields( 1) = [cStycat1;] + (m.cStyleCat1) + [;TRUE]
oCrystal.ParameterFields( 2) = [cStycat2;] + (m.cStyleCat2) + [;TRUE]
HTH
My Regards
John Hussey