질문 제목이 좀 이상하네요...ㄷ
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);
}
}
}
}
//---------------------------------------------------------------------------