Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.018 c
1-47248
BlackSun
2002-06-29 00:53
2002.07.15
Как послать событие, что нажата кнопка мыши?


1-47278
Tahion
2002-06-25 10:11
2002.07.15
Как в AdvStringGrig изменить величину прокрутки ScrollBar-a?


3-47081
федя
2002-06-21 04:34
2002.07.15
Простой вопрос


7-47854
MJH
2002-04-09 11:47
2002.07.15
Видеопамять


14-47732
z_z
2002-06-12 00:02
2002.07.15
У кого есть Variants.pas, пожалуйста вышлите killer@rfvnu.lg.ua