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
[57708] Re:투명 폼 뒤의 컴포넌트 힌트 나오게 하는 방법
장성호 [nasilso] 1090 읽음    2009-07-22 18:31
투명폼 뒤에 있는 폼에서 마우스(Cursor)위치의 Control을 찾는 방법에  혹 문제가 있는것 아닌가요?


[WinControl의 Controls배열에 대해..]

TForm을 포함하여  TWinControl은 (TPanel , TPageControl , TButton...등)은
Controls라는 배열과 ControlCount라는 프로퍼티가 있습니다.

이 배열에는  WinControl 을 parent로 가진 GraphicControl이나 WinControl이 들어있습니다.

예를들어 Form위에 Panel1 , Panel2 가 있구  Panel1 위에  Button1 이 있다면
Form->Controls 배열에는 Panel1 과 Panel2가 있구
Panel1->Controls 배열에 Button1이 있는것이죠


[Controls배열에 담긴 순서]
그리고 Controls배열에 담겨진 순서는 
GraphicControl( TLabel , TBevel , TSpeedButton , TImage...) 이 앞쪽에 있구
WinControl이 뒷쪽에 있습니다.

그러니까 화면의 맨 앞쪽에 보이는 컨트롤이
Controls배열의 맨 마지막 index에 있는것이죠

폼의 경우는...
Form->Controls[Form->ControlCount -1];


[Cursor위치의 Control찾기]
  위 Controls배열을 이용하여 Cursor(마우스)위치의 Control을 찾을수 있습니다.
 
1) 위에 설명했듯이 맨 앞쪽에 있는것이 배열 맨 마지막 Index에 있으니
  찾을때 뒷쪽에서 부터 찾아야 겠죠

2) 그리고 또 중요한것은
   Form,Frame , Panel, PageControl 등의 다른 Control을 포함하는 Control의 경우
   현재 Cursor아래 Control은 포함하고 있는 Control중에 하나일수도 있겠죠~!

   그러니까 Child-Control이 있는경우에는 다시 반복해야겠죠

3) 그리고 Control의 좌표는 Parent-Control에 상대 좌표이므로
    ScreenToClient를 잘 해야하구요..


그럼..



박진수 님이 쓰신 글 :
: 안녕하세요
:
: 현재 폼 위에 패널이 여러개 있는 상황이고, 그 패널들 위에 투명한 폼이 얹어져 있습니다.
:
:
: 제가 원하는 기능은 마우스가 패널에 올라갔을때 패널에 해당하는 지정된 힌트가 나오는건데요.
:
: 투명폼 좌표 아래에 패널이 있는지 없는지 확인해서 있으면 폼에 힌트가 나오게 했습니다.
:
: 그런데 이 방법은 패널들이 겹쳐있으면 사용이 안되더군요.
:
: ex)A패널이 B패널을 반쯤 덮고 있는 상황에서,
:
: A패널의 힌트가 나오고 있는데 마우스를 움직여서 바로 B패널로 이동하면 B패널의 힌트가 안나오더군요.
:
: 아무것도 없는곳에 갔다가 B패널에 가면 힌트가 제대로 나오는데 바로 갔을때만 이런 현상이 나오더군요.
:
: 이거 어떻게 해결 할 수 있는 방법이 있을까요?

+ -

관련 글 리스트
57705 투명 폼 뒤의 컴포넌트 힌트 나오게 하는 방법 박진수 875 2009/07/22
57708     Re:투명 폼 뒤의 컴포넌트 힌트 나오게 하는 방법 장성호 1090 2009/07/22
57710         Re:Re:투명 폼 뒤의 컴포넌트 힌트 나오게 하는 방법 박진수 1234 2009/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.