Q&A

  • Auto-create forms와 Available forms 장단점..
기존의 프로젝트들은 보통 폼 비중을 Auto-create forms는 10%

Available forms를 거의 90%정도 했던거 같습니다.

그런데 우연히 어느책에서 본건데 Createform을 직접 호출하면 커다란 최적화를

기대할수 없다고 나오던데요..

그럼 메인폼을 제외한 나머지를 Available forms으로 해야 하나요?

보통 40~50개 정도의 폼들이 있다고 가정할때 비중을 어떻게 해야 할지.

Auto-create forms와 Available forms 장단점을 비교해 주셨으면 합니다.

우선 델파이가 리소스 관리의 뛰어나다는걸 알지만, 폼을 직접 생성할 이유가

없다면 델파이 내부에서 생성되도록 두는 것이 좋을거 같아서..



그리고 한가지 더 질문드립니다..



에러발생 Cannot focus disabled or invisible window

사용환경 : 델파이4 / Windows 98 / MS-SQL 7.0

에러 메시지 : Cannot focus disabled or invisible window



MDIChild(예로 Form1)폼에서 어느 특정한 edit에서 더블클릭시 다른

MDIChild폼(예로 Form2)을 불러온후

어느 결과값을 선택하면 Form2는 close되고 그 결과값을 Form1 edit로 입력되게

하려고 합니다..

그런데 여기서 Form1의 edit를 클릭하면 에러가 뜨고 Form2 어느 특정한 값을 선택하고

close할때 다시 한번 에러가 듭니다..

에러메세지 박스가 뜨면 확인을 누르고 나면 결과값을 전달이 되긴 되는데...

Cannot focus disabled or invisible window 이런 에러 메세지가 뜹니다..

focus 이동의 문제가 있긴 있는거 같은데 어디서 손을 봐야 할지...

form1,form2는 Available forms 들 입니다..



form1 edit 클릭 이벤트 ....

Application.CreateForm(TForm2, Form2);

form2.formstyle := fsNormal;

form2.visible := False;

form2.ShowModal;



도움부탁드립니다..도움주실줄 믿고 그럼 이만..

감사합니다..꾸벅~~~

경기도 안산에서 지영일 올림







