(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
Re: Mehrere Dateien vom Explorer per Drag & Drop in List
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
|
|
Zitat
|