![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Как в программе программно реализовать методы Cut\Paste в бефер обмена применимо к файлам (и пипкам, если есть различия)? Желательно также узнать, есть ли в буфере обмена данные этого типа (т.е. файлы)... В FAQ есть только копирование файлов.
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Чтобы вырезать нужно скопировать исходный файл а потом его удалить.
А проверять буфер на наличие в нем файлов можешь так:
-------------------- Слава Україні. |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Вставку можно сделать, посылая в нужное тебе окно сообщение о вставке:
-------------------- Слава Україні. |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Vex, спасибо за пример работы с буфером обмена, но...
Проблема состоит в том, что необходимо сделать дву кнопки: Cut & Paste. Первая должна уметь "вырезать" фалы так, чтобы в проводнике можно было их вставить, а Paste - нужно определить, скопированы или вырезаны файлы в буфер (из того же проводника), а потом уже Copy (копировать) или Cut (копировать и удалять) их "в программу". Как это сделать? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| Vex |
|
||||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Если файл в буфере,то почему ты его не можешь вставить в проводнике?
Как ты можешь из буфера вырезать или копировать данные в программу, ты можешь только туда вставить? Или я чего-то не понял. -------------------- Слава Україні. |
||||
|
|||||
| Illusion Dolphin |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Объясняю: Я открываю окно проводника, выделяю файл и нажимаю ВЫРЕЗАТЬ. Потом преспокойно закрываю его, и открываю другое окно, где нажимаю ВСТАВИТЬ. После этого файл скопируется в другое место и удалиться в исходном, т.е. второе окно будет знать, что файл именно вырезали, а не скопировали, т.к. в последнем случае он не будет удалён в начальном месте. Отсюда следует, что кроме того, что файл находится в буфере обмена, там содержится также информация системного характера (скопирован или вырезан).
А как проводник узнает, что я данные именно вырезал, а не скопировал (как, например, в faq есть функция КОПИРОВАНИЯ файлов в буфер обмена)?
Мне нужно определить: в проводнике пользователь нажал "скопировать" или "вырезать" чтобы знать, что делать с файлом. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||
|
|||||||
| Vex |
|
||||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Хм... не знаю, думаю второму окну все равно вырезан файл или скопирован... Добавлено @ 23:15 Вот из MSDN:
Думаю в ClipBoarde храниться только сам объект и идентификатор формата, ИМХО. -------------------- Слава Україні. |
||||
|
|||||
| youri |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
Я тут нашел в help'е такую штуку:
правда не совсем понял, почему нельзя создавать собственный объект TClipBoard, может подскажете? |
||||
|
|||||
| Illusion Dolphin |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
1)
Открой одно окно проводника и "вырежи" вайл, потом закрой его и вставь... В исходном место его не будет. Если проделать то же самое, но в исходном месте его скопировать, но он просто скопируется. 2)
А что понимать в данном слечае под документом? Жёсткий диск? Я сомневаюсь, что если я вырежу на диске С: фильм в 700 мегов, то он сразу же удалится с диска и поместится в буфер :/... Эта цитата применима к тексовым (и ещё многим другим) форматам, а к файлам вроде не то... 3)
А как это сочетается с первым пунктом? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||
|
|||||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Я точно не знаю, но ИМХО когда мы вырезаем файл он копируется и удаляется. я на 70% процентов уверен, что при вырезании происходит следующее: 1. Копировать файл в буфер обмена 2. Удалить файл Какие мог доказательства я привел, но точно не знаю. Есть подозрение, что при копировании или вырезании файла копируется только информация о самом файле, чтобы не полностью помещать его в буфер, а все оставльное делает ОС. У тебя есть Clipboard Viewer? -------------------- Слава Україні. |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Вывод: скопирован был файл или вырезан ИМХО невозможно, не считая всяких хитростей, если ты знаешь откуда был этот файл вырезан/скопирован, то можешь просканить каталог, если есть такой файл, значит скопирован, если нет вырезан.
-------------------- Слава Україні. |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Буфер обмена содержит только полный путь к файлам(с именем файла).
Чтобы определить что с ними надо делать (копировать или вставлять) разберется сам Explorer. Пример определения какие файлы или папки перемещаются(копируются).
См. также: http://www.delphimaster.ru/articles/dragndrop/ http://www.delphivsvb.by.ru/delphisol/desapprazr.html http://www.vcl.ru/html/win31/mdi/ch2.htm Удачи. Это сообщение отредактировал(а) Girder - 7.6.2004, 12:48 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Vex:
А) 1) Создай файл 1.txt в любой директории. 2) открой его блокнотом и напиши там "Это только тест!" 3) Закрой его 4) Нажми правой кнопкой мыши и выбери "Вырезать" (файл удалён???) 5) Файл остался на месте, хотя стал "полупрозрачным". 6) Для проверки существования файла открываем его тем же блокнотом. 7) ФАЙЛ ПОСЛЕ ВЫРЕЗКИ СУЩЕСТВУЕТ! Б) 1) Возьми файл существенным размером размером (фильм в 700 мегов). 2) Засекаешь время по часам 3) Попробуй "вырежь" его. 4) Засекаешь разность ввремени между текущим временем и операцией 2. 5) Думаем, как файл в 700 мегобайс прочитался за такое короткое время, да ещё и скопировался в оперативную память (пусть даже с свопом) Вывод: Вырезать файл - это не УДАЛИТЬ ЕГО с помещением копии в буфере обмена. Girder
8) Explorer-то разберётся, а как быть мне? Мне нужно определить, что сделано с данными и потом уже (пусть даже с помощью эксплорера и интерфейсов как-то его скопировать\переместить\вставить. И ещё нужно сделать так, чтобы Explorer разобрался в том, что я хочу сделать с файлом: его скопировать или вырезать, чтобы ПОТОМ (см, что я написал Vex'у) над ними совершить нужное действие. Пример кода - то же самое: файлы-то есть, но что с ними делать??? Как мне их туда ИЛИ СКОПИРОВАТЬ ИЛИ ВЫРЕЗАТЬ? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
| Vex |
|
||||||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
OK
нет в буфер обмена поместился путь к файлу и где-то в недрах эксплорера переменная удаления стала TRUE и когда мы вставляем файл, то эксплорер копирует этот файл а затем удаляет.
Да, конечно ведь в буфер скопировалсятолько путь этого файла Добавлено @ 14:15 Illusion Dolphin, может более детально опиши свою задачу, попробуем как-то эту фигню с буфером. З.Ы. Если бы достать какой-то исчерпывающий мануал о работе и структуре буфера обмена, то все бы вопросы решились. -------------------- Слава Україні. |
||||||
|
|||||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Гы На счёт З.Ы. полностью согласен, но я нигде не могу найти его... Уже всё перерыл и ноль... -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
![]()
|
| Правила форума "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. |