![]() |
Mehrere Dateien vom Explorer per Drag & Drop in Listbox?
Wie kann ich mehrere Dateien per D&D vom desktop/explorer etc... in die Listbox bzw einen ordner reinziehen so dass nacher alle bmp und jpg dateien in die listbox kommen
vielen dank Nicodius |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
|
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
den code hab ich für EINZELNE dateien verwendet oder?
|
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
Nein, auch für mehrere Dateien:
Delphi-Quellcode:
iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, pcFileName, 255);
for i := 0 to iFileCount - 1 do begin |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
VIELEN VIELEN VIELEN DANK!!!
und wie mach ich das: Ordner reinziehen - filtern und die dateipfade von allen Jpg, jpeg und Bmp files ins Listbox schreiben? |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
dann kommt nur x(wiviele markiert worden sind) mal das was als ERSTES markiert worden ist
wenn ich 1.bmp, 2.jpg, 3.bmp markiere kommt 3 x 1.bmp mein quelltext :
Delphi-Quellcode:
procedure TForm1.WMDROPFILE(var msg: TMessage);
var hDrop : Cardinal ; fName : array[0..MAX_PATH] of Char ; iFileCount, i : Integer; begin hDrop := Msg.WParam ; fName := '' ; DragQueryFile(hDrop, 0, fName, MAX_PATH); iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, fname, 255); for i := 0 to iFileCount - 1 do begin If (ExtractFileExt(lowercase(String(fname))) = '.bmp') or (ExtractFileExt(lowercase(String(fname))) = '.jpg') or (ExtractFileExt(lowercase(String(fname))) = '.jpeg') then Listbox1.Items.add((String(fName))); end; DragFinish (hDrop); end; |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
Zieh den Ordner auf dein Listbox und im OnDrop Event rufst du die Funktion aus der Code-Lib zum Finden von Dateien auf und übergibst ihr den Ordner und zwar zweimal, einmal für die Bitmaps und einmal für die JPEGS.
|
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
@Nicodius: Dein Fehler ist das du FName nicht neu setzt in der Schleife sondern nur einmal vor der schleife.
Ich verwende folgenden Source in einer meiner Komponenten
Delphi-Quellcode:
in deinem Fall sollte folgendes reichen (ungetestet)
type
TNotifyDropFiles = procedure(Values: TStringlist) of Object; [...] FDropProc: TNotifyDropFiles; [...] procedure TVisualJBList.FWMDROPFILES (var Msg: TMessage); var LCount, Lanzahl, Lsize: integer; LDateiname: PChar; LFileList: TStringlist; begin If Assigned(FDropProc) then begin LFileList := TStringlist.Create; LDateiname := ''; Lanzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, LDateiname, 255); for LCount := 0 to (Lanzahl - 1) do begin Lsize := DragQueryFile(Msg.WParam, LCount , nil, 0) + 1; LDateiname:= StrAlloc(Lsize); DragQueryFile(Msg.WParam,LCount , LDateiname, Lsize); LFileList.Add(string(LDateiname)); StrDispose(LDateiname); end; LFileList.Free; end; DragFinish(Msg.WParam); end;
Delphi-Quellcode:
procedure TYourType.FWMDROPFILES(var Msg: TMessage);
var LCount, Lanzahl, Lsize: integer; LDateiname: PChar; begin LDateiname := ''; Lanzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, LDateiname, 255); for LCount := 0 to (Lanzahl - 1) do begin Lsize := DragQueryFile(Msg.WParam, LCount , nil, 0) + 1; LDateiname:= StrAlloc(Lsize); DragQueryFile(Msg.WParam,LCount , LDateiname, Lsize); // do Something with "LDateiname" StrDispose(LDateiname); end; FDropProc(LFileList); DragFinish(Msg.WParam); end; |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
danke ;) ich schau mal ;)
danke luckie! |
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
aber wie filtere ich jetzt daraus alle bmp und jpg/jpeg dateien?
SirThornberry: "[Fehler] Unit1.pas(204): Undefinierter Bezeichner: 'FDropProc'" |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz