Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Dateien vom Explorer per Drag & Drop in Listbox? (https://www.delphipraxis.net/31338-mehrere-dateien-vom-explorer-per-drag-drop-listbox.html)

Nicodius 7. Okt 2004 15:46


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

toms 7. Okt 2004 15:48

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Hi,

Schau mal hier.

Nicodius 7. Okt 2004 15:49

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
den code hab ich für EINZELNE dateien verwendet oder?

API 7. Okt 2004 15:51

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

Nicodius 7. Okt 2004 16:01

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?

Nicodius 8. Okt 2004 21:46

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;

Luckie 9. Okt 2004 00:04

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.

SirThornberry 9. Okt 2004 07:15

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:
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;
in deinem Fall sollte folgendes reichen (ungetestet)
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;

Nicodius 9. Okt 2004 08:48

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
danke ;) ich schau mal ;)


danke luckie!

Nicodius 9. Okt 2004 08:51

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 11:20 Uhr.
Seite 1 von 3  1 23      

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