![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
| kami |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Не вижу проблемы. Это реализуется в OnDragOver. Примерный алгоритм (возможны варианты, код будет очень похож на OnDragDrop). Для простоты считаем, что выделить и перебросить несколько элементов сразу невозможно. берем DropTargetNode и соответствующий ему TargetNodeData берем SourceNodes[0] (если есть, конечно) и соответствующий ему SourceNodeData Смотрим на Mode: TDropMode
Это гарантирует, что "внутрь" нода, над которым висит на данный момент курсор попадут только "свои" данные. Причем - если мы над "пользователем", то разрешаем всё. Если внутри какого-нибудь из списков (т.е. над элементом 3-го уровня) - то "так низзя". Иначе (Mode<>dmOnNode) - пользователь пытается воткнуть новый нод между элементами. По логике это возможно только в том случае, если мы пытаемся воткнуться между элементами третьего уровня (т.е. компьютер - между компами, уже находящимися в списке "Компьютеры" этого пользователя, для прав - то же самое). Тут гораздо проще
Это сообщение отредактировал(а) kami - 3.3.2010, 00:51 |
||||||
|
|||||||
| former |
|
||||||||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
kami, реализовал!
Переменные сделал глобальными.
OnDragDrop:
OnDragOver:
Запись данных в БД:
Добавление нода в дерево, если запись в БД успешна:
Вот только не понятно, что будет, если изменится количество нодов во втором уровне. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||||||||
|
|||||||||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
А ничего страшного не будет Добавить новые типы в TElType и добавить "свои" условия в по аналогии с уже добавленными. |
|||
|
||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Я имел виду в функции GetNeededNode.
Вот на этом участке:
Или с каждым новым нодом во 2-м уровне будет добавляться еще одна строка
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Это было бы неоптимально, т.к. может измениться не только количество, но и порядок их следования. Ну, давай подойдем к этой задаче так:
Само собой, это только один из возможных вариантов работы. В нем, например, не предусмотрена возможность поиска не только в дочерних элементах первого уровня; мне не нравится то, что здесь пришлось использовать Case, что уже снижает универсальность... но дальше как-то не думается на сегодняшний день... |
||||
|
|||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
kami, не думал о том, что бы расширить статью Quadr0?
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Нет, а зачем? Там и так всё более чем расписано. Единственное, что мог бы предложить в статью или околостатьевый материал - процедуру печати, которая не обрезает строки посередине, а действует почти так, как организована печать в Excel. |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Это было бы интересно! -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Sed0Y |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
Добавте лучше статью - пример как строить дерево с БД к типа (многоуровневая):
а то я уже запарился - никак не могу придумать и найти - плз |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Sed0Y, а поиском в соответствующем разделе (БД) воспользоваться не пробовал? -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |