Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Dateien / Laufwerke (https://www.delphipraxis.net/41-library-dateien-laufwerke/)
-   -   Delphi Dateien per Drag-and-Drop in ListBox einfügen (https://www.delphipraxis.net/126950-dateien-per-drag-drop-listbox-einfuegen.html)

fkerber 5. Jan 2009 15:11


Dateien per Drag-and-Drop in ListBox einfügen
 
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.


Delphi-Quellcode:
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.

Delphi-Quellcode:
  if (FileGetAttr(String(PCharFileName)) <> faDirectory) then ListBox1.Items.Add(String(PCharFileName));


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz