还是使用的比较老的版本,因为修改过好多东西,所以一直未更新,习惯了FastReport设计方式.不过此版本有bug.
如下代码,设置页面设置为横向,A4>
RMFormReport1.PageLayout.PageSize := DMPAPER_A4; // A4
RMFormReport1.PageLayout.PageOrientation := rmpoLandscape;
总是显示不正确,可确实是设置成功了,所以还是采用老办法,设计好报表, Load而已.
本人用的最多的是RMFormReport,感觉比较好用,方便.以下是一点体会.
RMFormReport可以直接打印窗体.配合DataSet类、容器类和RM专用打印控件如RMPrintDBGrid、RMPrintEhlib、RMPrintwwDBGrid使用。RMFormReport及其他RM专用打印控件位于RM Designer控件面板上。
RMFormReport的主要属性(按重要程度顺序):
PrintControl:待打印的内容。主要使用容器类控件或各种Grid控件。如果只需打印Grid,设置为Grid控件即可。如果还要打印Label等其他内容,需要将打印的内容放容器控件内,然后设置本属性为使用的容器控件。注意容器控件不能够是Form。
DataSet/DataSource: 数据源。RMFormReport可以不与各类数据源相连。要使用Groups分组,必须连接数据源,使用GroupFieldName属性。
ScaleMode属性组: 比例类型。设置CenterOnPageH=True可以让打印的内容居中
PageHeader属性组:页头。调整Height的值避免标题与打印的内容重叠。Height=40左右。Caption属性用以设置页头的内容。如标题等。使用Rich Edit编辑。功能强大。除一般编辑(字体、字号、对齐方式)外,还可以设置上下标。更重要的是可以使用RM的插入表达式功能,来使用字段、RM自带变量和自定义变量及RM自带函数。
PageFooter属性组:功能及使用参考PageHeader属性组。
MasterDataBandOptions属性组:设置主数据区。
Columns:使用列数。
ColumnGap:列间距
ColumnWidth:列宽
Height:行高
LinesPerPage:每页打印行数
NewPageAfter:换页
PageLayout: 页面设置 此属性有好多Bug,至少我这个版本如此。
GridNumOptions属性组:行号
Text:显示行号列(需要设置ReportOptions的rmgoGridNumber=true)的列标题
Number:未知属性
ReportOptions属性组:
rmgoUseColor:使用颜色。否则只是黑白。
rmgoStretch:伸展
rmgoWordWrap:自动换行
rmgoGridLines:显示表格线.使Grid的dgRowLines、dgColLines无效
rmgoAppendBlank:自动增加空行
rmgoGridNumber:显示行号
rmgoDoubleFrame:边框加宽
rmgoSelectedRecord:未知,不是只打印选中的数据
rmgoDrawBorder:未知
rmRebuildAfterPageChanged:未知
rmgoDisableControls:未知
PreviewButtons属性组:标准预览时显示预览的按钮
pbDesign:报表设计。需要放置RMDesigner控件,位于RM Designer控件面板。
pbSaveToXLS:保存成Excel文件.需要放置RMXLSExport,位于RM Machine控件面板上
ModifyPrepared:可以修改预览内容。在预览的报表上双击。
Preview:使用自定义的预览窗体预览
ReportTitle:预览窗体标题
可能存在的Bug:
rmgoUseColor=true,但是GridNumOptions的Text颜色没有变
本人打印报表的函数一部分.具体
if FileExists(FileName) then
begin
ReportForm.RMFormReport.Report.LoadFromFile(FileName);
ReportForm.RMDBDataSet1.DataSet := RDataSet;
// ReportForm.RMFormReport.Report.PrepareReport;
if not FShowPreview then
begin
// ReportForm.RMFormReport.Report.ShowReport;
ReportForm.RMFormReport.Report.DesignReport;
{ if ReportForm.RMFormReport.Report.FindObject('ADOQuery1')<>nil then
Begin
// TRMDADOQuery(ReportForm.RMFormReport.Report.FindObject('-ADOQuery1')).
TRMDADOQuery(ReportForm.RMFormReport.Report.FindObject('ADOQuery1')).
SQL :='Select * from 同位素测试综合成果表 where ID>80';
TRMDADOQuery(ReportForm.RMFormReport.Report.FindObject('ADOQuery1')).Active:=True;
end; }
// ReportForm.RMFormReport.Report.DesignReport;
Screen.Cursor := CrDefault;
RDataSet.Open; //add new 2004.2.3
end
else
begin
ReportForm.RMFormReport.Report.DesignReport;
// ReportForm.RMFormReport.Report.PrintReport;
Screen.Cursor := CrDefault;
RDataSet.Open; //add new 2004.2.3
end
end
else
begin
ReportForm.RMFormReport.PrintControl := PrintC;
ReportForm.RMFormReport.DataSet := RDataSet;
// ReportForm.RMFormReport.Report.PrepareReport;
ReportForm.RMFormReport.DesignReport;
// ReportForm.RMFormReport.ShowReport;
Screen.Cursor := CrDefault;
RDataSet.Open; //add new 2004.2.3
end;
如果想打印DBGridEh.拖下一个RMPrintEHLib1. RMFormReport1:如果设计报表,还要有RMDesigner1
直接使用:
RMFormReport1.ShowReport; 显示报表
//RMFormReport1.DesignReport; 设计报表.
此时拖动网格,系统自动调整打印范围,不过FormReport里做好页面设置的代码,都起不到作用,也许是Bug.