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
[51534] 버튼 컴포넌트를 만들고 있습니다.
skjoon [skjoon] 1184 읽음    2007-12-08 11:00
TCustomControl을 상속받아서 간단한 버튼을 만들었습니다.
MouseEnter, MouseLeave, Click 등의 이벤트 처리를 구현하였는데..
사용하다보니 작은(?)문제가 생겼습니다.
클릭해서 메시지박스를 띄운 후에 확인 버튼을 클릭하면..
(화면 중앙에서 실행된 메시지 박스의 확인버튼을 클릭하느라 커서는 이미 버튼을 벗어난 상태이구요..)
아직도 제가 만든 버튼은 마우스가 Enter인 상태로 남아있습니다.
XiButton을 참조해서 만들었는데.. 그녀석은 그런 현상이 없습니다.

혹시 저와 비슷한 경험을 하신분이 계시다면 도움을 부탁드리겠습니다.

그리고 또 하나.. XiButton의 소스인데요.. 파스칼..

C++ 코드로 어떻게 바꿔야 하는지 궁금해서요..
----------------------------------------
procedure TXiButton.CMDialogKey(var msg: TCMDialogKey);
begin
  with msg do begin
    if  (((CharCode = VK_RETURN) and FFocused) or
         ((CharCode = VK_ESCAPE) and FCancel)) and
         (KeyDataToShiftState(KeyData) = []) and CanFocus then
    begin
      Click;
      Result := 1;
    end else if (FDefault and (CharCode = VK_RETURN) and CanFocus) then begin
      Click;
      Result := 1;
    end
    else inherited;
  end;
end;
----------------------------------------------------------
6 Line의 (KeyDataToShiftState(KeyData) = []) 입니다.
Forms.hpp 파일에 보니 TShiftState 를 반환하는 것 같은데요..
반환되는 결과 중에 ssShift, ssCtrl, ssAlt 가 모두 포함되지 않음을 확인하는 것 같습니다.
단순하게  결과.Contains(ssShift), 결과.Contains(ssCtrl), 결과.Contains(ssAlt) 를 일일이 비교해야 하나요?

에효.. ^^;; 좋은 주말들 되세요.

+ -

관련 글 리스트
51534 버튼 컴포넌트를 만들고 있습니다. skjoon 1184 2007/12/08
51537     Re:버튼 컴포넌트를 만들고 있습니다. 열씸! 1646 2007/12/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.