用fast report的高手请帮我看看错在那里,困扰我几日了,苦啊(50分)

  • 主题发起人 主题发起人 lonelyboy
  • 开始时间 开始时间
L

lonelyboy

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
frreport1.PrintPreparedReportDlg;
frreport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'rpt/dbd.frf');
frreport1.PrepareReport;
frreport1.PrintPreparedReport('',1,true,frall);
程序是想用户选择要输出的打印机后就直接输出要打印的文件,但是通过单步跟踪知道
当运行frreport1.PrintPreparedReportDlg;后用户选择打印机后确定后系统报错:
出现消息窗口"List index out of bound(0)",
如果不用frreport1.PrintPreparedReportDlg;
就没有报错,也可以向默认的打印机输出.请问我应该怎么做啊?
 
给分吧

strfile:=extractfilepath(application.ExeName);
strfile:=strfile+'printfile/';
strfile_1:='.frf';
frReport1.LoadFromFile(strfile+ sqlprintfile + strfile_1);
frReport1.ShowReport;
 
frreport1.PrintPreparedReportDlg;
frreport1.PrintPreparedReport('',1,true,frall);
这两句都是打印的,重复,肯定是错的!
至于出现越界错误,那是因为你还没有Prepare呢就PrintPreparedReportDlg,肯定不行!
而且这句(frreport1.PrintPreparedReport('',1,true,frall);)的作用是直接打印,而
不会出现选择打印机的窗口!

语句应该这样:

frreport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'rpt/dbd.frf');
frreport1.PrepareReport;
frreport1.PrintPreparedReportDlg;//这句才可以出现选择打印机的窗口,并且确定后
就直接打印了!
 
不好意思,借个地方问个问题!
为什么我的程序在没有装Delphi的机器上无法运行??
(FastReport2.46,Delphi)
 
frreport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'rpt/dbd.frf');
frreport1.PrepareReport;
frreport1.PrintPreparedReportDlg;

好象不用frreport1.PrintPreparedReport('',1,true,frall);了吧,不過你去試試好了
 
具体的代码是这样的
代码:
        qrysure1.First;
        if frreport1.PrepareReport then
 frReport1.PrintPreparedReportDlg;
        while not qrysure1.Eofdo

          begin

            frreport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'rpt/dbd.frf');
            frreport1.PrepareReport;
            frreport1.PrintPreparedReport('',1,true,frall);
            qrysure1.Next;
          end;
我是想:用户在选择输出打印机后,连续打印,所以只能直接输出,不用showreport了
 
多人接受答案了。
 
后退
顶部