На главную

Реализовать "перетаскивание" файлов

Реализовать "перетаскивание" файлов

ОГЛАВЛЕНИЕ    HOME  MAIL



В Windows распространен механизм "перетаскивания" файлов мышью. Этот пример добавляет в список имена файлов, перенесенных в программу.

Функция DragAcceptFiles разрешает или запрещает переносить файлы в вашу программу, DragQueryFile(HF, $FFFFFFFF, nil, 0) возвращает количество файлов, а DragQueryFile(HF, i, s, 1024) возвращает имя файла номер i.

...
private
  procedure WMDropFiles(var Msg: TWMDropFiles);
    message WM_DROPFILES;
...
uses ShellAPI;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
  HF: THandle;
  s: array [0..1023] of char;
  i, FileCount: integer;
begin
  HF := Msg.Drop;
  FileCount := DragQueryFile(HF, $FFFFFFFF, nil, 0);
  for i := 0 to FileCount - 1 do begin
    DragQueryFile(HF, i, s, 1024);
    if FileExists(s)
      then ListBox1.Items.Add(s)
      else ListBox1.Items.Add(s + ' - error');
  end;
  DragFinish(HF);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, true);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, false);
end;

главная страницазадать вопрос
email: delphi4all@narod.ru
Hosted by uCoz