로그아웃시에 현재 화면에 있는 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이 뜨질 않네요...
해결 방법을 아시는 고수님에 지도 부탁드립니다..
수고하시고 즐거운 하루되세요... ^^
첫번째 방법이 맞는데요 한가지를 실수 하셨네요
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하겠습니다. 참고 되셨으면 좋겠네요