Wie kann ich Drag&Drop mit dem Explorer realisieren?


Folgendes Beispiel bereitet ein Formular darauf vor, mit Drag&Drop vom Explorer zu arbeiten:

uses ShellApi;

interface

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  protected
    procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES;
  private
  public
end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, true)
end;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
var i, anzahl, size: Integer;
    Dateiname: PChar;
begin
  inherited;
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname,255);
  for i := 0 to (anzahl - 1) do begin
    size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
    Dateiname := StrAlloc(size);
    DragQueryFile(Msg.WParam, i, Dateiname, size);

    // tu was mit StrPas(Dateiname);

    StrDispose(Dateiname)
  end;
  DragFinish(Msg.WParam)
end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