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
[72240] Re:툴버튼 팝업메뉴
StarWagon [starwagon] 3523 읽음    2015-01-09 20:05
툴버튼 대신 폼에 패널 하나랑 타이머만 올리고 테스트 해봤습니다.

아래 코드는 툴버튼 마우스 엔터 이벤트에 타이머를 작동한 뒤 팝업메뉴를 툴 버튼의 가운데에 수동으로 띄우고
타이머에서는 현재 마우스 위치를 감지하면서 툴버튼이나 띄어진 팝업메뉴를 벗어나면 팝업메뉴를 닫고, 타이머를 끄는 내용입니다.

TPoint ToolBtnPos;
void __fastcall TForm1::Panel1MouseEnter(TObject *Sender)
{
	ToolBtnPos.X=Panel1->Left+Form1->Left+8; // ToolBtn의 실제 화면상(모니터상)의 Left값
	ToolBtnPos.Y=Panel1->Top+Form1->Top+30; // ToolBtn의 실제 화면상의 Top값

	Timer1->Enabled=true;
	PopupMenu1->Popup(Panel1->Width/2+ToolBtnPos.X,Panel1->Height/2+ToolBtnPos.Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
	if (!((ToolBtnPos.X <= Mouse->CursorPos.X && Mouse->CursorPos.X <= ToolBtnPos.X+Panel1->Width)
	  &&  (ToolBtnPos.Y <= Mouse->CursorPos.Y && Mouse->CursorPos.Y <= ToolBtnPos.Y+Panel1->Height)
	// 마우스가 툴버튼 안에 있는지 확인하는 조건문
	  ||  (PopupMenu1->PopupPoint.X <= Mouse->CursorPos.X && Mouse->CursorPos.X <= PopupMenu1->PopupPoint.X+100)
	  &&  (PopupMenu1->PopupPoint.Y <= Mouse->CursorPos.Y && Mouse->CursorPos.Y <= PopupMenu1->PopupPoint.Y+200)))
	// 마우스가 PopupMenu 안에 있는지 확인하는 조건문
	{
		PopupMenu1->CloseMenu();
		Timer1->Enabled=false;
	}
}
//---------------------------------------------------------------------------


제가 확실히 구하는 방법을 몰라서 상수로 입력한 값이 있는데
8 은 폼 테두리 크기고,
30 은 폼의 Caption이 들어가는 부분의 크기 이며,
100 은 PopupMenu의 Width 가 될 값이고,
200 은 PopupMenu의 Height 가 될 값입니다.

요 네개의 상수만 구할 수 있으면 원하시는대로 구현 될듯 싶습니다.

도움이 되었으면 하네요.


궁금이... 님이 쓰신 글 :
: 툴버튼에 팝업메뉴를 연결했습니다.
: 근데 툴버튼을 클릭해야 팝업메뉴가 보이잖아요
: 혹시 툴버튼에 마우스 오버되면 팝업메뉴가 보이고 리브되면 안보이게 할 수 없나요?

+ -

관련 글 리스트
72227 툴버튼 팝업메뉴 궁금이... 3329 2015/01/08
72240     Re:툴버튼 팝업메뉴 StarWagon 3523 2015/01/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.