Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

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

  Alt 9. Okt 2004, 08:15
@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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat