如何在点击子报表链接时不另外显示子报表

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xwdd129/article/details/653917

    记得曾有网友问过这个问题,当报表中含有子报表时,只要一点击子报表(或子报表连接)就会另外开一个窗口显示子报表,很多人不想要这个功能。我也遇到过这个问题,因为牵扯到打印和导出的缘故,不想让报表有分开的迹象,我是通过一个变通的方法实现的,就是在crystalReportViewer的Click事件里刷新报表,使其强行显示回来:

private void crystalReportViewer1_Click(object sender, System.EventArgs e)
  {
   if(oRpt != null)  //oRpt为报表实例
   {

    crystalReportViewer1.RefreshReport();
   }
  }

不过用这种方法报表会有闪烁,因为刷新了嘛,不过也算实现了。不知道网友有没有其他更好的方法!!

展开阅读全文

MFC 对话框不显示

04-29

MFC工程的主对话框MainDlg是一个基于CFormview类的对话框,利用Groupbox控件将它划分为三个区域R1,R2, R3rn假定三个Groupbox控件的ID分别为IDC_R1,IDC_R2,IDC_R3。rn1.创建三个子对话框资源IDD_R1,IDD_R2,IDD_R3,三个子对话框的大小分别与上面创建的三个区域基本一样。rn2.在MainDlg类的CPP文件中加入以下代码,将子对话框资源加载到三个Groupbox控件所在的区域。rn例如区域R1, 利用以下代码(CDialogEx* Dlg)rn[code=c] CRect rect;rn GetDlgItem(IDC_R1)-> GetWindowRect(&rect);rn ScreenToClient(&rect);rn rn Dlg->Create(IDD_R1, this);rn Dlg->MoveWindow(rect.left, rect.top, rect.Width(), rect.Height());rn Dlg->ShowWindow( SW_SHOW );[/code]rn这样子对话框IDD_R1的资源就插入主对话框(MainDlg)中并可以显示了,另外两个子对话框也是如此,这样之后rn三个子对话框就可以在主对话框中显示了。rn3.再创建三个对话框资源IDD_R1_CHILD,IDD_R2_CHILD,IDD_R3_CHILD,这三个子对话框的大小也是分别与上面创建的三个子对话框IDD_R1,IDD_R2,IDD_R3大小基本一致。rn4.现在子对话框IDD_R1上面有个button,点击这个button后,要求上述三个Groupbox控件区域的子对话框(IDD_R1,IDD_R2,IDD_R3)由第3步中创建的IDD_R1_CHILD,IDD_R2_CHILD,IDD_R3_CHILD这个三个对话框资源分别取代显示(比如Groupbox控件的区域R1,现在显示的是IDD_R1_CHILD的内容,IDD_R1的内容将被隐藏).目前,问题就是,button按钮的消息处理是在子对话框IDD_R1中定义的,利用如下代码:rn[code=c] CRect rect;rn GetWindowRect(&rect);rn ScreenToClient(&rect);rn rn Dlg->Create(IDD_R1_CHILD, this);rn Dlg->MoveWindow(rect.left, rect.top, rect.Width(), rect.Height());rn Dlg->ShowWindow( SW_SHOW );[/code]rnIDD_R1_CHILD的资源可以正确地显示在R1区域(略去了IDD_R1相关控件隐藏的代码),现在如何在IDD_R1类中使IDD_R2_CHILD显示在R2区域上呢?我在IDD_R1的类中实例化了一个IDD_R2的对象,利用上述相似的代码无法在R2区域正常显示。rn我又将MoveWindow中的区域坐标上移,发现IDD_R2_CHILD在R1区域的内容可以显示,但在R2区域的内容无法显示。请问这是什么原因?问题归结于如何在IDD_R1类中的button按钮响应函数中加载其余想要的子对话框的资源。该如何解决啊,谢谢! 论坛

没有更多推荐了,返回首页