Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перенос в TreeView


Страницы:   1 2

art36 ©   (2007-12-27 19:41:00) 

Как переместить одну выделенную ветвь в TTreeView в другую, которой название известно? (может индекс ее определить). Я не про DragAndDrop, но и это было бы очень неплохо.

подскажите пожалуйста!
Спасибо!


art36   (2007-12-28 00:32:00) [21]

Да, это работает, но перемещение происходит в ту ветку, где находится элемент на котором был курсор, а мне нужно чтобы перемещение было в него.


turbouser   (2007-12-28 00:09:00) [22]


> art36 ©   (27.12.07 23:56) [5]


...
TreeView1.DragMode:=dmAutomatic;
...
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: integer;
 State: TDragState; var Accept: boolean);
begin
 Accept := Sender = Source;
end;

procedure TForm1.TreeView1EndDrag(Sender, Target: TObject; X, Y: integer);
begin
 if Sender = TreeView1 then
   TreeView1.Selected.MoveTo(TreeView1.GetNodeAt(x, y), naAddChild);
end;


art36   (2007-12-27 23:56:00) [23]

Нет, я ошибся последняя моя запись не решает проблемы. Таким образом: перетаскивание вообще не работает


art36   (2007-12-27 22:57:00) [24]

Да!!!!!

Я разобрался! Дело в том, что когда перетаскиваешь объект, то происходит обработка для любого компонента, а мне этого не нужно, поэтому я написал в самом начале процедуры EndDrag следующее:

if target<>mytreeview then exit;

Где exit - выход из процедуры обработки!

Спасибо!


art36   (2007-12-27 22:51:00) [25]

Да, и еще:

Когда перетаскиваю в нижнюю область TreeView, где нет дерева, или за область компонента, то выскакивает ошибка обращения к памяти.

Пробовал весь код в EndDrag помещать в TRY...EXCEPT...END
Почему?


art36   (2007-12-27 22:37:00) [26]

Да, верно! Спасибо!

Одна оговорка: я не понял почему в скобках treeview.items[x], т.к. не работало поэтому написал там treeview.droptarget;


turbouser   (2007-12-27 21:16:00) [27]

 if TreeView.Selected <> nil then
 begin
   TreeView.Items.AddChild(TreeView.Items[x], TreeView.Selected.Text);
   TreeView.Selected.Delete;
 end;

Где x - индекс итема, название которого известно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо