Q&A

  • MDI Child Form을 강제 종료하고 싶은데요...
로그아웃시에 현재 화면에 있는 Child Form들을 강제 종료하고 싶습니다.
아래와 같이 하니깐 꼭 마지막 폼이 남아 있는데 해결할 방법을 모르겠습니다.

procedure gpDestroyChild();
var I : Integer;
begin
  with MainForm do
    for I := 0 to MDIChildCount - 1 do
      MDIChildren[I].Free;
end;


해서 다른방법으로 하니깐...

procedure gpDestroyChild();
var I : Integer;
    H : THandle;
begin
  H := 0;
  //이미 폼이 생성되어있는지 찾는다.
  for I := 0 to Screen.CustomFormCount - 2 do
  begin
    H := Screen.CustomForms[I].Handle;
    DestroyWindow(H);
  end;
end;

이번엔 종료는 되는데 다시 로그인 한후 Child Form이 뜨질 않네요...

해결 방법을 아시는 고수님에 지도 부탁드립니다..

수고하시고 즐거운 하루되세요... ^^


1  COMMENTS
  • Profile
    정희돈 2005.11.02 23:04

    첫번째 방법이 맞는데요 한가지를 실수 하셨네요

    MDIChildren[I].Free; 이렇게 하셨는데요~~~ MIDChild갯수는 예를 들어 4개이면 한번 프리하면
    3개가 됐겠죠~~ 2번하면 2개가 돼고요

    즉 MDIChild[0] 를 프리하면 MDIChild[1]이 0으로 가고 쭉 내려가서 MDIChild[4]는 없어지고 MDIChild[3]만 남는겁니다. (음 좀 말이 복잡한가요 쩝)

    방법은 두가지인데요

    첫째는 for I := MDIChildCount - 1 to 0 do 처럼 3에서 0으로 거꾸로 Free하시거나요~~ 아님

    저같으면 그냥

    for I := 1 to MDIChildCount do
      MDIChildren[0].Free;

    와 같이 그냥 갯수대로 Free하겠습니다. 참고 되셨으면 좋겠네요