如何在Delphi 2007应用程序中显示Crystal XI报告?
发布时间:2020-12-15 09:39:18 所属栏目:大数据 来源:网络整理
导读:Delphi的最新Crystal XI组件是为Delphi 7发布的.该VCL组件在D2007中编译,但在运行时给出了错误.在Delphi 2007应用程序中显示数据库连接的Crystal Report的最佳方法是什么? 解决方法 这是我发现的使用ActiveX的解决方案: 首先,注册Active X控件,如下所示:
Delphi的最新Crystal XI组件是为Delphi 7发布的.该VCL组件在D2007中编译,但在运行时给出了错误.在Delphi 2007应用程序中显示数据库连接的Crystal Report的最佳方法是什么?
解决方法
这是我发现的使用ActiveX的解决方案:
首先,注册Active X控件,如下所示: 在Delphi中,选择Component – >导入组件 单击“类型库”,单击“下一步” 选择“Crystal ActiveX Report Viewer Library 11.5” 选择你想要的任何调色板页面(我选择了“数据访问”) 选择导入位置 退出向导 将您选择的位置添加到项目搜索路径中 现在这个代码应该工作: ... uses CrystalActiveXReportViewerLib11_5_TLB,OleAuto; ... procedure TForm1.Button1Click(Sender: TObject); var cry : TCrystalActiveXReportViewer; oRpt,oApp : variant; i : integer; frm : TForm; begin cry := TCrystalActiveXReportViewer.Create(Self); oApp := CreateOleObject('CrystalRuntime.Application'); oRpt := oApp.OpenReport('c:my_report.rpt',1); for i := 1 to oRpt.Database.Tables.Count do begin oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; end; frm := TForm.Create(Self); try cry.Parent := frm; cry.Align := alClient; cry.ReportSource := oRpt; cry.ViewReport; frm.Position := poOwnerFormCenter; frm.ShowModal; finally FreeAndNil(frm); end; //try-finally end; procedure TForm1.btnExportClick(Sender: TObject); var cry : TCrystalActiveXReportViewer; oRpt,oApp : variant; i : integer; begin //Export the report to a file cry := TCrystalActiveXReportViewer.Create(Self); oApp := CreateOleObject('CrystalRuntime.Application'); oRpt := oApp.OpenReport(c_DBRpt,1); for i := 1 to oRpt.Database.Tables.Count do begin oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; end; oRpt.ExportOptions.FormatType := 29; //excel 8 oRpt.ExportOptions.DiskFileName := 'c:output.xls'; oRpt.ExportOptions.DestinationType := 1; //file destination //Export(False) => do NOT prompt. //Export(True) will give runtime prompts for export options. oRpt.Export(False); end; 如果你使用这个方法,那么this (rather dense) reference将会有所帮助,特别是因为Intellisense不适用于像这样的Ole对象. 编辑:引用的原始链接断开,因此我将其更改为指向新的(从2009年12月15日起生效).如果新的那个破了,那么Google should be able to find it. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |