Pliki

0

Siema!
nie wiem czy to było na forum, ale zadam to pytanie: jak można zrobić aby po wpuszczeniu katalogu do listbox nie wyświetlała się ścieżka dostępu do folderu tylko wszystki pliki które się w nim znajdują. Aha potrzebny mi jest też kod jak wrzucić do lisbox jakiś plik (tzn. jego nazwę i ścieżkę dostępu)
Dzięki!

0
  1. findfirs, findnext + F1 (FAQ,forum)
unit Unit1;
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    ListBox1: TListBox; 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
    { Private declarations } 
    procedure WMDROPFILES(var Msg: TMessage); 
    procedure LBWindowProc(var Message: TMessage); 
    procedure AddFile(sFileName: string); 
  public 
    { Public declarations } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
uses 
  ShellAPI; 
 
var 
  OldLBWindowProc: TWndMethod; 
 
procedure TForm1.AddFile(sFileName: string); 
begin 
  ListBox1.Items.Add(sFilename); 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  OldLBWindowProc := ListBox1.WindowProc; // store defualt WindowProc 
  ListBox1.WindowProc := LBWindowProc; // replace default WindowProc 
  DragAcceptFiles(ListBox1.Handle, True); // now ListBox1 accept dropped files 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  ListBox1.WindowProc := OldLBWindowProc; 
  DragAcceptFiles(ListBox1.Handle, False); 
end; 
 
procedure TForm1.LBWindowProc(var Message: TMessage); 
begin 
  if Message.Msg = WM_DROPFILES then 
    WMDROPFILES(Message); // handle WM_DROPFILES message 
  OldLBWindowProc(Message); 
  // call default ListBox1 WindowProc method to handle all other messages 
end; 
 
procedure TForm1.WMDROPFILES(var Msg: TMessage); 
var 
  pcFileName: PChar; 
  i, iSize, iFileCount: integer; 
begin 
  pcFileName := ''; // to avoid compiler warning message 
  iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, pcFileName, 255); 
  for i := 0 to iFileCount - 1 do 
  begin 
    iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1; 
    pcFileName := StrAlloc(iSize); 
    DragQueryFile(Msg.wParam, i, pcFileName, iSize); 
    if FileExists(pcFileName) then 
      AddFile(pcFileName); // method to add each file 
    StrDispose(pcFileName); 
  end; 
  DragFinish(Msg.wParam); 
end; 
 
end. 

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