Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
7-1072891285
case
2003-12-31 20:21
2004.03.28
COM-Port 125KBaud KAK?


3-1077184074
maratvg
2004-02-19 12:47
2004.03.28
Компоненты для работы с клиент-серверными базами данных


1-1078668907
able
2004-03-07 17:15
2004.03.28
Gutter


6-1073822070
Ермак
2004-01-11 14:54
2004.03.28
Программирование сокетов через WinAPI


8-1069072678
Poleshenko
2003-11-17 15:37
2004.03.28
Рисование искревленной плоскости в изометрии





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский