FASTREPORT 3.0打印问题,我不能直接打印,非要预览一次,后续打印才有反应

jobslew2603765 2008-11-22 10:23:36
FASTREPORT 3.0打印问题,程序启动后,我直接点击打印,非要预览一次,后续打印才有反应,
打印机我安装了 ,是本机的
//这个函数太长了,我用伪代码给大家看看
procedure setfrxreport_zy(id); //这个是预览的
//变量的声明
begin
// 非法的检查
//读取报表的格式,竖向,还是横向。
//读取报表的纸张,设置纸张的打印方向,是横向打印,还是竖向打印
//设置报表的字体,左右边距。
//查找报表上面的memo ,例如 memo24:= MyDataModule.frxreport1.findobject('memo24') as TfrxMemoView ;
//设置标题格式,读取标题的内容 ,标题局中,
//读取表头的内容,写入memo中
//读取表尾的内容,写入memo中,
//读取masterdata的内容
MyDataModule.frxReport1.ShowReport; //这个是预览的

end;
procedure setfrxreport_print(id); //这个是打印的
//变量的声明
begin
// 非法的检查
//读取报表的格式,竖向,还是横向。
//读取报表的纸张,设置纸张的打印方向,是横向打印,还是竖向打印
//设置报表的字体,左右边距。
//查找报表上面的memo ,例如 memo24:= MyDataModule.frxreport1.findobject('memo24') as TfrxMemoView ;
//设置标题格式,读取标题的内容 ,标题局中,
//读取表头的内容,写入memo中
//读取表尾的内容,写入memo中,
//读取masterdata的内容
MyDataModule.frxReport1.print; //这个是打印的

end;

procedure TsearchForm.BitBtn9Click(Sender: TObject);

begin
id:=Trim(idDBEdit.Text);

setfrxreport_zy(id); //这个是预览的



END;
procedure TsearchForm.BitBtn10Click(Sender: TObject);

begin
id:=Trim(idDBEdit.Text);

setfrxreport_print(id); //这个是预览的



END;

...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jobslew2603765 2008-11-22
  • 打赏
  • 举报
回复
没有啊,我有导入的,我要选择格式啊
MyDataModule.frxReport1.Clear ;
try
filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
FStream := TIniFile.Create(filename);
//左右格式1.上下格式--2
strstyle:=trim((FStream.ReadString('Style','Style','')));
strpage:=trim((FStream.ReadString('Paper','PaperName','')));
strpage1:=trim((FStream.ReadString('UserPaper','PaperName','')));


if ( Trim(strpage)='') and (Trim(strpage1)='') then
begin //如果自定义,系统的都没有定义纸张,就会出错。
ShowMessage('请设置报表的纸张的大小!!!');
exit;
end
else if ( Trim(strpage)<>'') or (Trim(strpage1)<>'') then
begin
if Trim(strstyle)='1' then
begin
//35 原来的,//36对35上面做了修改,可以横竖,自定义的纸张。
//351 是对纸张做横向打印的。//35是按照b5的大小设计的。
//34是按照A4的大小设计的。
MyDataModule.frxReport1.LoadFromFile(WPath + IntToStr(36) + '.fr3');

end else if Trim(strstyle)='2' then
begin
MyDataModule.frxReport1.LoadFromFile(WPath + IntToStr(355) + '.fr3');
end
else if Trim(strstyle)='' then
begin
ShowMessage('请设置报表的格式!!!');
exit;
end;
end;
execpt
ShowMessage('的点点滴滴');
end;

eqapple 2008-11-22
  • 打赏
  • 举报
回复
试不试你没有把报表LOAD内存中,所以每次打印前都要预览呢?
给你个简单示例.


procedure Print(Msg:integer);
begin
if frxReport1.LoadFromFile(ExtractFilePath(ParamStr(0)) +'report\'+Report_file_Name) then
begin
if Msg=0 then
begin //预览报表
frxReport1.PrepareReport;
frxReport1.Preview:= frxprvw1;
frxReport1.ShowReport(True);
end
else
if Msg=1 then
begin //打印报表
frxReport1.Print; //.PrintPreparedReport('', 1, True, frAll);
end;

end;
end;
keyouyun 2008-11-22
  • 打赏
  • 举报
回复
你用的语法错了
预览打印的话:语句是:frReport.showReport;
如果直接打印的话:语句是:reReport.prepareReport; reReport.printpreparedReportDlg;这两句;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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