2009-09-21 2 views
2

보이지 않는 컨트롤 (TCustomControl에서 파생 된)을 만들고 싶지만 정상적인 이벤트에 반응합니다. 사용자 정의 요소 위에 마우스를 올려 놓았을 때 힌트를 표시하고 싶습니다. 페인트 메서드를 재정의하고 비워두면 작업을 수행 할 수 있지만 불행히도 구성 요소가있는 곳에 사각형이 그려지는 것으로 생각했습니다.컨트롤을 보이지 않게 만들지 만 마우스 이벤트에 반응하는 방법은 무엇입니까?

컨트롤을 완전히 보이지 않게하려면 어떻게해야합니까?

답변

9

TCustomControl 대신 TGraphicControl에서 상속받을 수 있으며 페인트 처리기를 비워 둘 수 있습니다. 아무것도 그려지지 않을 것이다.

창 컨트롤이 필요한 경우 테두리가없고 부모 배경을 사용해야합니다. 방법에 대한 정보는 this question을 참조하십시오. 테두리 스타일 비트를 제거하려면 CreateParams()을 다시 정의해야 할 수도 있습니다.

+0

+1 평소와 같이 좋은 대답입니다. TGraphicControl을 사용하면 나에게 도움이된다. 감사! – jpfollenius

1

컨트롤이 표시되지 않고 부모의 클릭 메시지를 처리하는 경우 컨트롤의 사각형에있는 사람들에 대한 간단한 테스트를 수행하고 PostMessage를 사용하여 메시지를 컨트롤에 전달합니다. 이러한 코드는 빈 페인트 핸들러보다 읽기 쉽습니다. Bri

+0

궁극적으로, 당신은'TGraphicControl'이 어떻게 작동하는지 정확하게 기술했습니다. 창 핸들이 없으므로 부모가 관련 마우스 및 페인트 메시지를 감지하고 전달합니다. –

관련 문제