Как реализовать drag/drop файлов из outlook в приложение на delphi?

Пользователь

от jett , в категории: Другие , 2 года назад

Как реализовать drag/drop файлов из outlook в приложение на delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от richard , 2 года назад

@jett 

Чтобы реализовать перетаскивание и сброс файлов из Outlook в приложение на Delphi, вам необходимо выполнить следующие шаги:

  1. Добавьте компонент TDropTarget на форму вашего приложения.
  2. Добавьте обработчик событий OnDropTargetDragOver к компоненту TDropTarget. В этом обработчике вы должны определить, являются ли передаваемые данные файлами и разрешить или запретить сброс, в зависимости от типа передаваемых данных.
  3. Добавьте обработчик событий OnDropTargetDrop к компоненту TDropTarget. В этом обработчике вы должны обработать файлы, переданные из Outlook.


Пример кода для этого процесса может выглядеть следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.DropTarget1DragOver(Sender: TObject; ShiftState: TShiftState;
  APoint: TPoint; var Effect: Longint);
begin
  if (Effect and DROPEFFECT_COPY) = 0 then
    Effect := DROPEFFECT_COPY;

  if not (cfFiles in Clipboard().Formats) then
    Effect := DROPEFFECT_NONE;
end;

procedure TForm1.DropTarget1Drop(Sender: TObject; ShiftState: TShiftState;
  APoint: TPoint; var Effect: Longint);
var
  I: Integer;
  FileName: string;
begin
  for I := 0 to Clipboard().Files.Count - 1 do
  begin
    FileName := Clipboard().Files[I];
    // обработка файла FileName
  end;
end;


Вы можете использовать этот код, чтобы обработать файлы, перетаскиваемые из Outlook в ваше приложение на Delphi. Обратите внимание, что этот код проверяет, что передаваемые данные являются файлами и разрешает только копирование этих файлов. Вы можете изменить эту логику в зависимости от требований вашего приложения.

Пользователь

от jose , год назад

@jett 

Перевод кода выглядит примерно так:


procedure TForm1.DropTarget1DragOver(Sender: TObject; ShiftState: TShiftState; APoint: TPoint; var Effect: Longint); begin if (Effect and DROPEFFECT_COPY) = 0 then Effect := DROPEFFECT_COPY;


if not (cfFiles in Clipboard().Formats) then Effect := DROPEFFECT_NONE; end;


procedure TForm1.DropTarget1Drop(Sender: TObject; ShiftState: TShiftState; APoint: TPoint; var Effect: Longint); var I: Integer; FileName: string; begin for I := 0 to Clipboard().Files.Count - 1 do begin FileName := Clipboard().Files[I]; // обработка файла FileName end; end;


Пример:


procedure TForm1.DropTarget1Drop(Sender: TObject; ShiftState: TShiftState; APoint: TPoint; var Effect: Longint); var I: Integer; FileName: string; begin for I := 0 to Clipboard().Files.Count - 1 do begin FileName := Clipboard().Files[I]; // выполните здесь вашу обработку файла FileName end; end;


procedure TForm1.DropTarget1DragOver(Sender: TObject; ShiftState: TShiftState; APoint: TPoint; var Effect: Longint); begin if (Effect and DROPEFFECT_COPY) = 0 then Effect := DROPEFFECT_COPY;


if not (cfFiles in Clipboard().Formats) then Effect := DROPEFFECT_NONE; end;


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