2  COMMENTS
  • Profile
    박준영 2001.01.06 20:13
    답변은 아닙니다만 도움이 되실만한 내용인거 같아서 주제넘게시리...



    과거(몇달안됨)에는 MDI프로그램을 만들때 메인화면과 서브화면들을 만들어

    말씀하신 방법대로 처리하곤 했죠...장단점이 있긴하지만



    단점중에 실행파일의 크기와 어떤화면이 변경되더라고 전체 프로그램을

    업그레이드를 통해 다시 업어쳐야 하는 부담이 있었죠



    요즘은 서브폼은 DLL구조로 많이 갑니다. resource측면에서 상당한 효과가 있죠

    자료실이나. 팁부분의 내용을 한번 찾아보심이 어떨지...

    --------------------------------------------------------







    지영일 wrote:

    > 기존의 프로젝트들은 보통 폼 비중을 Auto-create forms는 10%

    > Available forms를 거의 90%정도 했던거 같습니다.

    > 그런데 우연히 어느책에서 본건데 Createform을 직접 호출하면 커다란 최적화를

    > 기대할수 없다고 나오던데요..

    > 그럼 메인폼을 제외한 나머지를 Available forms으로 해야 하나요?

    > 보통 40~50개 정도의 폼들이 있다고 가정할때 비중을 어떻게 해야 할지.

    > Auto-create forms와 Available forms 장단점을 비교해 주셨으면 합니다.

    > 우선 델파이가 리소스 관리의 뛰어나다는걸 알지만, 폼을 직접 생성할 이유가

    > 없다면 델파이 내부에서 생성되도록 두는 것이 좋을거 같아서..

    >

    > 그리고 한가지 더 질문드립니다..

    >

    > 에러발생 Cannot focus disabled or invisible window

    > 사용환경 : 델파이4 / Windows 98 / MS-SQL 7.0

    > 에러 메시지 : Cannot focus disabled or invisible window

    >

    > MDIChild(예로 Form1)폼에서 어느 특정한 edit에서 더블클릭시 다른

    > MDIChild폼(예로 Form2)을 불러온후

    > 어느 결과값을 선택하면 Form2는 close되고 그 결과값을 Form1 edit로 입력되게

    > 하려고 합니다..

    > 그런데 여기서 Form1의 edit를 클릭하면 에러가 뜨고 Form2 어느 특정한 값을 선택하고

    > close할때 다시 한번 에러가 듭니다..

    > 에러메세지 박스가 뜨면 확인을 누르고 나면 결과값을 전달이 되긴 되는데...

    > Cannot focus disabled or invisible window 이런 에러 메세지가 뜹니다..

    > focus 이동의 문제가 있긴 있는거 같은데 어디서 손을 봐야 할지...

    > form1,form2는 Available forms 들 입니다..

    >

    > form1 edit 클릭 이벤트 ....

    > Application.CreateForm(TForm2, Form2);

    > form2.formstyle := fsNormal;

    > form2.visible := False;

    > form2.ShowModal;

    >

    > 도움부탁드립니다..도움주실줄 믿고 그럼 이만..

    > 감사합니다..꾸벅~~~

    > 경기도 안산에서 지영일 올림

    >

    >

    >

  • Profile
    parkisu 2001.01.06 09:31
    지영일 wrote:

    > 기존의 프로젝트들은 보통 폼 비중을 Auto-create forms는 10%

    > Available forms를 거의 90%정도 했던거 같습니다.

    > 그런데 우연히 어느책에서 본건데 Createform을 직접 호출하면 커다란 최적화를

    > 기대할수 없다고 나오던데요..

    > 그럼 메인폼을 제외한 나머지를 Available forms으로 해야 하나요?

    > 보통 40~50개 정도의 폼들이 있다고 가정할때 비중을 어떻게 해야 할지.

    > Auto-create forms와 Available forms 장단점을 비교해 주셨으면 합니다.

    > 우선 델파이가 리소스 관리의 뛰어나다는걸 알지만, 폼을 직접 생성할 이유가

    > 없다면 델파이 내부에서 생성되도록 두는 것이 좋을거 같아서..

    >

    > 그리고 한가지 더 질문드립니다..

    >

    > 에러발생 Cannot focus disabled or invisible window

    > 사용환경 : 델파이4 / Windows 98 / MS-SQL 7.0

    > 에러 메시지 : Cannot focus disabled or invisible window

    >

    > MDIChild(예로 Form1)폼에서 어느 특정한 edit에서 더블클릭시 다른

    > MDIChild폼(예로 Form2)을 불러온후

    > 어느 결과값을 선택하면 Form2는 close되고 그 결과값을 Form1 edit로 입력되게

    > 하려고 합니다..

    > 그런데 여기서 Form1의 edit를 클릭하면 에러가 뜨고 Form2 어느 특정한 값을 선택하고

    > close할때 다시 한번 에러가 듭니다..

    > 에러메세지 박스가 뜨면 확인을 누르고 나면 결과값을 전달이 되긴 되는데...

    > Cannot focus disabled or invisible window 이런 에러 메세지가 뜹니다..

    > focus 이동의 문제가 있긴 있는거 같은데 어디서 손을 봐야 할지...

    > form1,form2는 Available forms 들 입니다..

    >

    > form1 edit 클릭 이벤트 ....

    > Application.CreateForm(TForm2, Form2);

    > form2.formstyle := fsNormal;

    > form2.visible := False;

    > form2.ShowModal;

    >

    > 도움부탁드립니다..도움주실줄 믿고 그럼 이만..

    > 감사합니다..꾸벅~~~

    > 경기도 안산에서 지영일 올림

    >

    >

    >

    안녕하세요. 새해 복많이 받으세요.

    저같은 경우 대부분 동적으로 폼을 생성하는데, 주된 이유는 메모리문제이구요. 폼이 많아질수록 자동생성폼이 많으면 아무래도 실행하는데 속도가 떨어지겠죠? 자동생성폼의 경우는 폼만들고 해제하는 코드가 필요없으니까 관리하기에는 좀 편할 듯 싶구요.

    제가 모르는 다른 이유들도 많이 있으리라 생각합니다.이번 기회에 다시 한번 찾아봐야 겠군요.



    그리고 에러메세지의 경우는 Disable되었거나 NonVisible로 설정된 컨트롤에 포커스를 주려고 했기때문인데요. 아마도 Form2가 생성될 때 문제가 있는 것 같습니다. 혹시

    TPageControl, TNoteBook과 같은 컴포넌트를 올려놓으신 것은 아닌지요. Active된 Page가 아닌 곳에 있는 컨트롤에 포커스를 주신것은 아닌지요? 천천히 살펴보시면 찾으실 수 있으리라 생각합낟.