FastReport中放置了一个MasterData和一个Picture控件,现在从一个XML文件中读取到多幅图片到strPicPath数组中,数组大小是动态分配的,可能是100,也可能是1000.然后用FastReport打印出来strPicPath:=array of string;    //声明图片路径数组
setlength(strPicPath,iPicCount);//分配大小
//获取图片路径到strPicPath....此处省略
MasterDataCtrl:=TfrxMasterData(frxReport1.FindObject('MasterData'));//获取MasterData控件句柄
MasterDataCtrl.RowCount:=m_iPicCount; //设置MasterData显示次数 
PictureCtrl:=TfrxPictureView(frxReport1.FindObject('Picture'));//获取Pictrue控件句柄
for i:=0 to iPicCount-1 do   //循环加载图片
  begin
    PictureCtrl.Picture.LoadFromFile(strPicPath[i]);   // 路径之前已经得到的.1.bmp,2.bmp等等
    PictureCtrl.Picture.Bitmap.FreeImage;
  end;为什么打印出来的图片全部都是最后一幅图片.如何解决?求解

解决方案 »

  1.   


    procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
    begin
      if FileExists(inttostr(ar[ArrayDS.RecNo])+'.jpg') then
      TfrxPictureView(frxReport1.FindObject('Picture1')).Picture.LoadFromFile(inttostr(ar[ArrayDS.RecNo])+'.jpg')
      else
      TfrxPictureView(frxReport1.FindObject('Picture1')).Picture.Assign(nil);
    end;
    以上代码,你去FR的DEMO文件夹里面,找PrintArray这个文件夹,
    然后放几张JPG到这文件夹,改名为: 1.jpg ... 5.jpg 这样几张图片
    最后加上我上面那段代码,就OK了.已测过
      

  2.   

    多谢.刚学会使用FastReport,一开始我也是放在frxReport1BeforePrint中的.错就错在在frxReport1BeforePrint也用了循环,刚才自己摸索出来了,原来直接判断就可以了.谢谢