как принимать "перетаскиваемые" файлы.
При получении программой файлов, окну посылается сообщение WM_DROPFILES.
При помощи функции DragQueryFile можно определить количество и имена файлов.
При помощи функции DragQueryPoint можно определить координату мыши в тот момент,
когда пользователь "отпустил" файлы.
Эта программа открывает все "перетащенные" в нее файлы.
Причем, если пользователь перетащил файлы в PageControl1, то в PageControl1 эти файлы и откроются.
Code: |
... 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..1023] of char; i, FileCount: integer; p: TPoint; ts: TTabSheet; memo: TMemo; begin HF := Msg.Drop; FileCount := DragQueryFile(HF, $FFFFFFFF, nil, 0); 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; |
Даниил Карапетян.
На сайте https://delphi4all.narod.ru Вы найдете еще более 100 советов по Delphi.
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!