起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: ht88th

网格打印需求(如能实现,一切中国式报表都将easy)**

[复制链接]
 楼主| 发表于 2006-8-7 15:05:24 | 显示全部楼层
UP
回复 支持 反对

使用道具 举报

发表于 2006-8-7 17:21:46 | 显示全部楼层
1:楼主指定的这个单元格是一个表达式单元格。单元格的类型为TCellType,其取值包括ctCell,ctFieldLabel, ctField, ctPicture, ctSQL, ctDataChart, ctExpression。
示例代码:ASheet.CellTypes[ASheet.Areas[0].Right - 3, ASheet.Areas[0].Bottom] := TCellType.ctExpression;
2:{ 基本属性 }
    property Left: Integer index 0 read GetSize write SetSize;                       
    property Top: Integer index 1 read GetSize write SetSize;                       
    property Right: Integer index 2 read GetSize write SetSize;                     
    property Bottom: Integer index 3 read GetSize write SetSize;         
// 区域中左上和右下两点坐标(Left,Top)Right,Bottom)
    { 区域块属性 }
    property HeaderRows: Integer index 0 read GetRow write SetRow default 0;               // 区域头
    property PageHeaderRows: Integer index 1 read GetRow write SetRow default 0;       // 页头
    property PageFooterRows: Integer index 2 read GetRow write SetRow default 0;         // 页尾
    property FooterRows: Integer index 3 read GetRow write SetRow default 0;                 // 区域尾
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-13 13:45:53 | 显示全部楼层
针对网格打印(也该有两个区域吧):外围区域,其(Top,Left)Bottom,Right) 为多少? 数据集记录区域(子区域) 从第几行开始(占据1行位置)?

如果给网格报表再加一个头(第一页打)及尾(最后一页打) 标题:
应该要设置HeaderRows=1 及 FooterRows = 1 吧?如果如此设置的话,整个区域的高度HEIGHT该+2吧:是用ASheet.Areas[0].Bottom := ASheet.Areas[0].Bottom + 1使其区域加大呢,还是用ASheet.Areas[0].Height :=  ASheet.Areas[0].Height + 1; 使其区域加大呢(该句报不能对只读属性赋值)?
回复 支持 反对

使用道具 举报

发表于 2006-8-14 09:42:23 | 显示全部楼层
1,楼主说的外围区域指的是什么?
2,数据集记录区域:数据集固定行定义时,只指定固定行所占用的行数,而没有指定开始行是哪行,固定行
的开始行是根据固定行的定义,按规则取到的。
固定行取的规则是这样,顶部固定行从区域的开始行顺次取,如果定义了区域头,则接
下来的几行就是区域头部分,区域头取后,在看有没有页头定义,如果有,那排除区域头部
分的解下来几行就是页头部分,页头取后,看有没有组头定义,有的话,紧接着页头部分的
就是组头部分,由于组可以定义多个,组头的固定行会按照第一个组到最后一个组的顺序,
依次得到各个组的组头部分。底部固定行取的规则和顶部固定行取的规则比较类型,只是顶
部固定行是从区域的最顶部行,从下往上的依次取得,取的时候,从上到下依次按照区域尾、
页尾和组尾的顺序取,对于有多个组时,也是按照第一个组到最后一个组的顺序取。
3,使其区域加大的参考代码:
    ASheet.Areas[0].Top := ASheet.Areas[0].top - 2;
    ASheet.Areas[0].Bottom := ASheet.Areas[0].Bottom + 1;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-21 09:16:13 | 显示全部楼层
网格的区域头标题 及区域尾 标题 还是加不上,我是用以下方法试的:
1、只需第一页要打印的标题
        ASheet.RowHeights[0] := 50;
        ASheet.CellTypes[0, 0] := TCellType.ctCell; //静态文本框
        lCell.Value := '只需第一页要打印的标题';  //此地出错:WHY?
2、只需在最后一页要打印的尾标题
    ASheet.Areas[0].Top := ASheet.Areas[0].Top - 2;
        ASheet.Areas[0].Bottom := ASheet.Areas[0].Bottom + 1 + 1;  //再扩大一行作为区域尾
        ASheet.Areas[0].PageHeaderRows := 2 + lCaptionRows;
        ASheet.Areas[0].PageFooterRows := 1;  
        ASheet.Areas[0].FooterRows := 1; //区域尾

    lRow := ASheet.Areas[0].Bottom - 2;  //页尾标题所在行, 本来没有区域尾时是 - 1
    lCell := ASheet.Cells[0 lRow];
    ASheet.CellTypes[0, lRow] := TCellType.ctCell; //静态文本框
    lCell.Value := '页尾标题';

    lRow := ASheet.Areas[0].Bottom - 1;  //区域尾标题所在行
    lCell := ASheet.Cells[0 lRow];
        ASheet.CellTypes[0, lRow] := TCellType.ctCell; //静态文本框
    lCell.Value := '区域尾标题;

我已经试了很久了,套打的入出库单据我也设计过(只是没有动态用代码实现),就这个网格打印的 区域头尾 要打印一次标题 实在不知如何实现,请赐代码!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-21 09:34:24 | 显示全部楼层
预览时报错:Cannot open file c:\windows\Temp\~OF31.tmp WHY?
这个问题,已在单独的帖子中提交,不用解答!
回复 支持 反对

使用道具 举报

发表于 2006-8-21 10:02:40 | 显示全部楼层
哎?DataGrid默认的就是打印区域头啊,为什么还要单独设置呢?
楼主把这部分的资源包发过来吧,还有把你需要的效果用画图还是Word表现都行也一并发过来。我做好了再给你看一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-21 15:52:57 | 显示全部楼层
上传给你了,请查收,麻烦了!

今天根据用户反馈,发现在取下页数据时,有这样一个BUG:
应该可在我发给你的包中重现,描述如下:
为了使合计行始终打印在最后一行,我加了一个临时字段ROWNO,在预览增加合计行到数据集时,赋RECORDCOUNT+1的值,预览后CANCELUPDATES数据集,这些都没有问题,之后,取下一页数据,此时下一页的地一条记录的ROWNO=此前预览时的RECORDCOUNT+1,WHY?

重现步骤:1、设置DDCB的取数方案为3,2、运行功能,3、按绑定实践的按钮预览,4、取下页数据:即可出现有一条记录的ROWNO=4 (BUG?)

gridprint.rar

41.38 KB, 下载次数: 41

回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-22 09:27:32 | 显示全部楼层
UP
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-22 12:19:45 | 显示全部楼层
我们在购买你们的产品时一共给了两个注册用户,除了ht88th外,还有一个我们主任的注册用户及密码,他一直没用给忘了,希望告诉一下: 就同新版本一起发到我的ht88th@163.com中吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-25 11:20 , Processed in 0.044264 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表