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
[75519] Re:Re: 간단한 걸 어렵게 생각하네요.
ㅇㅇ [] 2276 읽음    2019-08-14 10:16
mouseleave 일 때만 좌표를 잡아서 시도해봤을 때 뭔가 불완전한 느낌이 들었었는데 leave, enter 둘 다 좌표를 계산해서 잡으니 완벽하네요. 조언 감사합니다:)

빌더(TWx) 님이 쓰신 글 :
: ㅇㅇ 님이 쓰신 글 :
: : panel에서 마우스가 나가면 패널의 height가 1/3으로 줄어들고 마우스가 들어오면 패널의 높이가 원래대로 돌아오는 기능을 구현하려 합니다. 패널 컴포넌트는 TMS 컴포넌트 중 하나인 TAdvSmoothPanel을 사용하고 있습니다.
: : 처음엔 mouseenter와 mouseleave 이벤트를 사용하여 이 기능을 구현하려 하였습니다.
: : 하지만 패널에 들어왔을 때만 이벤트가 적용되고 패널의 자식 컴포넌트에 마우스가 들어왔을 때는 동작을 안하더군요.
: : 패널의 자식 컴포넌트에도 이벤트를 적용시키려면 어떤 이벤트를 사용해야 하나요?
: :
: : 다음은 TAdvSmoothPanel의 마우스 관련 이벤트입니다.
: : -OnMouseActivate
: : -OnMouseDown
: : -OnMouseEnter
: : -OnMouseLeave
: : -OnMouseMove
: : -OnMouseUp
: :
: : mouseover 이벤트는 이 패널에는 존재하지 않네요.
:
:
:
: 답변:
:
:
: 간단한 걸 어렵게 생각하네요.
:
: : -OnMouseEnter
: : -OnMouseLeave
:
: 두개의 핸들러 안에서... 윈도우즈 API 이용해서 스크린 좌표기준의 마우스 포인트 위치를 얻어서...
: 그 위치를 패널의 클라이언트 Rect로 변환해서...
:
: 위에서 얻은 마우스 포인트의 위치가 Panel의 ClientRect 영역 안에 있느냐, 아니냐로
: 로직을 구현하면 간단하게 처리할 수 있지요.
:
: MouseEnter가 발생했냐 아니면 MouseLeave가 발생했냐로 판단하지 말고...
: 두개의 이벤트가 발생했을 때의 마우스 포인트 위치가 Panel의 ClientRect 영역 안에 있냐 없냐로 판단하면 됌.
:
:
:

+ -

관련 글 리스트
75506 패널의 자식 컴포넌트에도 이벤트가 적용되게 하려면 어떻게 해야하나요? ㅇㅇ 2183 2019/08/09
75511     Re: 간단한 걸 어렵게 생각하네요. 빌더(TWx) 2221 2019/08/10
75519         Re:Re: 간단한 걸 어렵게 생각하네요. ㅇㅇ 2276 2019/08/14
75508     Re:패널의 자식 컴포넌트에도 이벤트가 적용되게 하려면 어떻게 해야하나요? 아루스 2231 2019/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.