注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

ReportMachine中文手册  

2015-10-15 13:44:19|  分类: reportmchine 7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Report Machine(RM)报表控件简单用法 RM(Report Machine)是一个功能强大的Delphi报表控件包。使用它可以制作出非常复杂的报表。
下面讲述最简单的用法: 
在Form上放上两个数据库控件:ADOConnection和ADOQuery 设置好ADOConnection的ConnectionString。LoginPrompt=False。 ADOQuery的Connection指向ADOConnection。 ADOQuery的SQL设置好数据查询语句。 
在Form上放上两个RM报表控件:RMDBDataSet和RMReport。 RMDBDataSet的DataSet指向ADOQuery。 
RMReport的DataSet指向RMDBDataSet。 (如果想使最终生成的应用程序具备报表设计能力,还需要放上RMDesigner控件,不需要设置任何属性) 双击RMReport控件,开始设计报表模板。 
对于一般比较规则的报表,只需向模板中加入四个Band对象,分别是: 
1)、页标头:通常用来显示报表名称,时间等 
2)、主项标头:通常用来显示栏目名称。 
3)、主项数据:用来显示数据。 
4)、页注脚:用来显示页号,日期等。 
设计好的模板可以保存在DFM中,也可以保存到独立的模板文件中,扩展名为RMF,运行时调入。
下面给出几个代码片断:
 procedure TBrowseForm.Button5Click(Sender: TObject); 
var RMReport:TRMReport; 
begin 
 if ADOQuery1.IsEmpty then Exit; 
 try RMReport := TRMReport.Create(Self); 
 RMReport.LoadFromFile('Match.rmf'); 
 RMReport.PrepareReport; 
 RMReport.ShowReport; 
 finally RMReport.Free; 
 end; 
end; 
 procedure TForm1.Button1Click(Sender: TObject); 
begin 
 RMReport1.ShowReport; 
end;

1.对于一张纸要两面打的报表你有什么好办法? 打印时可以选择打奇数页还是打偶数页。  
2.怎么能在一个页面中打印固定的条数,另外最后一页记录不够时怎么打出空白的格子出来啊.  固定条数:设置LinesPerPage  空白格子:设置AutoAppendBlank=True  
3.怎样屏蔽双击报表进入设计报表的界面?  RMReport1.ModifyPrepared := False 
4.怎样在报表中增加表合计???  可以放在标题栏,页面设置中选"两遍报表" 汇总框的TotalCalc=True即可  
5.我想用代码把参数传递给报表中的某一个TRMMemoView该怎么做? RMReport1.FindObject(?Memo1?).Memo.Text := ?ddddd? 或者  RMVariables[?a1?] := ?ddddd?; //这样就可以在报表中使用变量?a1?了。 
6.如何能够不打印重复内容?  Suppres=True  
7.如何让打印预览时双击不能进入报表编辑器! 设置RMReport.ModifyPreview=False  
8.如何在报表程序中控制MEMO的边框是否显示 在delphi中:  
memo1.LeftFrame.Visible := False 
memo1.TopFrame.Visible := False; 
memo1.RightFrame.Visible := False; 
memo1.BottomFrame.Visible := False 
在报表的script中  
memo1.FrameTyp := 15; //这个参数多试几次就知道如何设置了 
FrameTyp := 0; //不显示  
9.怎样改变page的名称和控制它显示但不打印 可以,在Page1的OnBeforePrint中 
begin  
Page1.Visible := True;  
Page1.Visible := False; //不显示  
end;  
10.Report Machine中,
如何强制每3行一个表格 设置主项数据栏:LinesPerPage=3  
如果三人一行有办法:设置主项数据栏的Columns=3 
用分组打印,分组条件: NowLine > 3 在分组标头的OnBeforePrint: 
begin  
NowLine := 1;  
end;  
在主项数据的OnBeforePrint: 
begin  
NowLine := NowLine + 1; 
end;  
11.能否只显示分组统计值而不显示分组数据? 可以,
设置主项数据栏:Visible=False 
统计框:CalcNoVisible=True

