Einzelnen Beitrag anzeigen

Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

Dateien per Drag-and-Drop in ListBox einfügen

  Alt 5. Jan 2009, 15:11
mazel stellt hier vor, wie man Dateien (und Ordner) per Drag und Drop in eine Listbox eingefügt werden können.

Möchte man nur Dateien hinzufügen, muss dies explizit durch Überprüfung sichergestellt werden. Siehe dazu weiter unten.


uses ..., ShellAPI;
Delphi-Quellcode:
private
  procedure WMDROPFILES(var Msg: TMessage); Message WM_DROPFILES;


procedure TForm1.WMDROPFILES(var Msg: TMessage);
var
  i, Counts, Size: Integer;
  PCharFileName: PChar;

begin
  inherited;
  PCharFileName:=nil;
  Counts:=DragQueryFile(Msg.WParam, $FFFFFFFF, PCharFileName, 255);
  for i:=0 to Counts - 1 do
    begin
      Size:=DragQueryFile(Msg.WParam, i, nil, 0) + 1;
      PCharFileName:=StrAlloc(Size);
      DragQueryFile(Msg.WParam, i, PCharFileName, Size);
      ListBox1.Items.Add(String(PCharFileName));
      StrDispose(PCharFileName);
   end;
  DragFinish(Msg.WParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(ListBox1.Handle, True);
end;
Zum Ausprobieren des obigen Codes benötigt man natürlich noch eine Listbox auf dem Formular mit Namen ListBox1.


Möchte man verhindern, dass Ordner auch hinzugefügt werden können, so darf man nicht einfach hinzufügen, sondern man muss das Hinzufügen mittels folgender Überprüfung einschränken.

  if (FileGetAttr(String(PCharFileName)) <> faDirectory) then ListBox1.Items.Add(String(PCharFileName));
Frederic Kerber
  Mit Zitat antworten Zitat