Q&A

  • 폼 동적생성 및 삭제
초보짱입니다.

모달폼을 동적으로 생성하고 삭제하는 코드입니다.
이상하게 처음 한번은 실행되는데 두번쩨 실행하면
바이올레이션 에러가 나고 있읍니다.
조언 부탁드립니다.

// main.pas 의 모달폼 생성 및 show코드
procedure TfMain.mnuClientClick(Sender: TObject);
begin
  if fClient = nil then begin
    fclient := TfClient.Create(self);
    fclient.ShowModal;
  end
  else
    fclient.ShowModal;
end;

// Clinet.pas의 close이벤트코드
procedure TfClient.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action := cafree;
end;
2  COMMENTS
  • Profile
    신현웅 2003.06.20 19:59
    caFree하시면
      if fClient = nil then <= 이 부분에서 nil 체크가 안될겁니다

    1번만 생성하고 그 뒤부터는 생성을 하지 않으려면...

    caFree부분을 제거 하고

    mnuClientClick부분은 그대로...

    그리고 TfMain폼이 죽을때

    if fClient <> nil then
    begin
      fClient.Free;
    end;

    이렇게 하시면 될것 같네요..

    아니면...

    매번 생성 하는것도 한 방법이죠

    var
      frm : TFClient;
    begin
      frm := TFClient.Create(self);
      try
        frm.ShowModal;
      finally
        frm.Free;
      end;
    end;

    이렇게요...

  • Profile
    초보짱.. 2003.06.20 22:56
    .