Открыть Файл Перетаскиванием (открыть Файл Drag'n'drop)

  • Автор темы Автор темы Sascha
  • Дата начала Дата начала

Sascha

Команда форума
Администратор
Ofline
Сегодня мы научимся открывать файл перетаскиванием на форму средствами Delphi.

Открывать мы будем текстовый файл и его содержимое отображать в компоненте Memo. Стоит отметить, что открывать таким образом можно любые файлы, а не только текстовые. Все дело в том, что при перетаскивании мы будем получать адрес файла, а уже с этим адресом мы можем делать все, что угодно.

Итак приступим. Для примера нам потребуется создать новое приложение и разместить на его форме компонент TMemo. Все, больше никакие компоненты нам не понадобятся. Следующее, что нужно сделать - подключить модуль ShellAPI в разделе uses. Далее я выложу код программы с комментариями.

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Forms, ShellAPI, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
 { Private declarations }
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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


procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
    CFileName: array [0 .. MAX_PATH] of char; // переменная, хранящаяимяфайла
begin
  try
    If DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
    // Получаем путь к файлу и открывем его
    begin
      if ExtractFileExt(CFileName) = '.txt' then
        Memo1.Lines.LoadFromFile(CFileName);
    end;
  finally
    DragFinish(Msg.Drop); // отпустить файл
  end;
end;

end.

Логика работы следующая:

  1. Мы разрешаем программе принимать файлы drag'n'drop
  2. При перетаскивании мы получаем адрес файла
  3. Проверяем чтобы файл был с расширением "txt"
  4. Открываем файл
Все предельно просто, Delphi позволяет достаточно легко справиться с поставленной задачей .Надеюсь, что все стало на свои места.
 
Назад
Сверху Снизу