将控件添加到查看器工具栏

2020-08-21 18:57发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


很抱歉,是否曾经有人问过这个问题,但是我发现他的样本不适用于CR 2008及更高版本。 我想知道如何,最好在CR 2013中看到有关如何向工具栏添加额外按钮的示例(Excel导出)。最好使用C ++ och C#的示例。

旧样本做了一个ts = CrystalreportViewer1.Controls [2]; 但是当前版本的CR中没有这种方法。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


很抱歉,是否曾经有人问过这个问题,但是我发现他的样本不适用于CR 2008及更高版本。 我想知道如何,最好在CR 2013中看到有关如何向工具栏添加额外按钮的示例(Excel导出)。最好使用C ++ och C#的示例。

旧样本做了一个ts = CrystalreportViewer1.Controls [2]; 但是当前版本的CR中没有这种方法。

付费偷看设置
发送
4条回答
Nir深蓝
1楼 · 2020-08-21 19:17.采纳回答

安德斯,

我刚刚检查了一个新样本,它在SP 22上运行良好。

使用Google并搜索此KBA:

1765153-如何自定义.NET Viewer控件导出按钮来管理自定义导出选项,并启用Application作为 目的地。

悠然的二货
2楼-- · 2020-08-21 19:43

谢谢! 不知道! 我将看一下示例,但是我有一个相关的问题:导出按钮对话框默认为"水晶报表",这是您将使用的最不可能的格式:)有什么办法可以改变它?

空代码
3楼-- · 2020-08-21 19:19

以下是在C ++/MFC中的操作方法:

在InitDialog中:

 BOOL rc = CDialog :: OnInitDialog();
 BOOL rc2;
 int nCount,i;
 CString类型;
 系统:: Windows :: Forms :: ToolStrip ^ ts;
//System:Drawing :: Image ^ Image;
 系统::绘图::图标^ ico;
//
 如果(rc)
 {
  rc2 = this-> m_Viewer.CreateManagedControl(WS_VISIBLE | WS_CHILD,IDC_CRVIEWER1,this);
 
 CrystalDecisions :: Windows :: Forms :: CrystalReportViewer ^ x;
 x = m_Viewer.GetControl();
 nCount = x-> Controls-> Count;
 系统:: Windows :: Forms :: Control ^ c;
 for(i = 0; i  Controls [i];
 类型= c-> GetType()-> ToString(); //遍历控件寻找
 TRACE(" \ nControl%d-%s",i,键入); //System.Windows.Forms.ToolStrip
//
 if(type ==" System.Windows.Forms.ToolStrip")
 {
//
//构造一个图标。
 提示hInst = AfxGetInstanceHandle();
 HICON hIcon =(HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_EXCEL),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
 如果(hIcon)
 {
 ico = System :: Drawing :: Icon :: FromHandle((IntPtr)hIcon);
 }

 系统::绘图::位图^ bmp = ico-> ToBitmap(); //调用ToBitmap进行转换。
 ts =(System :: Windows :: Forms :: ToolStrip ^)x-> Controls [i]; //处理工具条
 ToolStripButton ^ exportButton = gcnew ToolStripButton(bmp); //制作一个按钮
 CliClass ^ h = gcnew CliClass; //助手类
 EventHandler ^ handler = gcnew EventHandler(h,&CliClass :: MyHandler); //添加事件处理程序
 exportButton->单击+ =处理程序;
 ts-> Items-> Insert(0,exportButton); //插入按钮
 }
 }
 
 返回rc;
 }
 否则返回false; 

事件处理程序,需要托管代码:

file.h:

//
//提取按钮通知的托管代码
//
 #pragma管理
 
 使用名称空间系统;
 
 ref class CliClass {
 上市:
  void MyHandler(Object ^ sender,EventArgs ^ args);
 }; 

File.c

//
//按钮处理程序。 请注意,该调用将友好地处理我们指向调用方控件的指针,该控件实际上
//很有帮助,因为这是托管代码。 待办事项:修复文件名
 
 无效CliClass :: MyHandler(Object ^ sender,EventArgs ^ args)
 {
 ToolStripButton ^ exportButton =(系统:: Windows :: Forms :: ToolStripButton ^)发送器;
 ToolStrip ^ ts = exportButton-> GetCurrentParent();
 
 ts->父项; CrystalDecisions :: Windows :: Forms :: CrystalReportViewer ^ crv =(CrystalDecisions :: Windows :: Forms :: CrystalReportViewer ^)
 CrystalDecisions :: CrystalReports :: Engine :: ReportDocument ^ Report =(CrystalDecisions :: CrystalReports :: Engine :: ReportDocument ^)crv-> ReportSource;
 字符串^ ss_Filnamn = gcnew字符串(" C:\\ Slask \\ export.xls");
 ExcelFormatOptions ^ excelFormatOpts = gcnew ExcelFormatOptions;
 ExportOptions ^ exportOpts = gcnew ExportOptions;
 DiskFileDestinationOptions ^ diskOpts = exportOpts-> CreateDiskFileDestinationOptions();
 
 exportOpts-> ExportFormatType = ExportFormatType :: ExcelRecord;
 exportOpts-> ExportDestinationType = ExportDestinationType :: DiskFile;
 
 diskOpts-> DiskFileName = ss_Filnamn;
 exportOpts-> ExportDestinationOptions = diskOpts;
 exportOpts-> ExportFormatOptions = excelFormatOpts;
 
 TRACE(" \ n出口前");
 报告->导出(exportOpts);
 ShellExecute(NULL," open"," C:\\ Slask \\ export.xls",NULL,NULL,SW_SHOW);
 } 
黑丝骑士
4楼-- · 2020-08-21 19:26

遗憾的是,这不适用于SP26。 下面的代码已添加到示例中(

Crystal Reports .NET C ++-View Report.zip)

可以。 处理程序是相同的。

此-> boCrystalReportViewer-> TabIndex = 0;
//
 int nCount = this-> boCrystalReportViewer-> Controls-> Count;
 系统:: Windows :: Forms :: Control ^ c;
 系统::绘图::图标^ ico;
 系统:: Windows :: Forms :: ToolStrip ^ ts;
 对于(int i = 0; i  boCrystalReportViewer-> Controls [i];
 CString类型= c-> GetType()-> ToString(); //遍历控件寻找
 TRACE(" \ nControl%d-%s",i,键入); //System.Windows.Forms.ToolStrip
//
 如果(类型==" System.Windows.Forms.ToolStrip")
 {
//
//构造一个图标。
//https://www.icon2s.com/6231/windows-8-metro-style-icons/excel-google-docs-windows-8-metro-style/
//
 提示hInst = AfxGetInstanceHandle();
 HICON hIcon =(HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_EXCEL),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
 如果(hIcon)
 {
 ico = System :: Drawing :: Icon :: FromHandle((IntPtr)hIcon);
 }

 系统::绘图::位图^ bmp = ico-> ToBitmap(); //调用ToBitmap进行转换。
 ts =(System :: Windows :: Forms :: ToolStrip ^)this-> boCrystalReportViewer-> Controls [i]; //处理工具条
 ToolStripButton ^ exportButton = gcnew ToolStripButton(bmp); //制作一个按钮
 CliClass ^ h = gcnew CliClass; //助手类
 EventHandler ^ handler = gcnew EventHandler(h,&CliClass :: MyHandler); //添加事件处理程序
 exportButton->单击+ =处理程序;
 ts-> Items-> Insert(0,exportButton); //插入按钮
 }
 } 

一周热门 更多>