Q&A

  • 메인폼에서 서브폼의 SaveDialog시행시키기
메인폼에 있는 메인메뉴를 누르면 서브에 있는 함수를 실행시킵니다.

그런데 AccessViolation에러가 뜹니다.

밑에 프로그램이 있습니다. 무엇이 문제입니까?



메인폼입니다.

//-----------------------------------------------

procedure TfMainForm.N3Click(Sender: TObject);

begin

fFil_File.pToDifSave;

end;

//------------------------------------------------

서브폼입니다.

//------------------------------------------------

procedure TfFil_File.pToDifSave;

begin

If Not SaveDialog1.Execute Then --> 여기서 AccessViolation발생

Exit;



If SaveDialog1.FileName = '' Then

Exit;



RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);



End;

//------------------------------------------------

1  COMMENTS
  • Profile
    정지호 2000.07.24 18:59
    호야 wrote:

    > 메인폼에 있는 메인메뉴를 누르면 서브에 있는 함수를 실행시킵니다.

    > 그런데 AccessViolation에러가 뜹니다.

    > 밑에 프로그램이 있습니다. 무엇이 문제입니까?

    >

    > 메인폼입니다.

    > //-----------------------------------------------

    > procedure TfMainForm.N3Click(Sender: TObject);

    > begin

    > fFil_File.pToDifSave;

    > end;

    > //------------------------------------------------

    > 서브폼입니다.

    > //------------------------------------------------

    > procedure TfFil_File.pToDifSave;

    > begin

    > If Not SaveDialog1.Execute Then --> 여기서 AccessViolation발생

    > Exit;

    >

    > If SaveDialog1.FileName = '' Then

    > Exit;

    >

    > RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);

    >

    > End;

    > //------------------------------------------------



    제 생각에는 서브폼이 create되지 않은 상태에서 호출을 해서 생기는 에러같은데요

    아래처럼 서브폼의 함수를 실행하기전에 해당 폼이 create 되어있는지를

    확인한 후 없으면 create 해주는 식의 처리가 필요할 것 같은데요



    procedure TfMainForm.N3Click(Sender: TObject);

    begin

    if fFil_File = nil then

    Application.CreateForm( TfFil_File, fFil_File);



    fFil_File.pToDifSave;

    end;