E' un po' lunghetto, metto i passi principali
Non è difficile, in fondo, no?codice:var frxReport1: TfrxReport; quanteRighe:integer; quantecolonne:integer; offsetXmillimetri:double; offsetYmillimetri:double; larghezzaPagina:double; altezzaPagina:double; larghezzaFoto:double; altezzaFoto:double; i,j,k:integer; numerofoto:integer; quantePagine:integer; myPic:array of TfrxPictureView; arrayMemo:array of TfrxMemoView; arrayPage:array of TFrxReportPage; arrayBand:array of TfrxBand; FlagPaginaSIngola:boolean; ArraymemoID:array of TfrxMemoView; ArrayHeader:array of TfrxMemoView; offsetHeader:double; begin flagPaginaSingola:=false; offsetXMillimetri:=3; offsetYMillimetri:=10; quanteRighe:=<quantenevuoi>; quanteColonne:=<quantenevuoi> // in lbfotodalavorare indovina cosa c'è quantePagine:=lbfotodalavorare.items.count div (quanteRighe*QuanteColonne)+1; if (lbfotodalavorare.items.count mod (quanteRighe*QuanteColonne))=0 then dec(quantepagine); frxReport1:= tfrxreport.create(nil); frxReport1.Clear; // (+ per sicurezza) setlength(myPic,lbfotodalavorare.items.count+5); setlength(arraymemo,lbfotodalavorare.items.count+5); setlength(arrayPage,quantepagine+5); setlength(arrayBand,quantepagine+5); setlength(arrayMemoID,quantepagine+5); setlength(arrayHeader,quantepagine+5); numerofoto:=0; offsetHeader:=0; if edtHeader.text<>'' then offsetHeader:=40; for k:=1 to quantePagine do begin arrayPage[k]:=TfrxReportPage.Create(frxReport1); arrayPage[k].CreateUniqueName; arraypage[k].SetDefaults; arraypage[k].bottommargin:=20; arrayBand[k] := TfrxReportTitle.Create(arrayPage[k]); arrayBand[k].CreateUniqueName; arrayband[k].Top := 0; arrayband[k].Height := 20; larghezzaPagina:=arraypage[k].paperwidth; altezzaPagina:=arraypage[K].paperheight - (offsetHeader /2); larghezzaFoto:=(larghezzaPagina - arraypage[k].leftmargin - arraypage[k].rightmargin - ((quanteColonne-1)*offsetXMillimetri)) / quanteColonne; altezzaFoto:=(AltezzaPagina - arraypage[k].topmargin - arraypage[k].bottommargin - ((quanteRighe-1)*offsetYMillimetri)) / quanteRighe; for i:=1 to quanteRighe do begin for j:=1 to quanteColonne do begin if numeroFoto<lbfotodalavorare.items.count then begin myPic[numerofoto]:=TfrxPictureView.Create(arrayband[k]); myPic[numerofoto].CreateUniqueName; mypic[numerofoto].width:=fr01cm*larghezzaFoto; //millimetri myPic[numerofoto].height:=fr01cm*AltezzaFoto; mypic[numerofoto].top:=fr01cm*(i-1)*(altezzaFoto+offsetYMillimetri)+offsetheader; mypic[numerofoto].left:=fr01cm*(j-1)*(larghezzaFoto+offsetXMillimetri); mypic[numerofoto].autosize:=false; mypic[numerofoto].center:=true; mypic[numerofoto].filelink:=lbfotodalavorare.items[numerofoto]; mypic[numerofoto].frame.typ:=[ftleft]+[ftright]+[fttop]+[ftbottom]; if <mettinumerofoto>then begin arrayMemo[numerofoto] := TfrxMemoView.Create(arrayband[k]); arrayMemo[numerofoto].CreateUniqueName; arrayMemo[numerofoto].Height := 20; arrayMemo[numerofoto].AutoWidth := true; arrayMemo[numerofoto].top := fr01cm*((altezzaFoto+1)+(i-1)*(altezzaFoto+offsetYMillimetri))+offsetheader;//fr01cm*(i-1)*(altezzaFoto+offsetYMillimetri);; arrayMemo[numerofoto].left := fr01cm*(j-1)*(larghezzaFoto+offsetXMillimetri); arrayMemo[numerofoto].Text := 'Foto '+inttostr(numerofoto+1); end; INC(Numerofoto); end; end; end; if <mettididascalia>then if <i_ID numeropdidascaliasolcaxxo> >0 then begin arrayMemoID[k] := TfrxMemoView.Create(arrayband[k]); arrayMemoID[k].CreateUniqueName; arrayMemoID[k].Height := 35; arrayMemoID[k].AutoWidth := true; arrayMemoID[k].top := 0; //fr01cm*((altezzaFoto+1)+(i-1)*(altezzaFoto+offsetYMillimetri));;//fr01cm*(i-1)*(altezzaFoto+offsetYMillimetri);; arrayMemoID[k].Text := 'ID '+inttostr(i_id); arrayMemoID[k].font.size:=20; arrayMemoID[k].frame.typ:=[ftleft]+[ftright]+[fttop]+[ftbottom]; arraymemoID[k].frame.dropshadow:=true; arrayMemoID[k].left := 600-arrayMemoID[k].width; //fr01cm*((altezzaFoto+1)+(i-1)*(altezzaFoto+offsetYMillimetri));;//fr01cm*(i-1)*(altezzaFoto+offsetYMillimetri);; arraymemoID[k].brushstyle:=bsclear; end; if <intestazione da mettere><>'' then begin arrayheader[k] := TfrxMemoView.Create(arrayband[k]); arrayheader[k].CreateUniqueName; arrayheader[k].Height := 35; arrayheader[k].align:=tfrxalign(bawidth); arrayheader[k].HAlign := haCenter; arrayheader[k].VAlign := vaCenter; arrayheader[k].top := 0; //fr01cm*((altezzaFoto+1)+(i-1)*(altezzaFoto+offsetYMillimetri)); arrayheader[k].Text := edtHeader.Text; arrayheader[k].font.size:=15; arrayheader[k].frame.typ:=[ftleft]+[ftright]+[fttop]+[ftbottom]; arrayheader[k].brushstyle:=bsclear; end;

Rispondi quotando