如何动态改变字段,打印报表

wsf 2000-08-14 06:00:00
实际应用中灵活设置报表的字段是经常遇到的,如果你是用
1TCanvas类画报表,请你给出代码
2控件,请你给我发一个此控件
3用word,也请给出代码
谢谢
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzs 2001-02-28
  • 打赏
  • 举报
回复
做这个麻烦。找找控件吧。
chenh1234 2001-02-28
  • 打赏
  • 举报
回复
说难也难,说不难也不难。这要看你的要求是什么。
简单的,动态生成TQRDBText控件就可以了。
wsf 2000-08-15
  • 打赏
  • 举报
回复
奇怪为什么没有人回答?是太简单吗
yqbwork 2000-08-15
  • 打赏
  • 举报
回复
由答案时,请传一份给我..
功能更加强劲,增加多行表头的功能,新增更多事件,加强了打印期间对报表样式 的控制,可随意改变打印内容。 reprint 使用说明 本控件可打印 datasource,dbgrid,stringgrid. 一 、控件属性: 1、colstitle 设置报表的列标题属性 (1) Print:boolean;;是否打印 (2) Font:tfont;;字体 (3) Rowsline:tpen;;横线样式 (4) Colsline:tpen;;竖线样式 (5) Alignment:talignment;;对齐方式 (6) Rowspace:integer;;行间距 (7) EveryPage:boolean;;是否每页打印 (8) EveryRow:boolean;;是否每行打印 (9) titlearray:tstrings;;怎加标题组 (使用方法见附带demo) (10) rows:integer;;设置默认列标题打印行数 2、datasource 绑定 datasource 3、dbgrid 绑定 dbgrid 4、stringgrid 绑定 stringgrid PrintObject 选择打印的对象(datasource 、dbgrid、 stringgrid ) 5、pagefooter 页脚 pageheader 页眉 (1) Text:string;;内容 (2) Font:tfont;;字体 (3) Print:boolean;;是否打印 (4) Alignment:talignment;;对齐方式 6、detail 设置要打印的明细数据属性 (1)arrange 设置明细字段排列方向 Horizontal 横向打印(默认的一般打印) Vertical 竖向打印字段竖向排列适合打印字段内容较长的报表如“会议纪录”) (2)aotureturn 打印明细字段时,如果字段超过列的宽度是否允许自动换行 (3)colsline 设置竖线属性引用tpen类 (4)footer 设置明细尾 (设置同pagefooter 页脚 pageheader 页眉) (5)frame 设置明细边框属性引用tpen类 (6)head 设置明细头(设置同pagefooter 页脚 pageheader 页眉) (7)rowsline 设置横线属性引用tpen类 (8)rowspace 设置明细行的高度 (9)top 明细与标题的距离 (10)Alignment对齐方式 7、page 设置纸张 (1) leftmargin:real;;左边距 (2) rightmargin:real;;右边距 (3) topmargin:real;;顶边距 (4) bottommargin:real;;底边距 (5) pagesize:TPageSize;;纸张类型 (6) Height:real;;高度 (7) width:real;;宽度 (8) Orientation:TPrinterOrientation;;打印方向 注意:设置纸张的宽度和高度需把pagesize设为Custom 8、title 设置标题 (1) Print:boolean;; 是否打印 (2) Text:tstrings;; 内容可设置多行 (3) Font:tfont;;字体 (4) Alignment:talignment;;对齐方式 (5) top:integer;; 距纸张顶部距离 (6) Rowspace:integer;;行距 (7) EveryPage:boolean;;是否每页打印 二 、控件方法: (1) preview 预览 (2) print 打印 (3) SaveToFile() 保存为报表文件 (4) SaveToStream() 保存为流(然后就可把整个报表存到数据库了很方便哦! ~_~) (5) PrintFile() 打印报表文件 (6) PrintStream() 打印流(流的数据库存取就不用多说了吧) (7) PreviewFile() 预览文件 (8) PreviewStream() 预览流 (9) OptionToStream() 报表的属性保存为流 (10) OptionFromStream() 从流中得到报表属性 (11) OptionPost()在打印期间改变报表属性,要想立即生效调用此方法。 (12) PaintText(Text:string) 覆盖原有打印的字符,一般在能返回当前打印的内容的事件中使用。(见控件事件) 三、 控件事件: (1) AfterPrint 打印后 (2) BeforePrint 打印前 (3) OnPrintDetail(RecordNumber: Integer)在打印每一栏明细前触发此事件, 返回参数:RecordNumber返回当前打印行数。 (4) OnPrintDetailField(RecordNumber,FieldIndex: Integer;; FieldText: String);; 在打印明细的每个字段都会触发此事件。 返回参数:RecordNumber返回当前打印行数。 FieldIndex 字段索引 FieldText字段内容 (5) OnPrintTitle(Row: Integer;; Text: String)打印每行标题都会触发此事件。 返回参数:row当前打印的行 Text当前打印的内容 (6) OnPrintColsTitleField(Row, FieldIndex: Integer;; FieldName: String);; 打印列标题字段时触发此事件 返回参数:row当前打印的行 FieldIndex当前打印字段索引 FieldName当前打印字段名称 (7) OnPrintColsTitle(Row: Integer) 打印每行列标题时触发此事件 返回参数:row当前打印的行 四、注意事项 (1) text 属性,输入“¦#¦”打印页码值,如果想打印页码可输入“第¦#¦页” 输入“¦RecordCount¦”打印 记录数 (2) 不同的打印机,打印和预览效果可能有一点点不同(保证数据打印完全正确一致)。本人用一台针式和一台激光打印机做测试, 开始差别较大后经过调试基本一致,不知其他打印机如何。 (3) 纸张大小以及横向、竖向自动适应系统默认也可设置。 (4) 各列的宽度按比例,适应纸张宽度打印。 程序设计:吴进昊 E-mail :jinhaowu@hotmail.com qq :54254770 2003.01.03
V1.83新增特性1.增加了TACFormReport控件,可以打印Form上的对象,目前支持打印DBGrid和Dataset,可以轻易扩充。 可以动态设置以下属性: HeaderFont: 列头字体 GridFont: 表格字体 PageHeader: 页眉(Rich文本) PageFooter: 页脚(Rich文本) PageTitle: 页头设置,含文字和字体。 ReportTitle: 表头设置,含文字和字体。 PrintControl: 要打印的控件。 PageInfo: 页面纸张、边距设置。 使用方法: 1) 将对应的TPrintDBGridObj或TPrintDataset控件拖到Form上。 2) 通过设置ACFormReport的以上各属性,并调用Prevew、Print、ShowDesigner等方法实现打印或设计功能。2.报表新增了"预览时可改变表格线"和"预览时可以编辑表格内容"选项。 "预览时可改变表格线"为默认选项,如果选取了此选项,则在预览时可以重新调整表格的栏宽。3.预览时可以临时设置页面纸张和页边距。4.新增了"页码#"和"总页数#"两个系统变量,因此可以在报表任何位置显示这两个值,而不限于页眉页脚,前提是报表必须在"页面属性"中选取"两遍报表"选项5.其它较重要的修改 1) 预览时可以输入页码直接跳转到某一页。 2) 如果在字段对象后面加上"$",如 "表.字段$",则将返回 "表.字段"的DisplayText值,而不是value值。 3) TACReport新增了TPaperInfo属性,制作动态报表时可以用来动态设置纸张。 4) TACReportCtrl新增了 ReadOnly和GridReset属性。 5) TACReportCell新增了SetFont方法。 6) 如果Field.Visible=false,则在报表字段选择中不会出现,但仍然可以使用。注: 1.TACFormReport等新增的几个控件都含源码。2.Demo程序和相关文档有变动。
数据库报表设计系统(以下简称为报表系统),是专用于对访问远程数据库服务器所得的数据,如:SQL Server2000、Oracle等进行报表设计、预览和打印的系统。它设计自由、样式多样、操作简单,和通常的字处理排版类似。 报表系统主要包括系统菜单、工具栏、设计区和预览区四大部分。其中系统菜单中的主要功能都能在工具栏中实现,工具栏以包括系统工具、表头元件、数据元件、排版工具、位置调整工具,具体功能如下: 1)系统工具:主要有新建报表、打开报表、保存报表打印设置、打印预览、剪切、复制、粘帖等; 2)表头元件:主要有标签、文本标签(用于多行标签)、系统数据(用于显示打印日期、页码、页数等)、图象、直线、矩形(用于制作表格)和条形码等工具。 3)数据元件:主要有数据标签(用于显示数据字段值)、数据文本(用于显示TXT数据)、数据RTF(用于显示RTF数据)、求和(用于对字段求和)、图象(用于显示图象字段)、数据条形码、区域框(用于制作表格)以及数据字段框(用于选择要显示的数据字段名称)。 4)排版工具:主要有对文字进行加粗、斜体、下画线、居左、居中、居右,改变字体及大小、颜色,置前、置后工具用于对重合的元件进行调整。 5)位置调整工具:主要有上下左右移动元件,对元件上下左右对齐(同时选择多个元件就可使用此工具选择对齐方式)和改变元件大小工具,即选择两个以上的元件,使用此工具对基于参照元件进行放大和缩小其它元件。 设计区主要用于报表版面设计,包括表头(用于设计报表标题)、内容(用于设计报表表格)、页脚(用于设计报表落款);预览区主要用于报表预览,即可进行实时预览,也就是在设计区中修改了报表,立刻就可以在预览区显示效果,预览区上还有打印按钮、预览比例按钮和翻页按钮等。
包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。 ACReport简介 Anycell Report(简称AC Report)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念中“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,勿须上下对齐,在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些基本特点: 1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。 2. 功能全面、专业的中国式报表设计器,中国用户更易于学习和接受。 3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、 条形码、中式财务帐薄、支持在报表中嵌入Word、Excel文档等。 4. 强大的计算和合计功能。内置表达式解析系统和函数库。 5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。 9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。 10. 既可以使用应用程序中的数据集,也支持在报表中直接连接各种数据库,通过SQL直接获得报表需要的数据。 11.无失真导出为Excel、Word、Html格式的文档 Ver 2.3主要新增或修改的功能 一、增加的功能: 1、支持二维条码 2、图片单元格支持gif格式 4、增加了一边生成报表一边预览的选项,减少用户的等待感 5、清单报表增加了明细分栏功能。 6、分组报表增加每组分页补充空行功能。 7、清单和分组报表中,补充空行时,可以选择是否显示横线和竖线条。 8、页面选项中增加“保持页脚在页面底部”、“是否套打模板”、“不打印背景图”等选项。 9、增加了批量设置字段别名的方法:SetDataFieldAliasName,使得英文字段报表中可以用中文展现,更便于最终用户设计报表。 10、在设计器页面左边“报表样式”显示区中单击报表样式标签可以直接调出报表样式设置窗口 11、增加了Delphi下专用的VCL控件(对COM的再次封装,Delphi开发人员使用AC更加简单方便)。 12、Delphi的接口源码中增加了LoadFromCommonBlobField和SaveToCommonBlobField函数,可以直接从一个非ADO的Dataset中装入或保存模板文件。 13、函数优化,在同一页中如果两个或多个公式有公共子公式,则此公共子公式只会执行一次,例如:有以下两个公式: NumToCnText(sum(DocLines, DocLines.LineTotal)/10000, 1) NumToCnText(sum(DocLines, DocLines.LineTotal) * 100, 1) 在运行报表时,sum(DocLines, DocLines.LineTotal) 函数在同页中只会被执行一次。 二、bug修正和功能变动 1、修正了右对齐单元格时,不能及时刷新的问题。 2、修正了调用Init方法后,退出应用程序报错的问题。 3、修正了退出“报表页面选项”窗口后,右下脚属性列表没有及时刷新的问题。 4、在设计器中,如果某行的上边线不可见,则不覆盖上一行单元格的下边线(旧版中会覆盖)。 5、修正了不能撤销粘贴单元格操作的bug 6、修正了页面属性中打印机名称不能保存的问题 三、demo 1、增加了“保存模板到数据库”的demo 2、增加了自定义预览界面的demo 3、增加了分组合并报表demo 4、增加了清单报表在一页中分多栏打印的demo 5、增加了web下的demo 四、其它 1、界面的优化,工具栏风格改变、增加了所选单元格在标尺上的位置标注等。 2、AcRptEngine新增了一些方法,如ClearContents、ExportAcrToStream等

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