- Регистрация
- 9 Май 2015
- Сообщения
- 1,562
- Баллы
- 155
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ShellAPI{обязательно!};
type
TForm1 = class(TForm)
Memo1: TMemo;
FileNameLabel: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
{ Говорим Windows, что на нас можно бросать файлы }
DragAcceptFiles(Handle, True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
{ Закрываем за собой дверь золотым ключиком }
DragAcceptFiles(Handle, False);
end;
procedure TForm1.WMDropFiles(var Msg: TMessage);
const
cnMaxFileNameLen = 255;
var
Filename: array [0 .. 256] of Char;
nCount: integer;
acFileName: array [0 .. cnMaxFileNameLen] of Char;
begin
{ Получаем количество файлов (просто пример) }
nCount := DragQueryFile(Msg.WParam, $FFFFFFFF, acFileName, cnMaxFileNameLen);
{ Получаем имя первого файла }
DragQueryFile(THandle(Msg.WParam), 0, { это номер файла }
Filename, SizeOf(Filename));
{ Открываем его }
with FileNameLabel do
begin
Caption := LowerCase(StrPas(Filename));
Memo1.Lines.LoadfromFile(Caption);
end;
{ Отдаем сообщение о завершении процесса }
DragFinish(THandle(Msg.WParam));
end;
end.
