Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-47310
shiva502
2002-06-27 14:40
2002.07.15
TEdit не воспринимает Unicode


1-47494
Evants
2002-07-04 10:36
2002.07.15
Снова ТListBox (избегание ошибки)


1-47443
N A N
2002-06-27 08:49
2002.07.15
Почему изменяется размер формы....


14-47793
s@shka
2002-06-15 14:32
2002.07.15
OpenSSL в родном Delphi


3-47107
Леонид
2002-06-12 21:09
2002.07.15
два вопроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский