找回密码
 立即注册

QQ登录

只需一步,快速开始

gahyyai

中级会员

3

主题

29

帖子

918

积分

中级会员

积分
918

活字格认证

最新发帖
gahyyai
中级会员   /  发表于:2011-6-22 21:05  /   查看:9551  /  回复:11
ActiveReports 3.0 designer关闭时如何判断当前的报表有没有改动,如有改动提示是否要保存?在线等

11 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-6-22 21:39:00
沙发
ActiveReports3 没有提供属性或者方法来判断报表布局是否已经改变,但是你可以在 arDesigner.LayoutChanged 事件中添加相应代码来实现你的需求。
回复 使用道具 举报
gahyyai
中级会员   /  发表于:2011-6-22 21:40:00
板凳
请详细说明一下,不知道如何判断,谢谢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-6-23 09:34:00
地板

回复 3# gahyyai 的帖子

以下是一个很简单的实现,详细逻辑还需要你补充

  1.         Boolean LayoutChanged = false;

  2.         private void arDesigner_LayoutChanged(object sender, LayoutChangedArgs e)
  3.         {
  4.             LayoutChanged = true;
  5.         }

  6.         private void EndUserDesignerMainForm_FormClosing(object sender, FormClosingEventArgs e)
  7.         {
  8.             if (LayoutChanged && MessageBox.Show("报表已被修改,是否保存?","保存提示",MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
  9.             {
  10.                 arDesigner.SaveReport("test.xls");
  11.             }
  12.         }
复制代码
回复 使用道具 举报
gahyyai
中级会员   /  发表于:2011-6-23 09:44:00
5#
这个方法不管报表有没有修改都会提示的,不够好,还有别的方法不
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-6-23 10:03:00
6#
没有修改怎么回提示呢,你在EndUserDesignerMainForm_FormClosing中加断点调试一下看LayoutChanged的值,我这边只有修改之后才提示保存。
回复 使用道具 举报
gahyyai
中级会员   /  发表于:2011-6-23 10:21:00
7#
LayoutChanged 这个值是直是true;管它有没有修改都是true
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-6-23 10:35:00
8#
那什么时候触发的arDesigner_LayoutChanged事件呢,是不是在打开报表是触发的,如果是打开报表触发的,那么在打开报表之后执行需要重新赋值 LayoutChanged = false;
回复 使用道具 举报
gahyyai
中级会员   /  发表于:2011-6-23 10:51:00
9#
在哪里赋值LayoutChanged = false
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-6-23 10:53:00
10#

  1.         private void arDesigner_LayoutChanged(object sender, LayoutChangedArgs e)
  2.         {
  3.             switch (e.Type)
  4.             {
  5.                 case LayoutChangeType.ReportLoad:
  6.                     this.LayoutChanged = false;
  7.                     break;               
  8.                 default:
  9.                     this.LayoutChanged = true;
  10.                     break;
  11.             }
  12.         }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部