关于2X下Addform纸张,关于fastreoprt也许是无法解决的问题! 已通过修改源码的方式实现,分能不能要回来! (100分)

  • 主题发起人 主题发起人 随缘
  • 开始时间 开始时间

随缘

Unregistered / Unconfirmed
GUEST, unregistred user!
说明,很急!!!!
我不知道大家是否知道在NT系统上可以通过API的addform来动态加入纸张,本来是个好事,但Windows同时也为每张报表定义了一个唯一的ID值,这就带来了很大的麻烦,就是说当要保存一个报表时,如果使用纸张的ID来保存,再如果那个纸张是通过Addform来实现的,大问题来了,你在多台计算机中加入同样名称的纸张,那同纸张名称的ID值就很可能不一样,结果可想而知,通过网络来应访问一个共享的报表文件,只要是通过纸张ID来提取纸张的就全部串掉了或者根本就也可能ID不存在!
遗憾的是Fastreport就是通过纸张的ID来保存及提取的!
要解决不是没有办法,就是用addform来创建纸张时,手动设置其ID值,更遗憾的是我找了资料,没有,好像是返回值,无法设置!!!!!
 
我也很想知道如何用代码在W2000中自定义纸张。
顶。
 
//这个很简单的啊!用API,给你一个过程!自己调用吧!
//装入2000/XP的自定义纸张
这个过程已删除,真是多出来的事!!!!
 
,我测试一下
 
必须用适用于win2000的打印机驱动,有些驱动虽然在win2000下也能工作,
但是实际在这个方法中用不了,必须升级用新的
 
我的工程主要是大用户,针打,主要讨论我谈的问题!
to yanyandt2 说明一下这个不是针对某一个打印机的,与打印机没有关系,至于说打印机能不能使用通过上述方法加入的纸张是另一回事!
 
在W2000中遇到特殊报表时,我都是先在系统中自定义一种纸张,取个新的纸张名称,用FR设计报表模板时选用自定义的纸张,出报表没问题。(但必须让用户在系统中也自定义一个相同大小和名称的自定义纸张,非常麻烦[:(])
你的装入2000/XP的自定义纸张过程我还没看你就删了(真遗憾),我想也应该在系统中为自定义纸张设置一个名称吧,你在FR模板中应用这种新纸张应该没问题呀。
 
自定义纸张也没有用,原因很简单,自已加入的纸张的ID也可能与fastreport中报表的ID不同(在其她地方加入的纸张的ID),Fastreport是用纸的ID来保存报表的!(Fastreport的报表 保存时如果的是纸的名称,则不会有任何问题),可能只有修改它的源码了!
 
简单说,如果有2台计算机,都是新装的2000,都是同样的打印机驱动,问题不大!
怕就是不同的2个打印机驱动,比如说第一台的驱动自动生成4种纸张,第二台的驱动生成6种纸张,这个时候程序执行,自动将程序需要的纸张全部加入,两台机的名字是一定相同的,可ID一定就不一样了!串了(或没有ID),而fastreport的报表纸张是以ID存放的,这样你说这两台计算机打印的报表大小还能是一样吗?
实际上为什么fastreport不用纸张名称存在是有它的道理的,可能主要是考虑到语言问题,而Windows也用ID从标识可能是同样道理!可是它不能更改ID(至少自定义的就应给改),这点给我们带来的麻烦,特别是网络上,简单来说你在你自己的计算机做好的报表大小,别人那儿可能就不对,需要现场设置,但如果是多用户,或报表共享......唉.....
 
//查看fastreport源码后,才发现此控件作者真是....
ComB1.ItemIndex := Prn.GetSizeIndex(pgSize);
........
p := Prn.PaperSizes[ComB1.ItemIndex];
//报表所用的纸张ID居然是这个,老天,这家伙是不是傻比啊(话重了!),这样的话不串位才怪!
//由此我得出以下结论,Fastreport在NT中只能使用标准纸张,自己在自己的计算机中做好自定义报表给用户用,会发生纸张串位,网络共享单报表:叹气
//单此一点就能弄死你,看来我只能修改它了!
 
我已通过修改源代码,实现可在NT下自动增加报表中已有的纸张,
通过写入纸张名称的方式,读取时可自动查找你计算机中是否有此纸张,没有的话自动增加,如果增加后当前打印机没有显示此纸张,自动提示用户"此纸张不受当前打印机的支持!",如果有查大小是否一臻,不再受Windows纸张ID的控制,用的爽啊!
这样Fastreport的报表就是跑到天涯海角,都能正常工作!
 
要求要回分,看我打了多么多字的份上!!!
[:D][:D][:D]
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部