아래 주석과 함께 소스를 올립니다..
참고하세요..
기람..
미친병아리 서비였네용.. 삐약~ !!
private
iRowCount : integer ; // 찍어야할 레코드 갯수..
iPageCount : integer ; // 찍어야할 페이지 장수..
iCounter : integer ; // 프린트하고 있는 레코드 카운터..
iPageCounter : integer ; // 프린트하고 있는 페이지 카운터..
const
MAXCOUNT = 15 ; // 한 페이지에 찍힐 수 있는 detail
// 밴드의 갯수..
{
퀵리포트를 이용해 출력하는 경우는 일정한 양식이 정해진 경우
이므로 디테일 벤드에 출력할 내용을 라벨로 올려놓아 구성이
끝난 후, 프로그램을 돌려 쉽게 확인해 볼 수 있다..
"1/3"과 같이
"현재 출력페이지/전체 페이지"를 출력하기 위해서
변수 iPageCount, iPageCounter, 상수 MAXCOUNT가 필요하며
이러한 페이지 출력이 필요 없이 퀵리포트에서 지원하는
현재 페이지만 출력할 경우는 위의 변수와 상수가 들어간
라인은 모두 삭제해도 무방하다..
}
procedure TfMG2205prn1.FormCreate(Sender: TObject);
begin
// 변수 초기화 부분..
iCounter := 1 ;
iPageCounter := 1 ;
// 쿼리의 갯수와 실제 스트링 그리드에 출력되는 갯수가
// 틀린 경우라 (스트링 그리드 중간 중간에 소계가 들어가서리..)
// 전체 찍을 라인을 Tag 프로퍼티에 저장해 두었음..
iRowCount := fMG2205.XStrGrid1.Tag ;
// 전체 페이지 계산..
iPageCount := ((iRowCount-1) div MAXCOUNT)+1 ;
end;
procedure TfMG2205prn1.QuickReport1NeedData(var MoreData:
Boolean);
begin
// 맨 마지막장 출력이 아니면 무조건 계속 출력..
if iPageCount<>iPageCounter then
begin
MoreData := True ;
if (iCounter Mod MAXCOUNT)=0 then
iPageCounter := iPageCounter + 1 ;
end
else // 맨 마지막 장인 경우 마지막 라인이 아니면 계속 출력..
begin
if iCounter>iRowCount then
MoreData := False
else
MoreData := True
// 빈 양식을 계속 찍어야 하는 경우 이곳에 다른 판별식을
// 두어서 한장에 최대한 찍힐 수 있는 갯수만큼 찍을때까지
// MoreData 값을 True로 해주면 됨..
end ;
iCounter := iCounter + 1 ;
end;
procedure TfMG2205prn1.QuickReport1BeforePrint(var PrintReport:
Boolean);
begin
// 페이지헤더 벤드의 내용이 고정되지 않고
// 여러가지 출력에서 같은 프린트 폼이 사용되는 경우 처리..
// 이곳에서 출력물의 현재 출력날짜 등등 기타 출력 내용을
// 초기화 한다..
lTitle.Caption := fMG2205.cbTaxType1.Text
+ ' 세금계산서 조회' ;
end;
procedure TfMG2205prn1.DetailBeforePrint(var PrintBand: Boolean);
begin
// 디테일벤드에 찍힐 내용을 넣어준다..
// DB그리드와 데이터 소스를 퀵리포트와 연결시키지 않고
// 스트링 그리드를 연결 시키는 경우 이곳에서 해당 라벨에
// 찍힐 내용을 스트링 그리드에서 가져와 넣어준다..
lDate.Caption := fMG2205.XStrGrid1.Cells[0,iCounter-1] ;
// DB그리드와 데이터소스를 이용해 연결시킨 경우는 이 이벤트
// 핸들러를 처리해 줄 필요 없다..
end;
[번 호] 1372 / 1395 [등록일] 98년 02월 14일 18:42
[등록자] KCMSYS
[제 목] [질문] qreport 출력 에 대한 재 질문 입니다.
─────────────────────────────────
안녕하세요..
아래 온니 서방님이 올려 주신 글을 읽어 봤는데요..
제가 델 초보라 어케 계속 더 진행을 하는지를 모르겠어요..
계속 진행을 하게 할려면 어떻게 해야 하죠??
비법을 조금 전수좀 해주세요.. ^^;;
그럼 즐통이 되시길..
|