Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10765] Re:[질문]showmodal -> show로 변경할때 의문사항...
박지훈.임프 [cbuilder] 1728 읽음    2006-06-22 18:30
0.
한번에 질문은 하나씩 해주세요.

1.
아래의 코드는,
if(cust1F = nil ) or not (cust1F.HandleAllocated) then
  cust1F := Tcust1F.Create(Self)
실제 실행중에는 웬만해서는 이게 문제가 되는 경우는 없겠지만, 별로 권장할 만한 코드는 아니네요.
위 코드에서 폼의 HandleAllocated를 검사하는 것은 말 그대로 폼은 생성되었는데 윈도우 핸들이 생기기 직전의 경우가 있을 수 있어서, 아주 특정한 상황에서는 폼이 두번 생성되고 하나의 포인터를 잃어버리는 경우가 있을 수도 있습니다.

2.
짐작하시겠지만 상속을 이용해야 합니다.
그냥 TForm 폼을 상속받은 폼에서는 힘듭니다. 저같은 경우에는 TForm을 상속받은 다른 클래스 타입으로 폼을 생성시키는데, 그 특수 폼 클래스에서 파괴자를 오버라이드하든지 해서 합니다. 하지만 이렇게 하려면 폼 위저드를 직접 만들어야 하므로 폼이 열개 이내의 간단한 애플리케이션을 만들려고 하는 목적으로는 배보다 배꼽이 더 큽니다. 저는 업무용 프로그램 프레임워크를 만들면서 자동화하는 폼 위저드를 만들었습니다.

3.
데이터베이스 연결을 닫아주려면 폼의 OnClose에서 해주면 되겠지요.

4.
showmodal에서 show로 바꾼다는 게 무슨 뜻인지 이해가 잘 안되네요.


이승근 님이 쓰신 글 :
: 어떤 메뉴를 호출하면 form.show;를 이용하여 호출하는 것을 공부해서 실제 프로그램에 접속시켜봤습니다...
: 그랬더니 아마도 실력이 없어서 그랬었겠지만 입력한 데이터가 없어지기도 하고 이런저런 문제가 발생해 그냥 하나하나 사용하고 정리할 수 있는 showmodal형식으로 바꿨습니다...
: 문제는 한 모듈을 사용할때 다른 모듈을 사용할 수 없다는 점...
: 그래서 다시 show를 사용하고 합니다...
: 메인화면의 폼스타일을 fsMDIform으로 설정하고 다른 메뉴부분 중 show에 해당하는 메뉴의 폼스타일은 fsMDIChild로 변경했습니다...
: 그리고 메뉴에서 호출할때 아래처럼 설정하였습니다...
:
:   if(cust1F = nil ) or not (cust1F.HandleAllocated) then
:     cust1F := Tcust1F.Create(Self)
:   else
:     cust1F.SetFocus;
:   cust1F.Show;
:   if cust1F.WindowState = wsMinimized then
:      cust1F.WindowState := wsNormal;
:
: 또, 호출된 서브폼을 닫을때는 아래와 같이 설정하였습니다...
:   Query1.Close;
:   cust1F := nil ;
:   Action := caFree;
:
: 메인폼이 닫힐때는 아래와 같이 설정하였습니다...
:   Action := caFree;
:
:
: 뭐 이러니깐 잘 작동은 되는데 몇가지 의문이 생기더군요...
:
: 1. 위 설정형식들이 맞는지.. 혹여 빠진것은 없거나 잘못 설정한 것은 없는지...
:
: 2. 다른 서브폼을 호출할때마다 위 호출문을 서브폼 이름만 바꿔서 기술해야 하는데 저것을 서브프로시져를 이용하여 사용할있는 방법은 없는지...
: 예를 들어
: 변수(m_formname) := 폼이름(cust1F);
: 호출프로시져;
: 이런 형태로 구현할수는 없는가요?? 가능하다면 변수는 어떻게 선언하면 되고 위 문장은 어떻게 기술하면 되는지요...
:
: 3. 폼을 여러개 열어놓고 작업하다가 프로그램 종료버튼을 누르게 되면 열렸던 폼과 그안에 데이터베이스 파일들을 자동으로 닫아주고 나가야 할텐데 어떻게 구현을 하면 되는것인지(어떠한 폼이 열렸는지 무슨 데이터(주로 Query를 사용함)가 열려있는지 알수가 없슴!!!)...
: 아니면 close; 문장만 기술해주면 알아서 모두 닫아주고 빠져나가는지....
:
: 4. 또, showmodal에서 show로 바꿀때 특별한 체크사항은 없는지요...
:
: 아직도 초보에서 벗어나지 못해서 기초적인것도 모르는게 많습니다...
: 아시는 분들은 많이많이 가르쳐 주십시요...^^

+ -

관련 글 리스트
10757 [질문]showmodal -> show로 변경할때 의문사항... 이승근 1550 2006/06/21
10765     Re:[질문]showmodal -> show로 변경할때 의문사항... 박지훈.임프 1728 2006/06/22
10766         Re:Re:[질문]showmodal -> show로 변경할때 의문사항... 이승근 1488 2006/06/22
10767             Re:Re:Re:[질문]showmodal -> show로 변경할때 의문사항... 박지훈.임프 1889 2006/06/23
10771                 Re:Re:Re:Re:[질문]showmodal -> show로 변경할때 의문사항... 이승근 1708 2006/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.