자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 델파이 중복 폼 방지 질문드립니다.
2019.05.23 10:51
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
IF NOT Assigned(Form5) THEN
begin
Form5 := TForm5.Create(self);
exit;
end;
이렇게 했습니다. Form5는 자식폼이고 부모폼도 있습니다.
Form5 실행 후 다시 Form5 실행하려고하면 실행이 안되서 해결했다 했는데
Form5를 닫고 다시 Form5을 실행하면 뜨지가 않습니다. exe 실행시 Form5가 한번만 실행이 되는게 아니라 하나만 실행이 되게 하고싶습니다. 어떤식으로 해야하나요..?
번호 제목 글쓴이 날짜 조회 수
공지
[프로그래밍 강의] 2021.6~2021.12
관리자 2015.01.22 15767
공지
유용한 관련 사이트
관리자2 2014.03.20 54582
공지
본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다.
관리자 2012.01.10 97992
Delphi 델파이 중복 폼 방지 질문드립니다.
2019.05.23 10:51
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
IF NOT Assigned(Form5) THEN
begin
Form5 := TForm5.Create(self);
exit;
end;
이렇게 했습니다. Form5는 자식폼이고 부모폼도 있습니다.
Form5 실행 후 다시 Form5 실행하려고하면 실행이 안되서 해결했다 했는데
Form5를 닫고 다시 Form5을 실행하면 뜨지가 않습니다. exe 실행시 Form5가 한번만 실행이 되는게 아니라 하나만 실행이 되게 하고싶습니다. 어떤식으로 해야하나요..?
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [프로그래밍 강의] 2021.6~2021.12 | 관리자 | 2015.01.22 | 15767 |
공지 | 유용한 관련 사이트 | 관리자2 | 2014.03.20 | 54582 |
공지 | 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. | 관리자 | 2012.01.10 | 97992 |
Form5는 TForm5의 인스턴스 변수입니다. 즉 TForm5를 생성한 객체를 담고있습니다.
Assigned() 함수는 객체가 할당되어 있는지 확인하는 함수입니다.(Form5 <> nil 과 동일)
즉 할당되어 있지 않으면(not Assigned) 인스턴스 변수에 객체를 생성해 할당하는 코드를 동작하도록 작성하셨네요.
문제는 폼을 닫으면 그 다음부터 폼이 표시되지 않을 수 있습니다.
그래서, 폼을 닫을때 인스턴스 변수를 초기화 하는 코드가 필요합니다.
일반적으로 폼의 클로즈 이벤트(OnClose)에 아래와 같이 구현합니다.
procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Form5 := nil;
end;