![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Pavelbej |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 419 Регистрация: 5.7.2005 Репутация: нет Всего: 6 |
С Новым Годом Вас!
Слава богу, запой прошел мимо На форме используются несколько компонентов VirtualStringTree. У каждого есть свои данные которые хранятся в своих файлах. И лишь один из компонентов реализован как оболочка на Explorer-ом. То есть, двигая узлы, копируя их, вырезая и вставляя, я проделываю эти операции и над "реальными" файлами и папками. Узлами легко можно обмениватся между всеми компонентами (Copy, Paste) через onLoadNode и onSaveNode. Вот только с командой Cut (VT.CutToClipboard) возникли проблемы именно с компонентом который является оболочкой над Explorer-ом. В событии onNodeMoving я проверяю - если такой папки или файла нет там куда ее будем таскать - тогда разрешаем перетаскивание (вырезание), иначе нет. В onNodeMoved перебираю каждый узел, проверяю и перемещаю с помощью MoveFileW. Вот проблемы: 1. Из другого компонента выбираем узлы, из меню нажимаем Cut, и в компоненте оболочке вставляем. Узлы вставляются, но файлы не создаются. Оно и понятно - неизвестно кто источник. Как проверить? 2. Нужна возможность также вырезать узлы из VT оболочки и вставить их (узлы) в другой VT, а сами файлы соответствующие выбранным узлам - удалить из источника. В целом, проблема выглядит так: невозможно свободно вырезать/вставить узлы между компонентом оболочкой и остальными компонентами, потому как в событиях onNodeMoving, onNodeMoved идет работа (проверка) с файлами и невозможно понять кто источник, что он переносит - файлы и узлы или только узлы. Если идет работа в компоненте оболочке, то он должен работать с файлами и папками (соответствующие своим узлам), если идет работа с другим компонентом, то должны копироватся, вырезатся, вставлятся только узлы. Вот вроде все. Трудно было это все сформулировать, если непонятно, попробую еще. Меня интересует механизм всего этого, как это должно работать. Если надо будет представлю код. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
с этого надо начмнать имхо , а то ошибка в 17 строке -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Pavelbej |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 419 Регистрация: 5.7.2005 Репутация: нет Всего: 6 |
Ну там ошибки нет вроде А вот и данные: Абсолютно все компоненты (VitrtualStringTree) используют одни и те же данные
VTIE - имя компонента оболочки над файлами Вот событие которое происходит перед вырезанием (перемещением) узлов (onNodeMoving):
Вот событие которое происходит после вырезания узелков (onNodeMoved):
Так вот, если вырезаю некоторые узелки из других VT, и вставляю в VTIE - узлы появляются, но соответствующие им файлы не создаются. Почему? Добавлено через 4 минуты и 17 секунд Кстате, в событиях OnNodeCopying и OnNodeCopied , код абсолютно идентичен с представленным выше, и никаких проблем не возникает с копированием узлов между разными компонентами. Все несчастья именно с вырезанием. |
||||||
|
|||||||
![]()
|
| Правила форума "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. |