社区
Delphi
帖子详情
fastreport 报表自定义打印问题
天地会-爱人
2007-05-13 09:24:14
打印机是 针式打印机
我自定义了报表的宽279.4mm×高241mm 横向打印
预览都跟我排版的格式一样
问题1、打印出来标题位置距离纸张top距离太大,差不多跑到中间位置了
问题2、内容是循环出来,到下面一部分不见了
为什么会这样?
但是采用A4横向,就不会出现这样的问题,但是没有满纸打印了。。
...全文
437
18
打赏
收藏
fastreport 报表自定义打印问题
打印机是 针式打印机 我自定义了报表的宽279.4mm×高241mm 横向打印 预览都跟我排版的格式一样 问题1、打印出来标题位置距离纸张top距离太大,差不多跑到中间位置了 问题2、内容是循环出来,到下面一部分不见了 为什么会这样? 但是采用A4横向,就不会出现这样的问题,但是没有满纸打印了。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Elysium
2007-05-17
打赏
举报
回复
没试过针式,不过fr现在有4.2了
jie810516
2007-05-17
打赏
举报
回复
在报表里面基本上不用写什么代码的
天地会-爱人
2007-05-16
打赏
举报
回复
jie810516,在嘛?
天地会-爱人
2007-05-16
打赏
举报
回复
jie810516
你可以把你用的代码发上来看下嘛。好像3.03和2.5的代码不一样的
天地会-爱人
2007-05-16
打赏
举报
回复
Heyongfeng,设置了。。没用。。
Heyongfeng
2007-05-14
打赏
举报
回复
上下边距调整一下试试
llh6795
2007-05-14
打赏
举报
回复
wu yan
天地会-爱人
2007-05-13
打赏
举报
回复
版本是2.5的
但是我设置24.1cm他自动会默认A4啊。。很奇怪。。
打印也没有显示完在纸张上
jie810516
2007-05-13
打赏
举报
回复
这种连续纸的高度我们这边都是28.1cm的,你的fastreport版本是多少的,在我这边宽度设置成24.1cm后,会自动变成自定义纸张的.
天地会-爱人
2007-05-13
打赏
举报
回复
我也不知道。我设置的是毫米MM 填写了cm他可能自动默认A4了吧
就是你说的旁边有孔的连续纸
jie810516
2007-05-13
打赏
举报
回复
怎么会是A4呢,a4的宽度只有21cm左右吧,你的纸张是那种旁边有孔的连续纸是吗
天地会-爱人
2007-05-13
打赏
举报
回复
jie810516,大哥
好像不对啊。。我按你说宽24.1cm×27.94cm,自动默认是A4了。难怪我看怎么象A4打印的
我从设置一下宽是241mm,高279.4mm 上面标题和右边内容没有没有打出来完
纸张规格就是宽是241mm,高279.4mm
jie810516
2007-05-13
打赏
举报
回复
你将上下左右的边距设置一下.还有,这个纸张的高度应该有28.1cm吧
天地会-爱人
2007-05-13
打赏
举报
回复
to:jie810516
用你的方法是可以打印正常出来
但是内容上、下、右、左距离太大了。。能不能留个1厘米就可以了
这样象用A4横向打印出来的效果差不多..
jie810516
2007-05-13
打赏
举报
回复
虽然这样设置预览出来感觉不对,但打印出来应该可以的,你试一下
jie810516
2007-05-13
打赏
举报
回复
对于针式打印机的自定义纸张设置跟一般纸张设置不同,要在fastreport的页面设置中,先选择"横向",再宽度设成24.1cm,高度设成27.94cm,是根据纸张实际放入时的宽度跟高度来设
天地会-爱人
2007-05-13
打赏
举报
回复
换版本了。是不是所有的报表会出错呢?
你加下我吧。QQ53252734
jie810516
2007-05-13
打赏
举报
回复
试着用一下3.03的版本,我用了感觉还不错.
Delphi7
自定义
Fast
Report
4
报表
的预览窗体.rar
这个
自定义
的Delphi
报表
预览窗体是为了实现套打功能而弄的,预览时先调用这个
自定义
的,实际
打印
时再调用默认的。这需要2个frx
Report
,其中一个的Preview属性需设为
自定义
的这个,另一个默认就行,然后在
自定义
那个的PrintBClick事件中再回调另一个就行了。 直接改
fast
report
的源代码也行,但只能用于某个程序,当编译别的程序时再改回去?我觉得还是
自定义
吧。 该
自定义
预览窗体是根据适用于Delphi的控件
fast
report
4.9.32源代码改成的,基本是原来的代码。源码中并不是所有功能都实现了,比如导出功能未完成。
自定义
预览窗体使用说明: 在项目中新建一个窗体,name命名为Form6,然后选择“全部保存”,保存单元文件为MyPreview。然后: 1、将MyPreview.pas中的所有内容复制到你项目的MyPreview单元中,代替原来的内容。 2、将你项目中的Form6窗体换为“以文本方式查看”,将PreviewForm.txt中的全部内容复制覆盖原来的内容。 大功告成。这时你要是看着Form6这个名字不顺眼,可以将该窗体name改为其它任何名字,MyPreview代码中所有Form6应该会改为你想要的名字,如果不能,手动改吧。
C# 调用
Fast
Report
报表
的源代码
C# 部分的全部源代码都在里面。其中Base
Report
.dll是delphi做的
Fast
Report
报表
dll,这个源代码是不公开的,但是功能没有限制。
Fast
Report
打印
条码例子
Fast
Report
是一款赔偿漂亮实用的
报表
打印
控件,可以实用winform进行快速集成开发,帮你打造完美的
报表
。t
打印
条码例子,帮助你快速学习
Fast
Report
打印
,可以进行
自定义
打印
基于
Fast
Report
编写的web
打印
控件,实现
打印
模版在线设计.rar
这些年的工作当中,最早是在8年前接触到
Fast
Report
这个
报表
工具,从名字上来看,直译过来就是快速
报表
,正所谓天下武功,唯快不破,
Fast
Report
报表
早些年确实是制作
报表
的不二之选,8年前的工作中,涉入到了医疗行业,项目中要使用
Fast
Report
.net
打印
基因检测报告,效果确实是满足了项目要求。 最新版
Fast
Report
.net支持.net core 鸡肋的
Fast
Report
.net网页版 回过来看,最近几年的工作中,
报表
也是一直使用的是
Fast
Report
.net ,但转到了BS端,即在网页上
打印
业务单据,基本上不复杂的效果完全满足要求,而且我还开发了基于ActiveX的控件,以解决浏览器上
Fast
Report
报表
BS版本比较鸡肋的功能,
Fast
Report
.net的网页版本的
打印
是通过生成PDF文件,然后调用PDF的
打印
功能来实现
打印
,如果原生的浏览器
打印
功能,会存在着页脚被添加一串URL地址、翻页,定制页不能
打印
的
问题
。通过开发
Fast
Report
.net的ActiveX控件,可以实现用户
自定义
报表
功能,网页直接
打印
功能,指定默认
打印
机功能,反正跟桌面版本体验
Fast
Report
问题
集
Fast
Report
问题
集 Q: 我怎样添加我的
自定义
函数? A: 使用 Tfr
Report
.OnUserFunction 事件. 这里有一个简单的例子: procedure TForm1.fr
Report
1UserFunction(const Name: String; p1, p2, p3: Variant; var val: Variant); begin if AnsiCompareText(‘SUMTOSTR‘, Name) = 0 then val := My_Convertion_Routine(frParser.Calc(p1)); end; 然后,你就可以在
报表
(任何表达式或脚本)的任何地方使用 SumToStr 函数了。 Q: 但是它仅仅能工作在一个Tfr
Report
组件中。可我想在任何地方(在所有的Tfr
Report
组件中)使用的我的
自定义
函数? A: 使 OnUserFunction event 句柄作为所有组件的公用句柄。如果你不能做到这一点,你需要创建函数库: type TMyFunctionLibrary = class(TfrFunctionLibrary) public constructor Create; override; procedure DoFunction(Fno: Integer; p1, p2, p3: Variant; var val: Variant); override; end; constructor TMyFunctionLibrary.Create; begin inherited Create; with List do begin Add(‘DATETOSTR‘); Add(‘SUMTOSTR‘); end; end; procedure TMyFunctionLibrary.DoFunction(Fno: Integer; p1, p2, p3: Variant; var val: Variant); begin val := 0; case Fno of 0: val := My_DateConvertion_Routine(frParser.Calc(p1)); 1: val := My_SumConvertion_Routine(frParser.Calc(p1)); end; end; 要注册函数库,调用 frRegisterFunctionLibrary(TMyFunctionLibrary); 要卸载函数库,调用 frUnRegisterFunctionLibrary(TMyFunctionLibrary); Q: 我怎样将我的函数添加到函数列表中 (用表达式生成器)? A: 使用 frAddFunctionDesc 过程 (在FR_Class 单元中): frAddFunctionDesc(FuncLib, ‘SUMTOSTR‘, ‘My functions‘, ‘SUMTOSTR(
)/Converts number to its verbal presentation.‘); 注意: "/" 符号是必须的! 它从它的描述中分隔函数语法。 FuncLib 被声明为你自己的函数库 (如果你不使用函数库可以将其设置为nil). 当函数库未注册时,所有它的函数将自动从函数列表中删除。 ---------------- 使用变量 ------------------------------------- Q: 我怎样编程实现填充变量列表(在数据词典中)? A: 数据词典中的所有变量及分类都被存储在 Tfr
Report
.Dictionary.Variables 中. with fr
Report
1.Dictionary do begin // 创建分类(名称用空白) Variables[‘ New category‘] := ‘‘; // 创建变量 Variables[‘New Variable‘] := ‘CustomerData.Customers."CustNo"‘; Variables[‘Another Variable‘] := ‘Page#‘; end; Q: 我定义了字符串变量: with fr
Report
1.Dictionary do Variables[‘Month‘] := ‘March‘; 但是当我运行
报表
是,出现了错误,为什么? A: 因为
Fast
Report
假定数据词典中的字符串变量值是一个表达式,它需要分析、计算它。 可以使用其它的方法: with fr
Report
1.Dictionary do Variables[‘Month‘] := ‘‘‘‘ + ‘March‘ + ‘‘‘‘; 或者, 使用 frVariables 来传输固定数据到
报表
。 Q: 我不想在数据词典中显示某些数据集? A: 使用 Tfr
Report
.Dictionary.DisabledDatasets: with fr
Report
1.Dictionary do begin // 关闭该数据集 DisabledDatasets.Add(‘CustomerData.Bio‘); // 或者, 关闭整个数据模块/窗体 DisabledDatasets.Add(‘CustomerData*‘); end; Q: 我怎样将数据传送到
报表
? A: 有几个方法可以实现它. 第一是使用全局对象 frVariables (在 FR_Class 单元中被定义): frVariables[‘My variable‘] := 10; 这段代码创建了一个名称为“My variable”,值为 10 的变量。这是最好的传输固定数据的
报表
的方法。 第二种方法是使用 Tfr
Report
.OnGetValue 事件. 这可以使用这个方法来传送动态数据、记录等。 procedure TForm1.fr
Report
1GetValue(ParName: String; var ParValue: Variant); begin if ParName = ‘MyField‘ then ParValue := Table1MyField.Value; end; 最后, 第三种方法是通过编程在数据词典中定义变量(可以参考以前的
问题
): with fr
Report
1.Dictionary do begin Variables[‘MyVariable‘] := ‘CustomerData.Customers."CustNo"‘; Variables[‘Another Variable‘] := ‘10‘; end; Q: 我能在
报表
和程序间传送数据吗? A: 使用 frVariables 对象. 如果你在
报表
的任何对象的脚本中写入以下代码: MyVariable := 10 那么,在你的程序中,你可以使用以下代码来获取 MyVariable 的值: v := frVariables[‘MyVariable‘]; ---------------- 脚本 (
Fast
Report
Pascal) --------------------------------- Q: Band 中是否可以使用脚本? A: 当然. 选择 band ,然后按 Ctrl+Enter 或在对象浏览器中选择 "OnBeforePrint" 属性。 Q:
报表
页中是否可以使用脚本? A: 当然. 选择页 (在空白处单击) ,然后在对象浏览器中选择 "OnBeforePrint" 属性。如果该页是一个对话框窗体,那么这个属性就是 "OnActivate". Q: 我有两个对象: Memo1 和 Memo2. 我能否在 Memo1 的脚本中调用 Memo2 的属性和方法? A: 当然, 例如,你可以这样做: 对象名.属性名. Q: 在脚本中,我可以使用对象的哪些属性? A: 几乎所有你能在对象浏览器中看到的属性。例如,可以使用 Font.Name, Font.Size等来存取字体属性。 ---------------- 其它
问题
-------------------------------------------- Q: 怎样改变多页
报表
中某一页的顺序? A: 拖动页标签到目的位置。 Q: 我想查看所有的字段及变量,我想在
报表
中使用列表来实现它? A: 设置 Tfr
Report
.MixVariablesAndDBFields := True.现在,所有的数据字段及变量可在“插入数据字段”对话框中可存取了。 Q: 我不想显示导入选项对话框? A: 在导入组件(比如,TfrTextExport)中设置所有必需的选项,然后通过设置ShowDialog属性为False来关闭此对话框。 Q: 为什么 TotalPages 变量不起作用? 它总是返回 0. A: 在你的
报表
中设置 Two-pass 选项. 要设置它,你需要在
报表
设计器的“文件”菜单中,打开“
报表
选项”对话框。 Q: 我用BLOB字段来存储我的
报表
。当我运行
报表
设计器时,它显示我的
报表
未命名? A: 在运行
报表
设计器前,这样做: fr
Report
1.FileName := ‘Name of my
report
‘; Q: 我想在重新定义
报表
设计器中的“打开”及“保存”按钮的功能? A: 查看 TfrDesigner 组件. 它有几个必需的事件: OnLoad
Report
和 OnSave
Report
. 这里有一小段代码例子: procedure TForm1.frDesigner1Load
Report
(
Report
: Tfr
Report
; var
Report
Name: String; var Opened: Boolean); begin with MyOpenDialog do begin Opened := ShowModal = mrOk; if Opened then begin
Report
.LoadFromBlobField(…);
Report
Name := …; end; end; end; procedure TForm1.frDesigner1Save
Report
(
Report
: Tfr
Report
; var
Report
Name: String; SaveAs: Boolean; var Saved: Boolean); begin if SaveAs then with MySaveDialog do begin Saved := ShowModal = mrOk; if Saved then begin
Report
.SaveToBlobField(…);
Report
Name := …; end; end else
Report
.SaveToBlobField(…); end; Q: 在 QR 中, 我可以写这样的代码: QRLabel1.Caption := ‘Some text‘. 我可以用FR这样做吗? A: FR 对象并不是一个组件 (这并不像 QR, RB). 但使用 Tfr
Report
.FindObject 方法可以通过对象名称找到该对象。 var t: TfrMemoView; begin t := TfrMemoView(fr
Report
1.FindObject(‘Memo1‘)); if t <> nil then t.Memo.Text := ‘
Fast
Report
‘; end; Q: 我想在用户预览(TfrPreview组件)中
自定义
热键? A: 这个组件有个窗口: Tform 属性. 将
自定义
句柄指定到 Window.OnKeyDown 属性. Q:
Fast
Report
2.4 不能装载 Free
Report
2.21 文件? A: 这仅需要使用16进制数改变
报表
文件的第一字节,然后在源代码中修改下面的部分。在这些修改之后, 装载
报表
并保存它. 最后,返回到源代码处. FR_Class: function ReadString(Stream: Tstream): String; begin { if frVersion >= 23 then} Result := frReadString(Stream) {else Result := frReadString22(Stream);} end; procedure ReadMemo(Stream: Tstream; Memo: Tstrings); begin { if frVersion >= 23 then} frReadMemo(Stream, Memo){ else frReadMemo22(Stream, Memo);} end; FR_Utils: procedure frReadMemo(Stream: Tstream; l: Tstrings); var s: String; b: Byte; n: Word; begin l.Clear; l.Text := frReadString(Stream); exit; Stream.Read(n, 2); if n > 0 then repeat Stream.Read(n, 2); SetLength(s, n); Stream.Read(s[1], n); l.Add(s); Stream.Read(b, 1); until b = 0 else Stream.Read(b, 1); end; function frReadString(Stream: Tstream): String; var s: String; n: Integer; b: Byte; begin Stream.Read(n, 4); SetLength(s, n); Stream.Read(s[1], n); if (n > 0) and (s[n] = #$0A) then SetLength(s, n - 2); // Stream.Read(b, 1); Result := s; end; Q: 怎样不在
打印
预览中
打印
报表
? A: 这里有一段代码: fr
Report
1.Prepare
Report
; fr
Report
1.PrintPrepared
Report
(‘‘, 1, True, frAll); 或 fr
Report
1.PrintPrepared
Report
Dlg; Q: 我想在
报表
中旋转图片。
问题
是这张图片是由我的应用程序生成的。是否有方法可以在
打印
前将这幅图片装载到
报表
中? A: 使用 Tfr
Report
.OnBeforePrint 事件: if View.Name = ‘Picture1‘ then TfrPictureView(View).Picture.LoadFromFile(…) 或 .Assign 或 .你所想要做的任何事情
Delphi
5,388
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章