Delphi-PRAXiS
Seite 3 von 3     123   

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 10. Okt 2004 18:33

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
*push* nicht sauer sein luckie :P

mirage228 10. Okt 2004 18:47

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

ich hab dir mal eben was gebastelt:

Delphi-Quellcode:
  function IsDirectory(Dir: WideString): Boolean;
  var
    F: TWin32FindDataW;
    Handle: HWnd;
  begin
    Handle := FindFirstFileW(PWideChar(Dir), F);
    if Handle <> INVALID_HANDLE_VALUE then
    begin
      Result := ((f.dwFileAttributes and faDirectory) = faDirectory);
      Windows.FindClose(Handle);
    end else
    Result := False;
  end;

procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';
  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
       // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //   RootFolder + SR.Name
        FileList.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;    
 
procedure TForm1.WMDROPFILE(var msg: TMessage);
var LCount, Lanzahl, Lsize: integer;
  LDateiname: PChar;
  List: TStringList;
  i: Integer;
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);
    List := TStringList.Create;
    try
      if IsDirectory(String(LDateiName)) then
        FindAllFiles(List, String(LDateiName)) else
      List.Add(String(LDateiName));
      for i := 0 to List.Count-1 do
        If (ExtractFileExt(AnsiLowerCase(List[i])) = '.ico') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.bmp') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.jpg') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.jpeg') then
        Listbox1.Items.add(List[i]);
    finally
      List.Free;
    end;
// do Something with "LDateiname"
    StrDispose(LDateiname);
  end;
// FDropProc(LFileList);
  DragFinish(Msg.WParam);
end;
Ist ungetestet, sollte aber, so hoffe ich, funktionieren.

mfG
mirage228

Nicodius 10. Okt 2004 19:17

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Liste der Anhänge anzeigen (Anzahl: 1)
nee geht nid .... siehe anhang ;) das kommt nacher danke trotzdem

mirage228 10. Okt 2004 19:22

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

da warn kleiner Fehler:
Delphi-Quellcode:
Listbox1.Items.add(List[i]);
muss es heissen.

mfG
mirage228

Nicodius 10. Okt 2004 19:33

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
wohin damit?

mirage228 10. Okt 2004 19:36

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

Zitat von Nicodius
wohin damit?

An die Schleife:
Delphi-Quellcode:
      for i := 0 to List.Count-1 do
        If (ExtractFileExt(AnsiLowerCase(List[i])) = '.ico') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.bmp') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.jpg') or
           (ExtractFileExt(AnsiLowerCase(List[i])) = '.jpeg') then
        Listbox1.Items.add(List[i]);
mfG
mirage228

Nicodius 10. Okt 2004 19:56

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
DAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNNNNNNNKKKKKKKKKK KKKKEEEEEe




so viel geholfen DANKE mirage228!!! das macht ja gleich alle fragen aufeinmal dein CODE DANKEE! *umarm*

mirage228 10. Okt 2004 19:57

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

Zitat von Nicodius
DAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNNNNNNNKKKKKKKKKK KKKKEEEEEe




so viel geholfen DANKE mirage228!!! das macht ja gleich alle fragen aufeinmal dein CODE DANKEE! *umarm*

Bitte sehr :zwinker:

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.
Seite 3 von 3     123   

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