你是哪位朋友友能讲讲FastReport中的Child是干吗用的

09-2109-2109-2109-2109-2109-2109-2109-2109-2109-21最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01FastReport的简单问题(关于发票打印),在线等待中。。。
Description of your first forum.
6 篇帖子 & 分页:1 / 1
由 代码哥哥 & 星期五, 日 17:45
  小弟碰到个麻烦问题,可能是由于我对FastReport的认识还不够深,就是在打印发票的时候,比如上面有标题,中间我用MasterData做的数据区,下面有页角(比如操作员之类的),问题就出来了,在数据区里我要求存放最多三条记录,这个倒是容易做到,但是是如果只有一条记录的时候下面的页角会紧接着数据区,但我将数据区的高度设为三条记录的总高度时,那么数据区的每一条记录都有三条记录总高度的那么高,不知用什么办法解决这个问题。
由 levi & 星期五, 日 18:37
画一个空的“子”带区,然后在只有一行两行时,用空行补足,详细可以参考FR的DEMO,
由 代码哥哥 & 星期五, 日 18:44
有没有简单点的,直接设置属性这种方法。
由 Deoline & 星期五, 日 18:44
在MasterData下面加一个Childband,Childband的Memo和主项一样,只是不需要填内容。
在主项脚 onbeforeprint 写诸如
while freespace & 20 do
&showband(child1);
要求报表最多打印多少行,可以通过调整上面程序freespace & 后面的数字的大小。
我设计这样的报表用的都是这种方法,感觉还可以。楼主试试看,应该可以的。
由 代码哥哥 & 星期五, 日 18:53
这个Childband是个什么东东,不好意思我对这个不是很熟。
由 levi & 星期五, 日 19:04
ChildBand是一个可以扩充其字控件的控件,如当主控件中联接的是一个比较长的字段(如memo)字段时,在其下面又要紧跟着显示第二个字段的内容,此时就可以挂chilband解决。
刚才说的那个例子是在demo中-&using interpreter-&print empty grid中,看一下就知道怎么做了
6 篇帖子 & 分页:1 / 1套打常用操作汇总-FASTREPORT_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
套打常用操作汇总-FASTREPORT
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1.FastReport中如何共用TFrxreport及TfrxDBDataSet
一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport
变量及几个TfrxDBDataSet。只不过,要注意完成一个报表程序的步骤,主要是下面几步1)清除报表,得到一个全新的报表内容。Frxreport1.clear。2)设置要使用的TfrxDBDataSet的别名,如果不需要可以省略这一步,但一般最好不同的报表用不同的别名。注意这一步要在加载报表文件之前,因为一般设计报表文件时已经包含了别名信息。frxDBDataSet1.UserName:=别名;3)加载报表或动态建立一个TfrxReportPage。Frxreport1.LoadFromFile(报表文件的完整文件名);4)关联TfrxDBDataSet与TDataset,并设置要使用哪些TfrxDBDataSet。Frxreport1.DataSets.C//先清除原来的数据集frxDBDataSet1.DataSet:=dataset1;//关联Fastreport的组件与TDataset数据集。Frxreport1.DataSets.Add(frxDBDataSet1);//加载关联好的TfrxDBDataSet到报表中。经过这几步后,就可以像单独使用一个Tfrxreport一样使用共用的报表组件了
2.如何打印空白处?在打印报表的Band处的OnBeforePrint事件中添加代码:
while FreeSpace & 20 do
ShowBand(Child1)
3.如何打印指定行数后换页?在master band中OnBeforePrint事件中写代码:
vLineCount:
vLineCount := vLineCount + 1;
if vLineCount = 10 then
vLineCount := 0;
4.fastreport中如何把数据显示为百分比DisplayFormat属性,其中的Kind你设置成fkNumeric,FormatStr
[&frxDBDataset1."sjl"&*100 #n%2.2f]%
5.FastReport如何打印表格式的空行?
//在現在頁列印到第幾行
PageMaxRow: integer=15;
//設定每頁列數
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
PageLine := &Line& mod PageMaxR
if (PageLine = 1) and (&line& & 1) then
child1.visible := F
//Footer1高度設為0
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
i := iif(PageLine=0, PageMaxRow, PageLine);
child1.visible := T
while i & PageMaxRow do
i := i + 1;
Engine.ShowBand(Child1);
//印空白表格
child1.visible := F
6.在首页打印本页小计,最后一页打印本页小计和合计(如果只有一页,则打印本页小计和合计)
frxReport1.PrepareReport();
frxReport1.Variables["pageQ"] := pageQ;
frxReport1.Variables["hander"] := QuotedStr(hander);
frxReport1.Variables["doubleline"] := QuotedStr(StringOfChar("=", Length(hander) + 12));
whName :="设备资产";
frxReport1.Variables["p1"] := QuotedStr("仓库:" + whName);
frxReport1.Variables["p9"] := QuotedStr("领用科室:" + DepName);
frxReport1.Variables["p2"] := QuotedStr("日期:" + ywDate);
frxReport1.Variables["p3"] := QuotedStr("单据号:" + VoucherNo);
if warehouseno=3 then
frxReport1.Variables["p8"] := QuotedStr("经手:");
frxReport1.Variables["p4"] := QuotedStr("保管:");
frxReport1.Variables["p5"] := QuotedStr("负责人:");
frxReport1.Variables["p8"] := QuotedStr("采购:");
frxReport1.Variables["p4"] := QuotedStr("验收:");
frxReport1.Variables["p5"] := QuotedStr("科室签字:");
frxReport1.Variables["p6"] := QuotedStr("操作员:"+Operator);
frxReport1.Variables["p7"] := QuotedStr("打印日期:" + prDate);
frxReport1.Variables["p10"] := QuotedStr("("+ShareGlobalVar.GlobalVar.GetUnitID+")");
if IsPreView then
frxReport1.ShowR
frxReport1.PrintOptions.ShowDialog := F
frxReport1.PrepareReport();
frxReport1.P
在FastReport写入代码
procedure ColumnFooter1OnBeforePrint(Sender: TfrxComponent);
bVisible := &Page& = &pageQ&;
Memo12.visible := bV
Memo21.visible := bV
Memo16.visible := bV
Memo14.visible := bV
if not bvisible then
p8.Top := 27;
p7.Top := 27;
p8.Top := 49.46;
p7.Top := 49.46;
procedure Page1OnBeforePrint(Sender: TfrxComponent);
bVisible := &Page& = &pageQ&;
if not bvisible then
ColumnFooter1.Height:=48;
ColumnFooter1.Height:=69.35;
7.加入自定义函数
(1)在delphi程序中定义函数
frxReport1.AddFunction("function MoneyCn(mmje: Double): S","Myfunction","小写金额转大写的函数");
frxReport1.OnUserFunction :=frxUserF
(2)在frxUserFunction事件中加载函数
function TFunComm.frxUserFunction(const MethodName: string;
var Params: Variant): V
if UpperCase(MethodName) = UpperCase("MoneyCn") then
Result := MoneyCn(Params[0]);
(3)实现函数(数字转大写)
function MoneyCn(mmje: Double): string;
s1: string = "零壹贰叁肆伍陆柒捌玖";
s2: string = "分角元拾佰仟万拾佰仟亿拾佰仟万";
function StrTran(const S, s1, s2: string): string;
Result := StringReplace(S, s1, s2, [rfReplaceAll]);
S, dx: string;
if mmje & 0 then
dx := "负";
S := Format("%.0f", [mmje * 100]);
Len := Length(S);
for i := 1 to Len do
dx := dx + Copy(s1, (Ord(S[i]) - Ord("0")) * 2 + 1, 2) + Copy(s2, (Len - i)
* 2 + 1, 2);
dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, "零仟", "零"), "零佰",
"零拾", "零"), "零角", "零"), "零分", "整");
dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, "零零", "零"), "零零",
"零亿", "亿"), "零万", "万"), "零元", "元");
if dx = "整" then
Result := "零元整"
Result := StrTran(StrTran(dx, "亿万", "亿零"), "零整", "整");
(4) FastReport中引用函数
如:[MoneyCn(&SUM(&frxDBDataset1."M3"&,MasterData1,2)&)]
阅读(...) 评论()本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 负荆请罪讲的是哪位 的文章

 

随机推荐