|
우~아~
자~알 된다~ ^^
감사함다..
역쉬.. 도사님들은 달라~
감사함다.
skjoon 님이 쓰신 글 :
: 마우스다운 이벤트보다 팝업메뉴가 먼저 실행되는 것 때문에 그럴겁니다.
: 님의 코드를 약간 바꿔보았습니다.
:
: 먼저 LeftView의 PopupMenu 속성을 NULL로 주시고,
: PMenu의 AutoPopup속성을 false로 주세요.
:
: //--------------------------------------------------------------------------
: void __fastcall TLeftView::TreeMouseDown(TObject *Sender,
: TMouseButton Button, TShiftState Shift, int X, int Y)
: {
: TTreeNode* pNode = Tree->GetNodeAt(X, Y);
: if(Button == mbRight) {
: //########################
: TPoint Pnt(X, Y);
: Pnt = ((TTreeView*)Sender)->ClientToScreen(Pnt);
: //########################
:
: if(!pNode) { // 현재 트리노드가 선택되지 않았다.
: if(Tree->Items->Count == 0) { // 노드 자체가 아무것도 없다. (팝업을 띄움)
: PMenu->PMDelete->Enabled = false; // 노드가 없으니 삭제메뉴 필요 없음
: PMenu->PMModify->Enabled = false; // 노드가 없으니 변경메뉴 필요 없음
: //########################
: PMenu->Popup(Pnt.x, Pnt.y);
: //########################
: }
: } else { // 트리노드가 선택되었다. 즉, 하나 이상의 트리노드가 존재한다. (팝업을 당근 띄움)
: PMenu->PMDelete->Enabled = true; // 노드가 있으니 삭제메뉴 사용가능
: PMenu->PMModify->Enabled = true; // 노드가 있으니 변경메뉴 사용가능
: //########################
: PMenu->Popup(Pnt.x, Pnt.y);
: //########################
: }
: }
: }
: //----------------------------------------------------------------------
:
: 컴파일을 해보지는 않았지만.. 이런 방법으로 하셔도 될 것 같습니다.
:
|