Q&A

  • QReport에 관한질문......담배연기님 보세요^^
담배연기님의 답변중에

퀵레포트는 일반적으로 두번 free해야 하고,

첫번째. 미리보기를 했을 경우 미리보기 또한 하나의 폼으므로 free 하고,

두번째. 퀵레포트를 free 해야한다고 했습니다.

다음은 제 프로그램중, 퀵레포트 호출과 메모리 해재 부분입니다.

==============================================================

Application.CreateForm( TFqr_ItemGumsa , Fqr_ItemGumsa);

.

.

Fqr_ItemGumsa.Qr_ItemGumsa.Preview;

Fqr_ItemGumsa.Free;

==============================================================

이렇게 하면 되지 않나요..

Fqr_ItemGumsa.Free; 부분이 퀵레포트 FREE부분인것 같은데...

그럼 미리보기를 Free하는 방법은 ?

Fqr_ItemGumsa는 폼이고, Qr_ItemGumsa는 QuickRep 컴포넌트의 name입니다..

제 생각으로는

Fqr_ItemGumsa.Qr_ItemGumsa.Free;

를 추가 시키면 될것 같은데, 맞는지요..



그리고, 담배연기님이 사용한다는 방법에 대한 자세한 설명을 부탁드립니다..

너무 귀찮게 하는것 같아서 미안하지만, 답변 꼭 부탁드립니다..

오늘은 비가 오네요.... 꾸벅..



2  COMMENTS
  • Profile
    담배연기 2000.08.17 20:56
    coolling wrote:

    > 담배연기님의 답변중에

    > 퀵레포트는 일반적으로 두번 free해야 하고,

    > 첫번째. 미리보기를 했을 경우 미리보기 또한 하나의 폼으므로 free 하고,

    > 두번째. 퀵레포트를 free 해야한다고 했습니다.

    > 다음은 제 프로그램중, 퀵레포트 호출과 메모리 해재 부분입니다.

    > ==============================================================

    > Application.CreateForm( TFqr_ItemGumsa , Fqr_ItemGumsa);

    > .

    > .

    > Fqr_ItemGumsa.Qr_ItemGumsa.Preview;

    > Fqr_ItemGumsa.Free;

    > ==============================================================

    > 이렇게 하면 되지 않나요..

    > Fqr_ItemGumsa.Free; 부분이 퀵레포트 FREE부분인것 같은데...

    > 그럼 미리보기를 Free하는 방법은 ?

    > Fqr_ItemGumsa는 폼이고, Qr_ItemGumsa는 QuickRep 컴포넌트의 name입니다..

    > 제 생각으로는

    > Fqr_ItemGumsa.Qr_ItemGumsa.Free;

    > 를 추가 시키면 될것 같은데, 맞는지요..

    >

    > 그리고, 담배연기님이 사용한다는 방법에 대한 자세한 설명을 부탁드립니다..

    > 너무 귀찮게 하는것 같아서 미안하지만, 답변 꼭 부탁드립니다..

    > 오늘은 비가 오네요.... 꾸벅..



    안녕하세요.



    그럼 제가 메일로 보내 드리겠습니다.



    그럼 행복하세요.



  • Profile
    담배연기 2000.08.17 21:32
    > coolling wrote:

    > > 담배연기님의 답변중에

    > > 퀵레포트는 일반적으로 두번 free해야 하고,

    > > 첫번째. 미리보기를 했을 경우 미리보기 또한 하나의 폼으므로 free 하고,

    > > 두번째. 퀵레포트를 free 해야한다고 했습니다.

    > > 다음은 제 프로그램중, 퀵레포트 호출과 메모리 해재 부분입니다.

    > > ==============================================================

    > > Application.CreateForm( TFqr_ItemGumsa , Fqr_ItemGumsa);

    > > .

    > > .

    > > Fqr_ItemGumsa.Qr_ItemGumsa.Preview;

    > > Fqr_ItemGumsa.Free;

    > > ==============================================================

    > > 이렇게 하면 되지 않나요..

    > > Fqr_ItemGumsa.Free; 부분이 퀵레포트 FREE부분인것 같은데...

    > > 그럼 미리보기를 Free하는 방법은 ?

    > > Fqr_ItemGumsa는 폼이고, Qr_ItemGumsa는 QuickRep 컴포넌트의 name입니다..

    > > 제 생각으로는

    > > Fqr_ItemGumsa.Qr_ItemGumsa.Free;

    > > 를 추가 시키면 될것 같은데, 맞는지요..

    > >

    > > 그리고, 담배연기님이 사용한다는 방법에 대한 자세한 설명을 부탁드립니다..

    > > 너무 귀찮게 하는것 같아서 미안하지만, 답변 꼭 부탁드립니다..

    > > 오늘은 비가 오네요.... 꾸벅..

    >

    메일로 보내는 것보다 여기에 바로 적어보겠습니다.



    aform ---> 퀵레프트를 부르기 이전의 화면

    qform ---> 퀵레프트



    procedure Taform.Button1Click(Sender: TObject);

    begin

    qform := Tqform.Create(Application);

    try

    -- 출력시 사용할 값을 광역변수를 이용하여 주기 --

    qformpas.fdate = '20000101'; 등등 필요한 값을 넘겨주고

    qform.qreport.PreviewModal; // 또는 print

    finally

    qform.Free;

    qform := nil;

    end;

    end;



    위의 방법은 coolling님이 사용하는 방법과 같습니다.

    단지 create하는 것을 조금 다르게 사용하고, 마지막에 form에 nil값을 넘겨주어 완전히

    연결을 끊어 버리지요. 이렇게 하면 "벌써 미리보기가 존재한다"는 에러는 발생하지 않습니다. 그리고 꼭 form에 nil값을 주기 않아도 이런 에러메세지는 발생하지 않습니다.

    제가 form에 nil을 주는 것은 완저히 연결을 끊어 보자는 생각으로 주고 있습니다.

    제가 폼이름을 체크해보니 free를 해도, 폼 이름이 존재하고 있더라고요(퀵레포트를 호출한 프로그램이 free되기 이전까지는), 그래서 nil를 줍니다.

    또 위에서 말씀하시대로 퀵레포트에서 free를 한번 더 주는 것도 맞습니다.



    다른 방법이 있을 수도 있습니다. 프로그램이라는 것이 같은 내용이지만 다르게 프로그래 사용할 수 있지 않겠습니까?



    한번 연구해 보세요, 저도 지금 연구중입니다. 조금 다르게 하는 방법을 생각한 것이 있지만

    아직 완전히 검정하지 못한 관계로 말씀드리기가 좀....