![]() |
|
Модераторы: MetalFan |
![]()
|
|
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
каким способом можно организовать алгоритм перетаскивания из моего приложения в другие, также как это организовано например в WinRAR?
нашел один топик по этой теме, но слабоват я в этом -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
||||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
эм.. я это в DRKB все смотрел.. кроме http://forum.vingrad.ru/index.php?act=modu...mp;article=2513 ниче мне неподходит.. и то там не реалзован механизм "перетаскивания" а используется просто "вставка"
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
Снови, так что мне делать?
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Тут нужно курить очень много доки по COM.
В частности по IDropSource и IDataObject. Как грится, M$ постаралась, чтобы процесс перетаскивания реализовать было легко и удобно - всего парой сотен строк кода. Прогулялся на тори. В основном все либо платное, либо старое. http://www.torry.net/pages.php?id=233 - вот более-менее подходящая штуковина. Реализует нужные интерфейсы. Правда для 5-й дельфи, но хоть что-то. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Щас у себя проверил.
Проинсталилось без проблем на семерку. Вот, нарисовал код:
В TListView запихать список файлов (в примере файлы лежат на C:\). Поставить MultiSelect в true (не обязательно). После этого можно спокойненько таскать "файлы" из листбокса куда угодно. |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: нет Всего: 115 |
От хорошо что я эту тему заметил
Помогут тебе компоненты Raize DropMaster. Остальные вопросы по этим компонентам через PM. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
блин.. ну намучлася я с ними...
во всех компонентах реализован такой вариант: и вот этот на этот самый execute никак неповлиять... мне ненужен вариант простого копирования, нужен вариант аналогично как в winRAR перетаксивание вызывает за собой процесс разархивации во временную папку а потом перемещение в уже указанную. т.е. из контрола (листвью, листбокс и т.п. это непринципаильно) нужно перетащить столбцы, при этом должны создасьтся файлы (которые имеют имена отличные от указанных в списке, данные в них заполняются из других файлов) при этом процесс копирования нужно осуществлять собственной процедурой. а во всех подобных контролах весь процесс сводится к TComponent.execute че делать? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Ну и хорошо.
Отдаешь компоненту имена файлов во временной папке (файлов пока нет). На событие OnDrop вешаешь разархивацию. Файлы появляются. Добавлено @ 14:21 Вот. Заглянул в справку по этому событию. Там как раз и написано, что оно и предназначено для
Добавлено @ 14:22 Там даже полноценный пример есть, как с ним работать. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
это гут но елси у меня файлы по 50 метров... копирование их методом execute убьет приложение минуты на 2, а я этого нехочу... -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
С чего ты решил, что убъет?
Копированием будет заниматься принимающая программ, а не твоя. А при распаковке - тебе решать, будет твоя отвечать или нет. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
может быть и так, но в win2K при drag&drop между приложениями виснут оба до конца выполнения обработки... т.е. если я из проводника пертащу файлы в фотошоп к примеру, то ни проводник ни фотофоп небудут доступны пока все файлы неоткроются в фотошопе. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Хм. Логично. Тем более, что тебе нужно удалить файлы из временной папки.
Частично тут может помочь установка Dragtypes в [dtMove] . Правда поможет только в том случае, когда временная папка находится на том же диске, что и target. Добавлено @ 14:53 Кстати. Кроме этого ты спокойно можешь вынести Execute в другой Thread. Тогда никакой задержки не будет. Пусть другой тред выполняет распаковку и ожидание окончания операции. Добавлено @ 15:00 Я тут еще подумал. Еще логичней будет создавать TDropFileSource динамически. Тогда ты сможешь спокойно перетаскивать файлы еще раз, в то время, пока предыдущая операция по перетаскиванию продолжает работать в фоне. |
|||
|
||||
![]()
|
| Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |