Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Drag&Drop в компоненте TreeView


Автор: NiТR0 19.12.2006, 18:40
Народ, помогите организовать Drag&Drop в компоненте TreeView.
Задача простая: перенести элемент одной ветки в другую.
Проблема в том, что и источник и приёмник один - TreeView1 и при перетаскивании элемента ветки (о нем известно все) не могу найти элемент той ветки, куда он бросается.

Я использую следующий код
Код

void __fastcall TForm1::TreeView1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
или
void __fastcall TForm1::TreeView1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
    MyX = X;
    MyY = Y;   
}
void __fastcall TForm1::TreeView1EndDrag(TObject *Sender, TObject *Target, int X, int Y)
{
    if(Target != NULL)  
               ShowMessage("Элемент перемещен в  " + TreeView1->GetNodeAt(MyX, MyY)->Text);
}

void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) // чтоб все работало
{
   if(TreeView1->Selected->Count == 0)  Accept = true;     // можно перемещать только самые "глубокие" элементы
   else Accept = false;
}

Но дело в том, что при "захвате" и перетаскивании элемента никакие события типа OnMouseUp, OnMouseMove не работают и следовательно нельзя определить куда юзеру вздумается его швырануть.
Ситуация принципиально другая , если сушествует 2 компонента для реализации Drag&Drop (не пробовал, но догадываюсь), поскольку у второго компонента свои обработчики координат места, куда швыряют элемент первого компонента.
Но мне-то надо наладить Drag&Drop на одном.... 
Очень прошу помощи....

PS
Слышал, что вроде бы есть какое-то свойство формы, которое назначает события типа OnMouseUp как первоочередные (а уже потом события Drag), тогда я смог бы считать координату нужного места. Но не могу найти это свойство. Может знает кто?

Автор: SenkraD 20.12.2006, 20:28
По-моему, это то, что тебе надо.
http://forum.vingrad.ru/topic-77681/hl/treeview/index.html
Что непонятно будет - спрашивай

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)