Q&A

  • Delphi 5 쿽리포트로 출력시..
코리아팀 화이팅!!  델파인 화이팅!!

리포트 구성은 페이지헤더, 컬럼헤더, 그룹헤더, 디테일, 그룹풋터, 서머리 순으로 되어있습니다.

여기서 그룹풋터가 프린트후 디테일이 새로운 페이지에 찍히게 했습니다.
[소스]
procedure TFM_T16306RK.QB_GroupFooterAfterPrint(Sender: TQRCustomBand;  BandPrinted: Boolean);
var
  i : Integer;
begin
  QB_Detail.ForceNewPage := True;        -----> 요부분
  for i := 0 to QB_GroupFooter.ControlCount - 1 do
  begin
    if QB_GroupFooter.Controls [i] IS TQRExpr then
      (QB_GroupFooter.Controls [i] AS TQRExpr).Reset;
  end;
end;

그런 후, 디테일을 프린트후 다시 위의 표시 부분을 False로 바꿔줬습니다.
[소스]
procedure TFM_T16306RK.QB_DetailAfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
  QB_Detail.ForceNewPage := False;
end;

그런데, 첫 그룹풋터가 찍히고 나면 디테일이 바로 밑에 찍힙니다.
이상한 것은 두번째 그룹풋터부터는 그룹풋터가 찍힌후 디테일이 새로운 페이지에 찍힙니다....

너무나 이상하고 황당해서, 리포트를 몇번이고 다시 작성해보았으나, 여전히 마찬가지더라구요......

이런 경우를 경험하시고 해결하신 분이나, 고수분들의 많은 답변부탁드립니다..

그럼,,,,,, 즐코.........
1  COMMENTS
  • Profile
    이재식 2002.06.09 04:35
    님께서 하신 로직에 문제가 있습니다.
    님 로직을 보면 당연히 첫번째 디테일은 새로운 페이지로
    전환이 안됩니다.

    GroupFooter페이지의 ForceNewPage속성을 그냥
    true로 하시면 쉽게 해결되는 것입니다.

    님께서 코딩으로 로직을 세우셨는데요,
    GroupFooter의 BeforePrint이벤트에서 님이 써준
    QB_Detail.ForceNewPage := True는 해당 디테일 밴드가
    출력된 시점에서 이젠 인식이 이루어 지는 것입니다.

    그러므로, 첫번째 디테일은 당연히 NewPage가 안됩니다.
    퀵레포트의 객체 영역의 참조를 공부해보시면 이해가 될것입니다.
    ^^