본문 바로가기
Delphi Tip/+Tip

프로그램 종료 시 모든 폼 OnClose 이벤트 발생시키기

by MonoSoft 2024. 6. 11.
728x90
반응형

프로그램 종료 시 모든 폼 OnClose 이벤트 발생시키기

728x90

 

 

 

보통 프로그램을 작성할 때에 Form의 OnClose 이벤트에서

관련 자원을 해제하는 코드를 넣는다.

 

그런데 Form의 OnClose 이벤트가 발생하지 않는 경우가 있다.

 

그래서 프로그램이 종료할 때 가끔 Access Violation Error가 나는 경우가 있다.

 

다음과 같은 코드를 삽입하면 프로그램이 종료될 때

관련 폼의 모든 OnClose 이벤트를 발생시킨다.

 

program Project1;

 

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3};

 

{$R *.RES}

 

procedure CloseAllForm;

var

i: Integer;

Form: TForm;

begin

for i := 0 to Application.ComponentCount - 1 do

begin

if Application.Components[i] is TForm then

begin

Form := Application.Components[i] as TForm;

Form.Close;

end;

end;

end;

 

begin

Application.Initialize; Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.Run; CloseAllForm; // 프로그램 종료할 때 요넘을 호출해 준다.

end.

 

 

728x90
반응형

댓글