Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.10.2008, 17:00
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию Перетаскивание в прогу

Подскажите как реализуется такая фишка, например на форме есть Edit, на него перетаскиваем файл из какой нибудь папки, и в Edite появляется путь к нему. Как отлавливается это перетаскивание?
Ответить с цитированием
  #2  
Старый 31.10.2008, 17:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Обработка сообщения WM_DROPFILES, кажется.

Код:
  public
    { Public declarations }
    procedure CreateParams(var Params: TCreateParams); override;
    procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
...

procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES;
end;

procedure TMainForm.WMDropFiles(var Message: TWMDropFiles);
var
  I : Integer;
  FileCount : Integer;
  FileName : Array [0..255] of Char;
begin
  inherited;
  FileCount := DragQueryFile(Message.Drop, $FFFFFFFF, Nil, 0); // how many files are dropped

  For I := 0 to FileCount - 1 Do // for all the file in the list
    Begin
      DragQueryFile(Message.Drop, I, FileName, 256); // get the FileName (max characters 255 + #0)
      If FileExists(FileName) Then
        Begin
           // Add your code here...
        End;
    End;
  DragFinish(Message.Drop); // Free resources
end;
Ответить с цитированием
  #3  
Старый 31.10.2008, 22:43
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Круто, спасибо, работает) тока еще надо добавить модуль ShellAPI и такое сообщение получать может только главная форма. А с папками аналогично? или что то другое? Перетаскивал папку ничего не происходило
Ответить с цитированием
  #4  
Старый 31.10.2008, 22:50
Alexo Alexo вне форума
Начинающий
 
Регистрация: 24.01.2007
Сообщения: 191
Репутация: 15
По умолчанию

Код:
  FileCount := DragQueryFile(Message.Drop, $FFFFFFFF, Nil, 0); // how many files are dropped

  For I := 0 to FileCount - 1 Do // for all the file in the list
    Begin
      DragQueryFile(Message.Drop, I, FileName, 256); // get the FileName (max characters 255 + #0)
      If FileExists(FileName) Then
        Begin
           // Add your code here...
        End;
    End;

По сути вот здесь как раз и говориться что принемаеться только фаилы)

или как вариант вот здесь попробовать
Код:
If FileExists(FileName) Then
        Begin
           // Add your code here...
        End;

ExtractFileDir
__________________
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя.

Последний раз редактировалось Alexo, 31.10.2008 в 22:57.
Ответить с цитированием
  #5  
Старый 01.11.2008, 14:11
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

ExtractFileDir по логике вообще не подходит.

и вообще я так понимаю за прием фала отвечает процедура DragQueryFile, ей должна быть аналогичная с каталогом.
Ответить с цитированием
  #6  
Старый 01.11.2008, 15:38
Act Act вне форума
Новичок
 
Регистрация: 01.11.2008
Сообщения: 72
Репутация: 10
По умолчанию

А как сделать что б в проге был список файлов директории и в нее копировать можно было путем перемещения файла в програму.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025