|
아래 쏘스를 응용하세요 드래그 드롭 방식은 똑같으나까 source와 target이 뭐가 되든 상관없습니다.
아래 쏘스는 리스트막스내의 멀티 쎌렉트된 행을 tree의 child로 넣는 기능과
트리에서 트리로(self) 드래그드롭시 순서를 바꾸거나 부모를 바꾸어 주기 위한 쏘스입니다.
리스트뷰에서 리스트뷰도 응용하면 됩니다. 답장이 되었스면 합니다.
void __fastcall TMenuHandling::tDragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
if (dynamic_cast<TTreeView*> (Source) )
{
TTreeNode *source, *target;
target = t->DropTarget;
source = t->Selected;
if( source->Parent == target )
{
return;
}
if(source->Parent == target->Parent )
source->MoveTo(target, naInsert);
else
source->MoveTo(target, naAddChild);
}
else if (dynamic_cast<TListBox*> (Source) )
{
int rows;
for(rows=0; rows < l->Items->Count; rows++)
{
if(!l->Selected[rows]) continue;
t->Items->AddChild(t->DropTarget, l->Items->Strings[rows] );
}
for(rows=l->Items->Count-1; rows>=0; rows --)
{
if(l->Selected[rows]) l->Items->Delete(rows);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMenuHandling::tDragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
if (dynamic_cast<TTreeView*> (Source) || dynamic_cast<TListBox*> (Source))
Accept = true;
else
Accept = false;
}
//---------------------------------------------------------------------------
|