DropFiles

0

Cze,
W programie mam takie dwie procedurki:

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(ListBox1.Handle, True);
end;

procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES);
var
NumFiles : LongInt;
I : LongInt;
buffer : array[0..2048] of char;
begin
{$IFDEF D4}
NumFiles := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0);
{$ELSE}
NumFiles := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0);
{$ENDIF}
for I := 0 to (NumFiles - 1) do
begin
DragQueryFile(Message.Drop, i, @buffer, SizeOf(buffer));
ListBox1.Items.Add(buffer);
end;
DragFinish(Message.Drop);
end;

Gdy przeciągam plik do ListBoxa, to dodaje mi się pozycja z jego ścieżką. Czyli dobrze. A gdy przeciągam folder do ListBoxa to dodaje mi się jego ścieżka. A ja chcę, żeby zamiast tego wywoływała się inna procedura z szukaniem plików. Czyli ta:

procedure TMainForm.PenetrateDirectory(dir: String; list: TStrings; mask: String);
var
SRec: TSearchRec;
res: Integer;
ec: Char;
begin
ec := ':';
if dir <> '' then ec := dir[Length(dir)];
if (ec <> ) <b>and</b> (ec <> ':') <b>then</b> dir := dir + ;
res := FindFirst(dir + mask, faArchive, SRec);
while res = 0 do begin
list.Add(dir + SRec.Name);
res := FindNext(SRec);
end;
FindClose(SRec);
end;

I dodała do ListBoxa wszystkie pliki, które znajdzie w środku tego katalogu zamiast ścieżki dostępu. Czy ktoś może mi pomóc?

//wiesz co to sa tagi < delphi > ?? [glowa] - lofix

0
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(ListBox1.Handle, True);
end;

procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES);
var
 NumFiles : LongInt;
 I : LongInt;
 buffer : array[0..2048] of char;
begin
{$IFDEF D4}
 NumFiles := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0);
{$ELSE}
 NumFiles := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0);
{$ENDIF}
 for I := 0 to (NumFiles - 1) do
  begin
  DragQueryFile(Message.Drop, i, @buffer, SizeOf(buffer));

  if DirectoryExists(buffer) then
     PenetrateDirectory(buffer, ListBox1.Items, '*.*')
       else
         ListBox1.Items.Add(buffer);

 end;
 DragFinish(Message.Drop);
end;

Chyba tak :-P

0

Dzięki wielkie :P
Pomogło...

1 użytkowników online, w tym zalogowanych: 0, gości: 1