Страница 1 из 1
Drag&Drop
Добавлено: 15 мар 2005, 07:11
Dr.Grizzly
Всем привет! Есть компонент TEdit, хочу чтоб в нем писался путь к файлу который я перетащу на него. Возможно ли это? Или может как-то по другому можно это реализовать?
Добавлено: 15 мар 2005, 16:41
Игорь Акопян
смотреть события TEdit - OnDragOver и OnDragDrop + свойства DragMode, DragKind
Добавлено: 16 мар 2005, 10:12
Dr.Grizzly
Люди! Ни как не доходит, сижу уже 2-ой час пытаюсь разобраться, дайте плиз наглядный пример, очень прошу, мне так намного понятней будет

Добавлено: 16 мар 2005, 10:58
Игорь Акопян
а откуда файл тащить собираешься?
Добавлено: 16 мар 2005, 14:58
Dr.Grizzly
Тащу из папки "Мои Документы" либо с какого-нить жесткого диска или дискеты
Добавлено: 17 мар 2005, 01:50
Naeel Maqsudov
Можно использовать библиотеку RX, можно ниписать свое, но прийдется делать свой класс (а по-максимуму компонент).
Посмотрите как определен класс TFileDirEdit (Tooledit.pas) в библиотеке RX.
Там есть
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
Этот метод - обработчик WM_DROPFILES - когда дропаются файлы. Структура TWMDropFiles должна быть описина в messages.pas
Кроме того, чтобы над оконным объектом появлялся нужный курсор, и ему таки-поступало сообщение WM_DropFiles надо обязательно перекрыть CreateHandle и DestroyWindowHandle.
Код: Выделить всё
procedure CreateHandle; override;
procedure TFileDirEdit.DestroyWindowHandle; override;
....
procedure TFileDirEdit.CreateHandle;
begin
inherited CreateHandle;
if FAcceptFiles then SetDragAccept(True);
end;
procedure TFileDirEdit.DestroyWindowHandle;
begin
SetDragAccept(False);
inherited DestroyWindowHandle;
end;
Можно и без создания класса обойтись
Для этого надо создать процедуру типа TWndMethod и присвоить ее свойству Edit1.WindowProc. В этой процедуре обеспечить обработку сообщения WM_DropFiles
А на Open/Close формы вызывать SetDragAccept(True/False)
Т.е. опять 2 условия надо для этого соблюсти.
См. SetDragAccept в хелпе по WinAPI.
Добавлено: 17 мар 2005, 07:46
Dr.Grizzly
Алл райт! Сенькс
