QuickReport는 Print나 Priview를 하게되면
최초로 OnNeedData라는 이벤트를 타게 되지요..
(onNeedData이벤트는 MoreData가 True인동안 Detail에 정보를 출력하지요..)
(Deatil에는 QRLabel를 올려놓구요.. StringGrid에 조회된 자료만큼 loop만큼
돌면서 계속 QRLabel에 값을 Asssign시켜주면 됩니다. 합계처리는 저같은 경우는 loop를 돌면서 전역변수에 더해주었지요.. 그래서 계산된 값을
Summary밴드에 올려진 합계출력 QRLabelPrint이벤트에서 Value값에 계산된 합계값을 Assign시켰습니다.)
(onNeedData이벤트를 한번 실행하면 Detail에 하나의 레코드 정보를 출력할 수 있습니다. 하나 출력후 다시 NeedData이벤트를 호출하는데 MoreData가 True일동안은 계속 해서 Deatil에 Assign시킨 정보를 출력하지요 )
procedure TForm1.QRep1NeedData(Sender : TObject; var MoreData : Boolean);
begin
/* iIdx는 전역변수로 선언 */
if iIdx >= (StringGrid.RowCount -1) then
begin
MoreData := False;
iIdx := 0; /*다시print 하더라도 NeedData를 실행하도록 초기화*/
Exit;
end;
MoreData := True;
Inc(iIdx);
QRLABEL1.Caption := StringGrid.Cells[0, iIdx]; //그리드의 셀
QRLABEL2.Caption := StringGrid.Cells[1, iIdx];
:
:
//합계누적 변수
fi_tot := fi_tot + StrToIntDef(StringGrid.Cells[1, iIdx],0);
end;