FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9209
Вход
Перемещение узла в TreeView

Пример написан на VFP6SP5. В нем рассматривается вопрос организации перемещения узла дерева (элемента ActiveX TreeView). В примерах рассмотрена только визуальная часть решения. Вопрос о хранении древовидной структуры в базе данных намеренно игнорируется.


 
Прислал: Владимир Максимов   Категория: Интерфейс


Перемещение узла в TreeView

Пример написан на VFP6SP5

В нем рассматривается вопрос организации перемещения узла дерева (элемента ActiveX TreeView)

Предложены 4 варианта решения:

1. Использование методов OLEDragDrop
2. Использование обычных методов DragDrop
3. Использование ShortCut меню вообще без использования механизма Drag-Drop
4. Объединение методов OLEDragDrop и ShortCut меню

В примерах рассмотрена только визуальная часть решения. Вопрос о хранении древовидной структуры в базе данных намеренно игнорируется.

Исправлено и дополнено 18.11.2002

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.774) Вложение [36.99]kb
Дополнения пользователей
Перемещение узла в TreeView
[+][?]
Denis V. Stepanov
02.12.01 21:44:41

в режимах 1, 2 не удалось перенести ветку, содержащую в себе занчения (+Великобритания на
Молдавию). Только в режиме 3 это удалось. Имхо нужная операция. Особливо в чистом перетакивании!
Хотелось бы поиметь такую возможность в прекрасном недал:еком ;)
Владимир Максимов
03.12.01 11:11:40

В режиме 1 и 2 нет возможности выбора выполняемой операции. 
Прочитай в описании ЧТО именно должно произойти при попытке выполнения описанной тобой операции -
все должно остаться на месте.
Если это тебя не устраивает, то ты сам должен придумать правила переноса.
Идеальным, как мне кажется, было бы объединение методов DragDrop и ShortCut меню. Однако, это
крайне трудно исполнить поскольку DragDrop по правой кнопке мыши не срабатывает. Остается
использовать перенос с одновременно нажатой клавишей "Ctrl", "Shift" или "Alt". Но это менее
красивое решение.
Denis V. Stepanov
03.12.01 15:31:26

Это-то да, прочитал. Меня именно удивила возможность перетащить в 3 то, что не смоглось в 1, 2!
Согласен, что в одном родителе перетаскивать ветки - дело неблагодарное. Но, если у него есть
предки - это уже что-то. Хотя даже с неблагодарным делом... Ведь по-сути - как раз такая фишка и
грядет мне - типа был справочник разделов\параграфов... С течением времени маркетологи шевельную
мозгами - и вот один из разделов превращается в параграф... И понеслось. А лучше, чтоб неслось
мышой :) Так что имхо перенос ветки внутри родителя - обень даже благодарноя операция! И она нужна
(мне, по-крайней мере :) Пллллллллллз ;)
Владимир Максимов
03.12.01 16:31:56

Денис, ты все-таки прочитай правила, которые Я (а не какой-то добрый дядя из MicroSoft) установил
для переноса Drag-Drop:

1. Если родитель узла источника и цели совпадает, то узел источник устанавливается следом за узлом
целью (как раз, то что ты пытаешься сделать)

2. Если родитель узла источника отличен от родителя узла цели, то узел источник становится первым
дочерним узлом цели

Т.е. у тебя есть 2 способа обойти эту ситуацию:

1. Перетащи Великобританию сначала внутрь Саратовской области, а уж затем внутрь Молдавии
2. Придумай свои правила переноса и подкорректируй методы OLEDragDrop (для первого случая) или
DragDrop (для второго)

В примере показан сам принцип решения проблемы, а как ты ее реализуешь в твоем конкретном случае -
это твои трудности.
Denis V. Stepanov
03.12.01 16:49:47

Согласен с тем, что есть у меня и способы и твои ограничения. Просто я подумал, что если уже ты
предоставляешь решение, а не пример пользования.. хотя вот счас допетрил - это есть чиста пример.
ОК. Будем трудиться направлении 2 способа руками ;)
CU
Владимир Максимов
22.01.06 20:36:55

Замечание:

4. Объединение методов OLEDragDrop и ShortCut меню (форма Drag_short.scx)

Предполагает запуск механизма Drag-Drop по правой клавиши мыши. Но этот механизм работает только с
объектом

Microsoft TreeView Control, version 5.0 (SP2)

а на форме у меня лежит объект 

Microsoft TreeView Control, version 6.0 (SP4) 

В принципе, можно поставить себе этот объект и скопировать все методы. Но TreeView 5 имеет ряд
других проблем. Например, у него в принципе невозможно установить enabled=.F. Эта настройка просто
игнорируется.

[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика