Q&A

  • 스트링 리스트에 내용을 , 퀵리포트에 표시하는 방법
안녕하세요 . 델파이에 이제 막 입문한 초보자 입니다.
퀵 리포트를 써서 인쇄 쪽을 구현하다가 막히는 부분이 있어. 죄송하게도 고수님들께 도움을 청합니다.

리포트를 써서 출력하려는 것은 스트링 그리드의 내용이고요...  그리드 내용처럼 리포트에 리스트 형식에 출력을 하려고 합니다..

스트링 그리드의 내용은 레코드 단위로 프로그램 내에서 사용자 클래스로 포장 하여 사용되고요.. 이 사용자 클래스들을 TStringList.AddObject를 이용하여 리스트에 추가하여.. 데이터 패킷을 만들어 사용하고 있습니다.

이것을 리포트 출력 유닛 까지는 받아 와서, 푸는 거까지는 했는데.....  어떻게 뿌려 주어야 할지를 모르겠습니다.  전에 디비그리드를 이용하였을때는 데이터셋이 있어 리포트영역에 걸어주기만 하면 알아서 레코드 수많큼 데이터를 뿌리고 하였는데..  지금 같은 상황에는 어찌해야 되는지 모르겠습니다.....

고수님들의 자세한 설명좀 부탁드립니다... 바쁘실텐데 죄송하고요.. 초보의 고초를 가엾이 여기소서.~~

  
2  COMMENTS
  • Profile
    착한천사 2005.01.29 05:52
    착한천사 김경록입니다..

    퀵리포트에서 출력하는 방법에는 2가지가 있습니다..

    1.  Dataset을 이용한 출력
    2.  Detail한건에 해당하는 Data를 직접뿌려주는 작업
         이때는 OnNeedData 이벤트를 이용합니다..

    님이 원하시는 것은 2번에 해당하겠죠?  ^^;
    이용법은 아주 간단합니다..
    간단한게 퀵리포트에, Detail band를 하나 올리시고..
    퀵라벨을 출력항목 개수만큼 올리시구요..
    (필요하다면, 필요한 band(summary, pageheader등)들을 더 만드셔도 됩니다..)

    퀵리포트의 OnNeedData에

    If 출력할게 남았는가?  then
         moredata := True
    else
        MoreData := False;

    if MoreData Then
    Begin
           퀵라벨에 각항목에 열심히 자료를 대입시키는 문장..
           단, 전부 뿌리는게 아니고..
           Detail에 만든 퀵라벨 개수만큼만 뿌려 주시면 됩니다..
           간단하게 말하면, 1 Row에 출력한 항목을 뿌림
    End;


    OnNeedData는 Detail에 뿌려줄 자료가 있는지 판단하여
    있다면, 계속적으로 호출되어집니다..
    언제까지냐고 하면요..
    OnNeedData의 Argument인 Moredata가 False가
    될때까지입니다..

    그럼.. 쉽게 답이 될듯하군요..
    찾아보시면, StringGrid의 내용을 퀵리포트에 뿌리는
    내용의 질문/답변 들이 있을 겁니다..
    조회해 보시길..



  • Profile
    김지훈 2005.01.29 20:51
    아 그렇군요.. 우와. 한방에 해결되는 군요.. 답변 감사드립니다 ^^