Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[1428] [답변] KCMSYS/ qreport 출력 에 대한 재 질문 입니다.
온니서방 [ ] 2060 읽음    1998-02-18 04:27

    아래 주석과 함께 소스를 올립니다..
    참고하세요..

    기람..
                                미친병아리 서비였네용.. 삐약~ !!



    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 출력 에 대한 재 질문 입니다.                
    ─────────────────────────────────
    안녕하세요..

    아래 온니 서방님이 올려 주신 글을 읽어 봤는데요..
    제가 델 초보라 어케 계속 더 진행을 하는지를 모르겠어요..
    계속 진행을 하게 할려면 어떻게 해야 하죠??

    비법을 조금 전수좀 해주세요.. ^^;;

    그럼 즐통이 되시길..





+ -

관련 글 리스트
1428 [답변] KCMSYS/ qreport 출력 에 대한 재 질문 입니다. 온니서방 2060 1998/02/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.