Einzelnen Beitrag anzeigen

Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 03:33
Du musst Windows sagen, dass dein Programm Dateien per Drag & Drop akzeptiert. Und dann musst du deine TForm um eine Nachrichtenschleife erweitern.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    { Private-Deklarationen }
    procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
  ...
  end;
uses ShellAPI;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle, True);
end;
Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  Buffer: array[0..MAX_PATH] of Char;
begin

  DragQueryFile(Message.Drop, 0, @Buffer, SizeOf(Buffer));
  Edit1.Text := Buffer;

end;
Wenn du mehrere Dateien auswerten willst, musst du den Rückgabewert von DragQueryFile auswerten und in einer Schleife DragQueryFile aufrufen.

Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  Count: Integer;
  I: Integer;
  Buffer: array[0..MAX_PATH] of Char;
begin

  Memo1.Clear;
  Count := DragQueryFile(Message.Drop, UINT(-1), nil, 0);

  for I := 0 to Count - 1 do
  begin
    DragQueryFile(Message.Drop, I, @Buffer, SizeOf(Buffer));
    Memo1.Lines.Add(Buffer);
  end;

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat