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

C++빌더 Q&A
C++Builder Programming Q&A
[5272] Re:[질문] 거시기 메인폼의 단축키를...
박지훈.임프 [cbuilder] 2779 읽음    2001-02-08 03:01
척척박사 님이 쓰신 글 :
: 안녕하세요
:
: 거시기 질문이 있어서 올립니다.
:
: 매인폼에는 메인메뉴를 생성해놓고 거기에 단축키를
: 지정해놓았습니다.
:
: File->New (F1) 이런식으로 단축키 정의가 되어있다고 합시다
:
: 이 상태에서 MainForm 의 FormShow 이벤트에서
: 동적으로 폼을 생성하여 프로그램 시작시 보여지게 했습니다.
: 그런데 이 동적생성된 폼에서 F1 키를 누르면 매인폼의
: New 메뉴를 실행하는데 이를 저지? 하려고합니다.
: 해결방법이 없을까요?
: 참고로 동적생성된 폼은 스플래쉬 화면과 같은 역할을 하거든요
: 답변 바랍니다.
: 스플래쉬 화면같은 역할을 하기때문에 어떠한 동작도 되지
: 않아야 하는데 왜 단축키를 누르면 메인폼의 이벤트가
: 실행되어지는건가요?


임펠리테리입니다.

메인폼의 핫키는 모달이 아닌 모든 다른 폼들에 동일하게 적용됩니다. 그러므로 Show() 메소드로 띄운 폼들에서는, 메인폼에서 정의한 핫키가 다 먹히게 됩니다. 실제로 빌더 자체도, F1 키를 누르면 상단에 있는 메인폼의 F1 키 핸들러가 작동하는 것을 볼 수 있습니다.

그런데.. 왜 메인폼이 뜨기까지 스플래시가 남아있게 되지요? 만약 스플래시를, 타이머를 써서 사라지게 하는 거라면 별로 좋지 않은 방법입니다. 어쨌든, 특정 폼에서는 핫키가 안먹게 하고 싶다면, 약간 편법을 써볼 수는 있습니다. 핫키의 핸들러(메인메뉴 아이템의 핸들러)들에서 Screen->ActiveForm이 스플래시폼과 같으면 리턴시켜버리면 되지요.

그럼 참고하시길...


+ -

관련 글 리스트
5271 [질문] 거시기 메인폼의 단축키를... 척척박사 2628 2001/02/08
5272     Re:[질문] 거시기 메인폼의 단축키를... 박지훈.임프 2779 2001/02/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.