음..
1) TreeView1MouseDown 코드를 모두 지우시구요
2) TreeView1의 PopupMenu 라는 프로퍼티가 있습니다.
designtime도 좋구 코딩으로도 좋구
TreeView1->PopupMenu 에 PopupMenu1을 연결하세요
그러면 아무 코딩필요없으 원하는 위치에 Popupmenu가 뜰것입니다.
3) 만약 TreeView의 마우스 오른쪽 버튼 클릭시 해당위치의 Node가 선택되게 하려면..
TreeView의 RightClickSelect라는 프로퍼티를 true로 해주시면 됩니다.
(해당 프로퍼티가 없는 구버젼의 경우엔 Select관련 코딩은 해주셔야 하구요)
그럼..
압9정 님이 쓰신 글 :
: 질문 제목이 좀 이상하네요...ㄷ
:
: TreeNode에서 Node에서 마우스 오른쪽을 클릭하면 PopupMenu1->Popup(X, Y); 을 하여 클릭한 위치에서 Popup을 띄우고 싶습
:
: 니다. 지금 밑에 있는 코드로 실행하면 X와 Y의 값은 TreeView가 기준이지만 Popup(X, Y) 함수에서 적용되는 X, Y값은 기준이 윈
:
: 도우가 되서 첨부한 사진처럼 Popup이 뜹니다. (이해가 가실련지...)
:
: 제가 하고 싶은 것은 PopupMenu1->Popup(X, Y); 함수에서 적용되는 X, Y값을 TreeView 기준으로 하는 것 입니다.
:
: 지금 만약 X = 10, Y = 10 이라면 클릭된 위치는 TreeView(0,0) 에서 X 축으로 10, Y 축으로 10 간 것인데,
:
: PopupMenu1->Popup(X, Y); 함수는 윈도우 모니터 (0,0)을 기준으로 X축으로 10, Y축으로 10만큼 움직인 위치에 Popup창이 띄워
:
: 지는 것이 문제입니다. 이것을 PopupMenu1->Popup(X, Y); 함수도 TreeView(0,0) 에서 X 축으로 10, Y 축으로 10 간 위치에서 Po
:
: pup창을 띄우고 싶습니다. (이해하셧기를 바랍니다.ㅠㅠ)
:
: 결론은 PopupMenu1->Popup(X, Y); 함수가 TreeView(0,0) 에서 부터 X축. Y축 만큼 이동한 위치에서 Popup창을 띄워줬으면 합
:
: 니다. 방법을 아시거나 도움되는 말씀도 괜찬습니다. 부디 지식을 나누어 주세요.ㅜ
:
:
void __fastcall TfrmMain::TreeView1MouseDown(TObject *Sender, TMouseButton Button,
: TShiftState Shift, int X, int Y)
: {
: int i;
:
: if ( Button == mbRight )
: {
: TTreeNode* pNode = TreeView1->GetNodeAt(X, Y);
:
: if(pNode)
: {
: if(pNode->Parent)
: {
: TreeView1->Selected = pNode;
: PopupMenu1->Popup(X, Y);
: }
: }
: }
: }
: //---------------------------------------------------------------------------