Q&A

  • MDI 폼에서 차일드 모두 없애기
오늘 토욜 4시간동안 이거 하느라 시간 낭비 ㅠ.ㅠ



나머진 순식간에 처리 했는데 쩝. 각설하구~~

for i:=MDIchildcount - 1 downto 0 do

begin

MDIChildren[MDIChildCount-1].Close;



end;



이렇게 한다고 되어 있던데 안되더라구여.. 하나도 안 없어져여



생성은 델파이 기본 제공되는 MDI로 Child 추가 했는데도 안되여..



도와 주세여..!!







3  COMMENTS
  • Profile
    한태영 2001.06.13 22:57
    한줄(단어)만 수정하면 되겠네요.



    for i:=- 1 downto 0 do

    begin

    MDIChildren[MDIChildCount-1].Close;



    -> MDIChildren[i].Close;

    end;



    이 방식은 같은폼을 여러번 띄우거나, 여러가지 폼을 띄워 놓은상태에서

    모든 Form을 일시에 닫을 때, 쓰는거구요.



    onClose event에서 Action := CaFree 하는것은

    MDI에서 창을 닫으면 그때그때 Memory를 Free시켜주는 겁니다.

  • Profile
    타락천사 2001.02.26 19:50
    안녕하세여..타락임다..^^



    쩌비.. 어려운것두 아닌데...ㅠㅠ



    MDI에선 Close 한다고 자식폼이 없어지지 않습니다.. 최소화로 남아있져..



    자식폼을 없애려면 자식폼의 인스턴스를 해제해야 합니다..



    방법은 자식폼의 Close 이벤트에서 Action := caFree 라고 설정해 주면 됩니다..



    즐푸하세여..



    타락천사.......



  • Profile
    허덕이는이 2001.02.25 07:33
    저도 초보라서 잘 모릅니다

    하지만 소스를 보니

    > for i:=MDIchildcount - 1 downto 0 do

    > begin

    > MDIChildren[MDIChildCount-1].Close;

    >

    > end;

    이부분을 ((MDIChildren[MDIChildCount-1].Close;))

    ((MDIChildren[i].Close;)) 요렇게 하는게 맞지않나요?

    그리고 각 Child 폼의 이벤트를 보면 onclose 이벤트가 있어요

    거기를 dbclick 하셔서 ""Action := caFree;"" 을 각 폼마다 추가해주세요

    그러면 그 폼이 아예 메모리에서 없어집니다 물론 MDI에서 호출하면 CREATE됩니다



    혹시 아니더라도 화내시지 마시고....그냥 한번 해보세요....

    확실한 답을 못드려 죄송합니다

    델파이를 사랑하는 사람이..........