Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Drag and Drop c Win95 Explorer 2

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

Drag and Drop c Win95 Explorer 2

Автор: Aleksey


{Так можно заставить окно принимать файлы, перетаскиваемые из проводника}
{ОБЯЗАТЕЛЬНО ПОМЕСТИТЕ В СЕКЦИЮ PRIVATE СТРОКИ

procedure CreateParams(var Params: TCreateParams); override;
procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
и не забудьте - ShellAPI поместить в uses}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin

  inherited
    CreateParams(Params);
  {сделаем окно способным принимать файлы}
  Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES;
end;

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

  aFile: array[0..255] of Char;
  //FilesCount : Integer;
begin

  inherited;
  {так можно узнать сколько файлов перетягивается}
  // FilesCount := DragQueryFile(Message.drop, $FFFFFFFF, nil, 0);

  begin
    {здесь можно поставить цикл открытия всех перетаскиваемых файлов

    for N := 0 to FilesCount - 1 do DragQueryFile(Message.drop, N, aFile, 256);
    а в данном случае открывается только первый файл в списке}
    DragQueryFile(Message.drop, 0, aFile, 256);
    Memo1.Lines.LoadFromFile(aFile);
  end;
  DragFinish(Message.Drop);
end;

procedure TForm1.FormCreate(Sender: TObject); {Form1.OnCreate}
begin
  {сделаем окно неравнодушным к пролетающим над ним файлам}
  DragAcceptFiles(Handle, True);
end;


Вот перевод текста на русский язык:

Процедура CreateParams

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES; // Сделать окно принимать файлы
end;

Эта процедура переопределяется для изменения записи TCreateParams. Она устанавливает свойство ExStyle в включение стиля WS_EX_ACCEPTFILES, который позволяет окну принимать файлы, перетаскиваемые из Windows Explorer.

Процедура WMDropFiles

procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  aFile: array[0..255] of Char; // Буфер имени файла
begin
  inherited;
  DragQueryFile(Message.Drop, 0, aFile, 256); // Получить имя первого файла в списке
  Memo1.Lines.LoadFromFile(aFile); // Загрузить файл в контрольный элемент Memo
end;

Эта процедура вызывается при перетаскивании файла на окно. Она использует функцию DragQueryFile для получения имени первого файла в списке, а затем загружает этот файл в контрольный элемент Memo (предполагается, что есть один с именем Memo1).

Процедура FormCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True); // Сделать окно принимать файлы
end;

Эта процедура вызывается при создании формы. Она вызывает функцию DragAcceptFiles для сделать окно принимать файлы.

Замечания

  • Код использует unit ShellAPI, который предоставляет функции для взаимодействия с оболочкой (Windows Explorer).
  • Процедура WMDropFiles предполагает, что есть контрольный элемент Memo с именем Memo1, где будет загружен файл.
  • Код только обрабатывает первый файл в списке. Если вам нужно обрабатывать несколько файлов, вам придется изменить код соответствующим образом.

В целом, этот код предоставляет основной пример создания окна, которое принимает файлы, перетаскиваемые из Windows Explorer в Delphi.

В статье описывается способ создания приложения на языке Pascal с использованием Win95 Explorer для перетаскивания и обработки файлов.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-11 01:00:40/0.0026490688323975/0