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

Вниз

Drag&Drop   Найти похожие ветки 

 
~GaMeRd~ ©   (2003-12-26 00:16) [0]

Тут такое дело - надо подключить к проге драгидроп. НО.
Система какая я не понял. Нужно, чтобы перетаскивались на объект файлы и при этом я узнавал иконку этого файла и его полный путь. Короче, чтобы у меня на форме создавался ярлык к этому файлу.

Спасиба


 
Pirate ©   (2003-12-26 15:05) [1]

Большинство программ, преднозначенных для работы с текстом, предоставляют пользователю возможность перетаскивать имена файлов из "Проводника" (или других программ) в Memo или другой компонент, содержащийся в приложении. о умолчанию Delphi не позволяет перемещать файлы с помощью мыши, но, приложив небольшие усилия, такую возможность можно реализовать.

Первое, что вы должны сделать, - сообщить системе Windows о том, что ваша программа готова обрабатывать файлы, перемещенные из другого приложения с помощью мыши. Для этого достаточно включить в обработчик события OnCreate формы следующее выражение:
DragAcceptFiles(Handle,True);

Кроме того вы должны указать модель ShellAPI в директиве uses.

Для любого окна, в котором была вызвана процедура DragAcceptFiles, справедливо следующее. Когда вы перетаскиваете имя файла на ваше приложение и отпускаете кнопку мыши, Windows посылает этому окну сообщение wm_DropFiles. Сооьщение сопровождается именем файла. Обработчик этого сообщения нужно включитьв защищенный раздел класса формы. например, в объявлении класса формы между ключвыми словами private и public добавьте следующие строки:
protected
  procedure WMDropFiles (var Msg: TMessage);
  message wm_DropFiles;

И наконец-то пример самой процедуры, при помощи которой будет происходить обработка файла:
protected
  procedure WMDropFiles (var Msg: TMessage);
  message wm_DropFiles;
И наконец-то пример самой процедуры, при помощи которой будет происходить обработка файла:
procedure TForm1.WMDropFiles(var Msg: TMessage);
  Var
  Filename: array[0..256] of char;
begin
  DragQueryFile(THandle(Msg.WParam),0,Filename,SizeOf(Filename));
  // Теперь в переменной Filename будет находиться путь
  // к перетаскиваемому файлу. Далее вы можете выполнять с этим файлом, зная
  // его путь, все что угодно.

  //Например: Загрузить его в Memo
  Memo1.lines.loadfromfile(Filename);
  //Сообщаем об окончании претаскивания
  DragFinish(THandle(Msg.WParam));
end;


 
~GaMeRd~ ©   (2003-12-27 14:57) [2]

Оно-то работает. НО.
Стоп.А что, при ФормКреате не надо разрешать перетаскивание файлов? Только выключать прием нужно?

> DragFinish(THandle(Msg.WParam));

DragAcceptFiles(Handle, true); ????
Вопрос по теме DragAcceptFiles(Handle, true);
Почему оно включается только для формы, а не работает для, допустим, ТПанел?


 
DVM ©   (2003-12-28 16:21) [3]


> Почему оно включается только для формы, а не работает для,
> допустим, ТПанел?

Потому как панель не является окном


 
jack128 ©   (2003-12-28 18:41) [4]


> Потому как панель не является окном
???
Tpanel/TCustomPanel/TCutomControl/TWinControl


> а не работает для, допустим, ТПанел
Ты уверен? Покажи код.


 
~GaMeRd~ ©   (2003-12-28 23:33) [5]

Все такое же, только Хэндл другой:
DragAcceptFiles(Panel1.Handle, true);
Он-то разрешает прием только Панели, но не обрабатывает сообщение wm_dropfiles


 
jack128 ©   (2003-12-28 23:44) [6]

То есть ты создал наследника Tpanel и обработал в нем сообщение wm_dropfiles? Ну или подменил оконную функцию?


 
DVM ©   (2003-12-29 08:07) [7]

Да, погорячился я насчет панели, сорри.
to ~GaMeRd~ ©
Переоредели оконную функцию - и обрабатывай там все сообщения, какие надо.


 
~GaMeRd~ ©   (2004-01-02 00:08) [8]

Понял. Спасибо



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
1-1078909467
RatLion
2004-03-10 12:04
2004.03.28
Как показать код исполняемый во время выполнения?


7-1072779417
Davey
2003-12-30 13:16
2004.03.28
!!!!!!!!!!!!!!!!!!<NtQuerySystemInformation>!!!!!!!!!!!!!!!


14-1078405955
panov
2004-03-04 16:12
2004.03.28
И все же. По поводу граблей при поиске файлов.


14-1074854043
}|{yk
2004-01-23 13:34
2004.03.28
Тексейра и Пачеко - компоненты


1-1077896458
Гиричев Руслан
2004-02-27 18:40
2004.03.28
Перемещение в TreeView