![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Drag&Drop из приложение вовне [D6, Win95/98, WinME, NT4, Win2k, WinXP]
AlexanderVasjuk © (2002-07-03 15:13:00)Как внутри формы реализовать DragDrop знаю.
Как поймать внешний - тоже (DropFile).
А как перетащить аналогично DropFile свой компонент (в виде созданного файла) например в папку Эксплорера.
AlexanderVasjuk (2002-07-04 19:35:00) [1]Ну шо, толпарищи, у меня получилось.
Из Тейлора пример не заработал из за несовместимости версий.
А компоненты Меландера оказались тем что нужно.
А именно TDropFileSuorce.
AlexanderVasjuk (2002-07-04 18:14:00) [2]Кажись в книге Тейлора есть...
Sam3D © (04.07.02 18:07)
ДААААААААААААААААААААААААААААААААААААА!!!!!!!!!
Skier (2002-07-04 18:12:00) [3]>Sam3D
> Если кому интересно - вышлю примеры на мыло
Вышли мне, пожалуйста.
MBo (2002-07-04 18:12:00) [4]да
Sam3D (2002-07-04 18:07:00) [5]
> А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
Есть! С использованием OLE. Рассмотрен пример клиента и сервера перетаскивания... Интересует?
MBo (2002-07-04 18:06:00) [6]>AlexanderVasjuk
Самому сделать - IMHO работы много (вероятно, на несколько дней при хорошем понимании OLE и Shell-интерфейсов), так что если надо срочно, лучше готовую библиотеку использовать.
AlexanderVasjuk (2002-07-04 18:02:00) [7]MBo © (04.07.02 18:01)
тяну...
(а книжка дома, а надо ЩАС!!!)
Sam3D (2002-07-04 18:01:00) [8]
> А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
ищу... :)
MBo (2002-07-04 18:01:00) [9]>AlexanderVasjuk
компоненты попробовал?
Sam3D (2002-07-04 17:59:00) [10]Пардоны... Читаю невнимательно...
AlexanderVasjuk (2002-07-04 17:56:00) [11]Sam3D © (04.07.02 17:44)
А примеров как 100% ОТСЫЛАТЬ а не принимать нет?
MBo (2002-07-04 17:53:00) [12]>Sam3D
принимать нет проблем, сложнее перетащить из своей программы, причем именно в Explorer и т.п. В другую свою программу,в Notepad, в IDE Delphi я уже умею.
Sam3D (2002-07-04 17:44:00) [13]Есть у меня такая книжка...
В ней есть пара примеров как это реализовано, причем без технологии COM. Когда-то я с этим разбирался, показалось достаточно доступно, сейчас уже запамятовал. Если кому интересно - вышлю примеры на мыло. Все работает 100%, принимает файлы из эксплорера, виндоус коммандера и других программ такого рода...
Будут вопросы - спрашивайте, разберемся вместе. :)
MBo (2002-07-04 17:18:00) [14]AlexanderVasjuk
понятно ;(
AlexanderVasjuk (2002-07-04 17:15:00) [15]Книжка без медиа но с кучей кода
MBo (2002-07-04 15:29:00) [16]>AlexanderVasjuk
Я имел в виду исходники к книжке (относящиеся к DnD), если она с ними идет.
AlexanderVasjuk (2002-07-04 15:20:00) [17]MBo © (04.07.02 08:18)
Спасибо
leshy (04.07.02 11:45)
Спасибо тоже
MBo © (04.07.02 11:52)
У меня есть Технология СОМ. Как разберусь. Чиркану сюда свои исходники. Наведывайся.
MBo (2002-07-04 11:52:00) [18]>leshy
если там есть исходники, пришли, pls.
То, что я пока раскопал, очень объемное, трудно вычленить суть
leshy (2002-07-04 11:45:00) [19]Елманова и Трепалин.
Delphi 4, Технология COM.
Москва, ДИАЛОГ-МИФИ, 1999 г.
Глава 6.
стр. 182.
MBo (2002-07-04 08:18:00) [20]таким образом в 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;