Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как перетаскивать файлы (как принимать "перетаскиваемые" файлы)?

Delphi , Синтаксис , Drag and Drop

Как перетаскивать файлы (как принимать "перетаскиваемые" файлы)?

При получении программой файлов, окну посылается сообщение 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;

 

 

Даниил Карапетян.

Email: delphi4all@narod.ru


Code:

{ На эту форму можно бросить файл (например из проводника)
и он будет открыт }
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);
protected
 {Это и есть самая главная процедура}
   procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles;
end;
 
var
Form1: TForm1;
implementation
{$R *.DFM}
 
procedure TForm1.WMDropFiles(var Msg: TMessage);
var
  Filename: array[0 .. 256] of Char;
  Count   : integer;
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;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
{ Говорим Windows, что на нас можно бросать файлы }
DragAcceptFiles(Handle, True);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
{ Закрываем за собой дверь золотым ключиком}
DragAcceptFiles(Handle, False);
end;
end.

 

Источник:

http://dmitry9.nm.ru/info/

Статья Как перетаскивать файлы (как принимать "перетаскиваемые" файлы)? раздела Синтаксис Drag and Drop может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Drag and Drop ::


реклама

::


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
04.07.2020 14:32:22/0.014702081680298/2