|
답변 감사드립니다..^^
다른 루틴에서 충돌이 날수도 있다고 하신 유영인님의 말씀대로 트리1과 트리2에서
사용된 루틴을 비교해 봤는데 저의 모자른 능력으론.. 충돌날 만한곳이 없는거 같아서요..
이리해 보고 저리 해봐도 ..해답이 안나와염.....
귀찮으시겠지만 아래에 소스좀 봐 주세요...ㅠ_ㅠ
bool Check1,Chek2;
void __fastcall TGroupMove::TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
if(TreeView1->Selected == NULL ) return;
TNodeAttachMode AttachMode;
THitTests HT = TreeView1->GetHitTestInfoAt(X, Y);
TTreeNode *Node = TreeView1->GetNodeAt(X, Y);
if( HT.Contains(htOnItem) || HT.Contains(htOnIcon) || HT.Contains(htNowhere) || HT.Contains(htOnIndent) )
{
if( HT.Contains(htOnItem) || HT.Contains(htOnIcon) )
AttachMode = naAddChild;
else if( HT.Contains(htNowhere) )
AttachMode = naAdd;
else if( HT.Contains(htOnIndent) )
if(!Node) return;
if(Node == myNode)
{
Application->MessageBox("같은 노드로는 이동 안됨.", "Error",MB_ICONERROR|MB_OK);
return;
}
AttachMode = naInsert;
TreeView1->Selected->MoveTo(Node, AttachMode);
}
}
TreeView1->FullExpand();
}
//---------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
if(Check1)
Accept = true;
else Accept = false;
}
//-----------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView1StartDrag(TObject *Sender,
TDragObject *&DragObject)
{
Check1 = true ;
}
//------------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView1EndDrag(TObject *Sender,
TObject *Target, int X, int Y)
{
Check1 = false;
}
//----------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView2DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
if(TreeView2->Selected == NULL ) return;
TNodeAttachMode AttachMode;
THitTests HT = TreeView2->GetHitTestInfoAt(X, Y);
TTreeNode *NNode = TreeView2->GetNodeAt(X, Y);
if( HT.Contains(htOnItem) || HT.Contains(htOnIcon) || HT.Contains(htNowhere) || HT.Contains(htOnIndent) )
{
if( HT.Contains(htOnItem) || HT.Contains(htOnIcon) )
AttachMode = naAddChild;
else if( HT1.Contains(htNowhere) )
AttachMode = naAdd;
else if( HT1.Contains(htOnIndent) )
if(!NNode) return;
if(NNode == myNode1)
{
Application->MessageBox("같은 노드로는 이동 안됨.", "Error",MB_ICONERROR|MB_OK);
return;
}
AttachMode = naInsert;
TreeView2->Selected->MoveTo(NNode, AttachMode);
}
}
TreeView2->FullExpand();
}
//---------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView2DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
if(Check2)
Accept = true;
else Accept = false;
}
//-----------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView1StartDrag(TObject *Sender,
TDragObject *&DragObject)
{
Check2 = true ;
}
//------------------------------------------------------------------------------
void __fastcall TGroupMove::TreeView1EndDrag(TObject *Sender,
TObject *Target, int X, int Y)
{
Check2 = false;
}
|