起步软件技术论坛-X3

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

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

[复制链接]
发表于 2006-7-19 13:47:12 | 显示全部楼层
预览窗口目前不能做修改。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-27 14:00:19 | 显示全部楼层
为了在增加网格合计行到数据集之中后不出错:字段 订单编号 是必须的,
请问如何判断字段的必须性,我用了以下语句,不能检测到:
TBizField(DataGrid.DataSource.DataSet.FieldByName('DDBH').IsRequired 为何始终返回False?
回复 支持 反对

使用道具 举报

发表于 2006-7-28 16:28:54 | 显示全部楼层
用下面的示例代码来判断:
TSQLDataSet(DataSetBrokerDDZB.DataSet).BizFieldByName('KHBH').IsRequired
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 17:04:16 | 显示全部楼层
有的用户允许合计 打印在最后一页的页脚标题的 后面,请问如何写代码(要用粗表格线框起来)?
用户点了标题进行排序后,合计行打印位置乱动,导致有些用户认可 将合计 作为区域尾打印,希望能提供一下代码?THANKS
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-31 13:29:32 | 显示全部楼层
UP
回复 支持 反对

使用道具 举报

发表于 2006-8-1 09:41:02 | 显示全部楼层
1,示例代码如下:
with lBorder do
  begin
    Line := TCellSideLine.slDouble;
    Color := Graphics.clRed;
  end;
  lCell.Border[TCellSide.sLeft] := lBorder;
声明部分:
var
  lBorder: TCellSideBorder;
  lCell: TSheetCell;
2,可以参考用户手册中对数据集区域的描述以及我给你的代码,设置区域尾即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-1 14:16:01 | 显示全部楼层
这样写的合计好像很繁吧,还要把合计值一个一个读到变量中,而后把这些变量值写到对应的页尾单元格中,是这样吗?还是只需设置单元的表达式(合计数据集)就行了?
能否把你上次给的样例 上放个按钮,在该按钮下写段实现代码,发给我看一下?谢谢了,对网格打印的这个帖子,估计下次不会再烦你了!
回复 支持 反对

使用道具 举报

发表于 2006-8-1 15:40:27 | 显示全部楼层
上面的问题1的解答代码是你想要实现的边框用粗表格线框起来的效果,至于这其中的值是直接由变量读取进来还是由表达式解析可以由你自己来定。TSheetCell是支持表达式编写的,这在代码中也有所体现。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-1 17:08:00 | 显示全部楼层
好吧,我TRY IT
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-5 09:13:49 | 显示全部楼层
问题1:
我要给报表的第一页再加一个标题,如下
  TSQLDataSet(DataSetBrokerDDZB.DataSet).DisplayName := '';
  ASheet.RowHeights[0] := 30;  //放开区域头的这一行,
  lCell := ASheet.Cells[0, 0];
  lCell.Value := '仅在报表第一页需打印的标题';
//预览时报以下错误:
{表达式计算失败:
  位置: 第 1 行, 第 1 列
  表达式: 仅在报表第一页需打印的标题
  错误信息: 符号“仅在报表第一页需打印的标题”没有定义。}

问题2:我对以下有疑惑:
  ASheet.Areas[0].Top := ASheet.Areas[0].top - 2; //
    ASheet.Areas[0].Bottom := ASheet.Areas[0].Bottom + 1  ;
Top 及 Bottom 到底是指 哪个区域的 哪个行位置?
我查了你们的手册,中没有提到 该Top及Bottom的概念,
是否指整个区域的首行位置和 最后一行位置?

目前,我要增加一行区域尾,以便在最后一页打印一个尾标题,我用如下代码,无法实现:
ASheet.Areas[0].Bottom := ASheet.Areas[0].Bottom + 1 + 1 ; //使区域扩大?
ASheet.Areas[0].FooterRows := 1; //设置一行区域尾
  lCell := ASheet.Cells[ASheet.Areas[0].Left, ASheet.Areas[0].Bottom];
  lCell.Value := '仅在报表最后页需打印的标题';

针对网格打印的区域属性到底是多少?:首行,首列,高度,宽度
区域头,区域尾,页头,页尾,请按 表格的区域属性 的第一个页面(整体)给个说明。

总之,我的需求:给网格报表再加一个头(第一页打)及尾(最后一页打) 标题
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-25 10:51 , Processed in 0.038079 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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