Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизDrag&Drop из приложение вовне Найти похожие ветки
← →
AlexanderVasjuk (2002-07-03 15:13) [0]Как внутри формы реализовать DragDrop знаю.
Как поймать внешний - тоже (DropFile).
А как перетащить аналогично DropFile свой компонент (в виде созданного файла) например в папку Эксплорера.
← →
MBo (2002-07-03 15:24) [1]pls, уточни - у тебя есть, допустим, где-то на форме значок файла (существующего) и ты хочешь перетаскиванием скопировать его в папку, открытую в Проводнике?
← →
AlexanderVasjuk (2002-07-03 17:09) [2]Примерно да.
Неважно, что на форме, пусть система думает, что я тащу файл. (Файл я могу при необходимости создать).
← →
AlexanderVasjuk (2002-07-03 17:23) [3]На самом деле мне это надо, чтоб внести контакт в адресную книгу. Она реагирует на Drop стандартного файла визитки. Файл я создать могу, но как сделать Drag прямо из программы, т.е. из списка?
← →
MBo (2002-07-03 18:00) [4]Я сделал пример, добился работы, начал его причесывать, и сломал ;(
Не пойму, что испортил ;))
← →
AlexanderVasjuk (2002-07-03 19:19) [5]Не томи! :)
Скажи принцип.
← →
MBo (2002-07-04 07:25) [6]uses shlobj
заполнить структуру PDropFiles внутри GlobalAlloc (используя GlobalLock/UnLock)
в клипборд формат CF_HDROP и хэндл, полученный GlobalAlloc
есть пакет компонентов Anders Melander, причем, видимо, он единственный приличный для этих целей
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=14069
почитать - (это одна книга Тейлора)
http://www.arbinada.com/download/d3prolib.rar
http://www.delphiplus.narod.ru/downloads/doc/delphi/d3programmer_lib.zip
← →
MBo (2002-07-04 08:18) [7]таким образом в ClipBoard "вставляется файл"
после исполнения этой процедуры можно в проводнике сделать Paste
и файл скопируется. Надо теперь разбираться с OLE-вставкой ;(
procedure TForm1.Label2StartDrag(Sender: TObject; var DragObject: TDragObject);
var
fname: string;
fSize: Integer;
h: thandle;
PDF: PDropFiles;
p: PByte;
begin
fname := "e:\aa.txt";
fsize := sizeof(tdropfiles) + length(fname)+2;
H := GlobalAlloc(GMEM_ZEROINIT + GMEM_MOVEABLE + GMEM_SHARE, fsize);
PDF := GlobalLock(h);
PDF.pFiles := sizeof(TDropFiles);
PDF.pt := point(0, 0);
PDF.fNC := False;
PDF.fWide := False;
p := pointer(PDF);
inc(p, sizeof(TDropFiles));
move(fname[1], p^, length(fname));
GlobalUnlock(h);
OpenClipboard(handle);
EmptyClipboard;
SetClipboardData(CF_HDROP, h);
CloseClipboard;
end;
← →
leshy (2002-07-04 11:45) [8]Елманова и Трепалин.
Delphi 4, Технология COM.
Москва, ДИАЛОГ-МИФИ, 1999 г.
Глава 6.
стр. 182.
← →
MBo (2002-07-04 11:52) [9]>leshy
если там есть исходники, пришли, pls.
То, что я пока раскопал, очень объемное, трудно вычленить суть
← →
AlexanderVasjuk (2002-07-04 15:20) [10]MBo © (04.07.02 08:18)
Спасибо
leshy (04.07.02 11:45)
Спасибо тоже
MBo © (04.07.02 11:52)
У меня есть Технология СОМ. Как разберусь. Чиркану сюда свои исходники. Наведывайся.
← →
MBo (2002-07-04 15:29) [11]>AlexanderVasjuk
Я имел в виду исходники к книжке (относящиеся к DnD), если она с ними идет.
← →
AlexanderVasjuk (2002-07-04 17:15) [12]Книжка без медиа но с кучей кода
← →
MBo (2002-07-04 17:18) [13]AlexanderVasjuk
понятно ;(
← →
Sam3D (2002-07-04 17:44) [14]Есть у меня такая книжка...
В ней есть пара примеров как это реализовано, причем без технологии COM. Когда-то я с этим разбирался, показалось достаточно доступно, сейчас уже запамятовал. Если кому интересно - вышлю примеры на мыло. Все работает 100%, принимает файлы из эксплорера, виндоус коммандера и других программ такого рода...
Будут вопросы - спрашивайте, разберемся вместе. :)
← →
MBo (2002-07-04 17:53) [15]>Sam3D
принимать нет проблем, сложнее перетащить из своей программы, причем именно в Explorer и т.п. В другую свою программу,в Notepad, в IDE Delphi я уже умею.
← →
AlexanderVasjuk (2002-07-04 17:56) [16]Sam3D © (04.07.02 17:44)
А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
← →
Sam3D (2002-07-04 17:59) [17]Пардоны... Читаю невнимательно...
← →
MBo (2002-07-04 18:01) [18]>AlexanderVasjuk
компоненты попробовал?
← →
Sam3D (2002-07-04 18:01) [19]
> А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
ищу... :)
← →
AlexanderVasjuk (2002-07-04 18:02) [20]MBo © (04.07.02 18:01)
тяну...
(а книжка дома, а надо ЩАС!!!)
← →
MBo (2002-07-04 18:06) [21]>AlexanderVasjuk
Самому сделать - IMHO работы много (вероятно, на несколько дней при хорошем понимании OLE и Shell-интерфейсов), так что если надо срочно, лучше готовую библиотеку использовать.
← →
Sam3D (2002-07-04 18:07) [22]
> А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
Есть! С использованием OLE. Рассмотрен пример клиента и сервера перетаскивания... Интересует?
← →
MBo (2002-07-04 18:12) [23]да
← →
Skier (2002-07-04 18:12) [24]>Sam3D
> Если кому интересно - вышлю примеры на мыло
Вышли мне, пожалуйста.
← →
AlexanderVasjuk (2002-07-04 18:14) [25]Кажись в книге Тейлора есть...
Sam3D © (04.07.02 18:07)
ДААААААААААААААААААААААААААААААААААААА!!!!!!!!!
← →
AlexanderVasjuk (2002-07-04 19:35) [26]Ну шо, толпарищи, у меня получилось.
Из Тейлора пример не заработал из за несовместимости версий.
А компоненты Меландера оказались тем что нужно.
А именно TDropFileSuorce.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c