F1book的问题:怎样实现分页打印?100分求救!!(100分)

  • 主题发起人 主题发起人 wanxun wang
  • 开始时间 开始时间
W

wanxun wang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样实现如下的分页打印功能?
F1BOOK中的内容是从数据库中动态读出来的,第一行包含了报表的标题,
第二行包含了表眉:如打印日期,页码等,第三行开始是表格内容,
结束行是页脚。打印分页时要求每页有标题和表眉及页脚。
急!!!
 
既然是从数据库中读出来,为什么用F1BOOK,直接用FAST REPORT不就得了.
 
to zhtx:既然是从数据库中读出来,为什么用F1BOOK,直接用FAST REPORT不就得了.
这里有许多原因:
1、公司没有正版FAST REPORT;
2、项目已经规划并开始设计达1个月,修改方案需要理由老板采纳;
3、FAST REPORT 对我的项目而言不见得就没有其它问题;
4。。。。
 
哈哈,那你为什么不能用QR,这个总是正版吧?
 
可能我得需求没说清楚,我要求用户能自定义报表,
并且能够在类试预览的窗口中修改和保存包括列宽、数据库内容
在内得很多信息,输出到电子表格是必须的功能。我现在就差两、三个
问题没有解决了。
有没有更好的办法?
 
表眉的问题我页已经解决了,但是页脚不太好办,因为我的页脚包括了左、中、右三个。
我的想法是将三个合成为一个,然后定义在页脚里,但这样需要计算三个的位置,
这样与实际F1BOOK中显示的肯定会有出入,因此不是一个很好的方案。
 
哈哈,原来如此,我不用这玩意,但你可以到这看看,也许有用:
http://zhangxzh.diy.163.com/
 
兄弟用delphi7的rave,很好用
 
在Delphi中运用QuickReport实现多栏列印

---- 在所有有关Delphi的书籍中,都没有讲解如何实现一个打印项的多栏打印,而实现生活中往往有许多报表要求同一项目多栏打印,QuickReport提供了报表打印一整套完整的解决方案,完全可以实现同一项目的多栏打印,技术关键是如何控制表中记录提取个数,如果在Treport的DataSet属性中选定一个Table
那么QuickReport每次打印详细列表(BandType=rbDetail)属性的TQRBand时,系统会自动取出一个记录供打印,并将表中的记录指针移到下一位,这样程序无法控制表中记录指针的移动,就无法实现多栏打印,只要程序不在Treport的DataSet属性选定任何表
QuickReport便不会控制表记录的提取,QuickReport特为其它类型数据打印提供了一个OnNeedData事件,QuickReport 每次打印详细列表(BandType=rbDetail)属性的TQRBand时,会触发这个事件,要求提供打印数据,如果程序在OnNeedData事件中编写运用表中数据提供打印资料,便能实现多栏打印,现举例说明:

---- 现在要实现一个Table1中Name项两栏打印,在窗口上放TquickReport组件 quickReport1,并在上面放Tband组件band1,将其BandType属性改为Detail,在Tband 组件上并排放两个QRLabel组件QRLabel1和QRLabel2,在quickReport1的OnNeedData事件中写如下代码:

procedure TForm1.QuickRep1NeedData(Sender:
TObject;
var MoreData: Boolean);
var
I: integer;
begin

MoreData := True;
for I:= 1 to 2do

begin

if Table1.Eof then
Break;
case I of
1: QRLabel1.Caption :=
Table1.FieldByName('Name').AsString;
2: QRLabel2.Caption :=
Table1.FieldByName('Name').AsString;
end;

Table1.Next;
end;

if Table1.Eof then
MoreData := False;
end;

---- 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的 BeforePrint事件中写如下代码:
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin

Table1.First;
end;


---- 这样程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于 Name的从左至右,从上到下的多栏报表。
 
1、我在VB中运行下列语句
F1Book1.Draw Form1.hDC, 1, 1, 6000, 6000, 1, 1, 40, 40, 0, 0, 0, 0
系统提示“实时错误‘13’,类型不匹配。
不知错在哪里,望各位大侠指正。
2、能详细的介绍一下F1BOOK1控件draw方法各参数代表的中文意思吗?(最好有例子)。
F1Book1.Draw hDC, X, Y, cX, cY, nRow, nCol, pRows, pCols, nFixedRow, nFixedCol, nFixedRows, nFixedCols
 
to sjj_00001:
F1Book1.Draw hDC, X, Y, cX, cY, nRow, nCol, pRows, pCols, nFixedRow, nFixedCol, nFixedRows, nFixedCols
其中prows,pcols 应该使用引用传递。

 
我的打印分页问题已经解决,结贴吧
 
后退
顶部