DELPHI FAQ: Как принимать перетаскиваемые файлы?


Как принимать перетаскиваемые файлы?
Previous  Home  Next


как принимать "перетаскиваемые" файлы.

При получении программой файлов, окну посылается сообщение WM_DROPFILES.
При помощи функции DragQueryFile можно определить количество и имена файлов.
При помощи функции DragQueryPoint можно определить координату мыши в тот момент,
когда пользователь "отпустил" файлы.

Эта программа открывает все "перетащенные" в нее файлы.
Причем, если пользователь перетащил файлы в PageControl1, то в PageControl1 эти файлы и откроются.

...
  public

    procedure
 WMDropFiles(var Msg: TWMDropFiles);
      message
 WM_DROPFILES;
  end
;

var

  Form1: TForm1;

implementation


{$R *.DFM}


uses
 ShellAPI, stdctrls;

procedure
 TForm1.WMDropFiles(var Msg: TWMDropFiles);
var

  HF: THandle;
  s: array
 [0..1023of char;
  i, FileCount: integer;
  p: TPoint;
  ts: TTabSheet;
  memo: TMemo;
begin

  HF := Msg.Drop;
  FileCount := DragQueryFile(HF, $FFFFFFFF
nil0);
  for
 i := 0 to FileCount - 1 do begin
    DragQueryFile(HF, i, s, sizeof(s));
    ts := TTabSheet.Create(nil
);
    DragQueryPoint(HF, p);
    if
 PtInRect(PageControl1.BoundsRect, p)
      then
 ts.PageControl := PageControl1
      else
 ts.PageControl := PageControl2;
    ts.Caption := ExtractFileName(s);
    memo := TMemo.Create(nil
);
    memo.Parent := ts;
    memo.Align := alClient;
    memo.Lines.LoadFromFile(s);
  end
;
  DragFinish(HF);
end
;

procedure
 TForm1.FormCreate(Sender: TObject);
begin

  PageControl1.Align := alLeft;
  PageControl2.Align := alClient;
  DragAcceptFiles(Form1.Handle, true);
end
;

procedure
 TForm1.FormDestroy(Sender: TObject);
begin

  DragAcceptFiles(Form1.Handle, false);
end
;


Всего доброго,
Даниил Карапетян.
На сайте http://delphi4all.narod.ru Вы найдете еще более 100 советов по Delphi.
Email: delphi4all@narod.ru







DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100



Samsung U600 | Sony Ericsson W960i