12.能否只对超过长度的单条记录进行折行? 
可以,设置文本框:
Stretched=True; 
wordwrap=True 
设置文本框所在的栏:
Stretched=True; 
Breaked=True 
13.如何实现打印预览的问题  
RMReport1.LoadFromFile(?c:1.rmf?); //读入报表 
RMReport1.ShowReport; //预览 
RMReport1.PrintReport; //打印 
RMReport1.DesignReport; //设计  
14.请问如何在程序中控制:
1、纵向打印还是横向打印。
2、分组标头是否每组换页。 
1.RMReport1.Pages[0].ChangePaper()  
2.RMReport1.Pages[0].FindObject(分组标头栏名).Prop[?NewPage?] := False; 
15.直接打印的方法是什么? 
RMReport1.ShowPrintDialog := False;  
RMReport1.PrintReport;  
16.页边距改变以后,所有控件应该相应的改变位置。 需要在页面设置中不选"缩放到可打印区域"页面居中或  RMReport1.Pages[0].pgMargins :=  //这样试试  
17.如何从导入一个rtf文件作为TRMFormReport的PageHeader 
var  TempStream : TMemoryStream; 
begin  
TempStream := TMemoryStream.Create; 
RichEdit1.Lines.SaveToStream(TempStream);  
TempStream.Position := 0;  
RMFormReport1.PageHeader.Caption.LoadFromStream( TempStream); 
TempStream.Free; 
end;  
18.怎样确定报表模版目录?  
设置TRMDesigner的TemplateDir  
19.我想动态设"虚拟数据集"该怎么设!  
(RMReport1.FindObject(?Band1?) as TRMBandView).DataSet :=?RMDBDataSet1?; 
20.在程序中  RMVariables[?aaa?] := form1.Caption; 在报表中就可以使用变量?aaa? 
21.左边距:  
CurReport.Pages[0].pgMargins.Left := Round(RMConvertToPixels(毫米 * 10, rmsuMM)) 
22.RMVariables[?品牌?] :=True; 
RMVariables[?品名?] :=?计算机?;  
在Page1的OnBeforPrint事件中的代码如下: 
If 品牌 Then  MessageBox(品名);  
23.每页只打10条记录怎么处理啊?
主项数据栏LinePerPage=10 
24.怎么实现主项数据的统计啊???  
最好用栏目注脚栏,在上面放统计框,然后设置CalcType即可 
25.动态生成报表时,RM的页边距如何设定?  
TRMPage.pgMargins := Rect(30, 30, 40, 40);  
26.如何在程序运行时,在一个预览或者打印窗口中,一次打开多个报表文件 
用TRMCompositeReport,
RMCompositeReport1.Reports.Clear;  
RMCompositeReport1.Reports.Add(RMReport1);  
RMCompositeReport1.Reports.Add(RMReport2); 
RMCompositeReport1.ShowReport; 
27.rm如何进行套打  Page1不是有个BackGroundPic属性吗,这个就是专门做套打的 
28.GridView1 能象Microsoft Excel 实现 a3=a1+a2吗? 
可以,a3内容  [memo1.CalcValue + memo2.CalcValue]  
29.  使用总页数,将CalcMemoView放在页头,组头,栏目头时需要选择"两遍报表",对打印没影响,只打印一遍. 
30.如何打印中括号如: [2002] 在memoview的OnBeforePrint中 
begin  
memo := ?[2002]?; 
end;  或者把?[?,?]?
定义成变量: RMVariables[?a1?] := ?[?; RMVariables[?a2? 

report machine开发使用手册-创建报表2010-02-10 13:08 创建报表:     
创建一个报表由下面几步组成:    
1、选择数据:选择报表中用到的数据源    
2、设计报表模板:利用区域(称为Band)将报表分布不同的部分,决定报表样式。   
3、处理:用报表内置脚本语言或在delphi中对报表中用的的数据,报表模板等进行处理   
4、生成报表:根据报表模板+数据源,生成最终的报表。  
选择数据源:    
大多数报表需要的数据都是来自数据库。
TTable和TQuery组件可以作为报表的数据源。总的来说它可以使用任何一个从TDataSet组件继承的子类。
每个报表中用到的TDataSet都要有一个与之对应的TRMDBDataSet。    
除了TDataSet,ReportMachine页可以使用任何数据源(数组,文件,字符网格等等)。
在这种情况下,程序必须自己控制非数据库源的存取。
你可以用TRMUserDataSet方便地把数据传送到报表中。  
设计报表模板:    报表模板本身就是描述怎样可以看到正确的报表。
每个报表模板由多个区域组成,ReportMachine把这些区域称为"Band"。
有两种类型的Band:固定区域Band(比如报表标题,页标头,页注脚等等)和用于显示数据集中所有记录的Band(比如主项数据栏)。
数据Band需要联接到数据源,内容是数据源中的记录。   
在ReportMachine中提供了报表开发的可视化环境(报表设计器,这个设计器也可以提供给你的End User,以方便你的End User自己修改报表模板)用于创建报表。报表设计器功能强劲,简单又易于使用。
报表设计器的界面由带有浮动的工具栏,可以自由地改变它们的位置,使用对象观察器(Objects Inspector)可以控制对象的属性,类似于Delphi IDE中的那个。
   
处理:    在生成报表的时候,需要对输入的数据进行某种处理(比如格式化),报表模板需要某些修改(比如报表模板中某个文本框需要改变字体)。    
实现这个处理可以在Delphi中的TRMReport的事件处理中编写代码,这个方法并不通用,因为它不允许在Delphi外创建报表而无需重新编译。这就是为什么在ReportMachinet中内置脚本语言,ReportMachine的内置脚本语言非常类似于Object Pascal,功能强大。用这个脚本语言编写事件处理代码,这就可以让你创建复杂的处理而无需在Delphi中编写代码,配合报表设计器,不需要修改某个报表而重新编译项目。可以实现报表于你的项目分离。  
 报表脚本例子: 
unit 
Report; interface  
procedure 
Memo1OnBeforePrint(Sender: TObject); 
implementation  
procedure 
Memo1OnBeforePrint(Sender: TObject); 
begin     
Memo1.Text := 'test'; 
end;  
procedure Main; 
begin 
end; 
end. 
生成报表:    
生成报表是ReportMachine根据报表模板,对数据源进行加工处理生成最终的报表并能在点击“预览”按钮后进行预览的过程。在ReportMachine中准备好的报表是一组对象的集合,描述报表处理后各页面所包含的内容。这允许你可以修改生成的报表页面,通过在设计器中调用所需的页面。除此之外,还可以描述在预览窗口中鼠标点击对象的反应。这将让你更容易地组织你的工作(在一个报表对象点击可以产生一个更详细的新报表)。    
在ReportMachine的预览窗口类似于Microsoft Word:
在一个窗口中可以看到多个页面,并且可用用鼠标拖动,需要的话,可以通过双击调出编辑器修改当前页。 

  评论这张
 
阅读(266)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017