home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 March / Chip_2002-03_cd1.bin / zkuste / delphi / kompon / d13456 / FINDFILE.ZIP / Demo16 / Main16.pas < prev   
Pascal/Delphi Source File  |  2000-04-15  |  5KB  |  199 lines

  1. unit Main16;
  2.  
  3. interface
  4.  
  5. uses
  6.   WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ExtCtrls, StdCtrls, Spin, TabNotBk, FindFile;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     FoundFiles: TListBox;
  12.     FindButton: TButton;
  13.     StopButton: TButton;
  14.     FindFile: TFindFile;
  15.     Status: TPanel;
  16.     TabbedNotebook: TTabbedNotebook;
  17.     Label1: TLabel;
  18.     Filename: TEdit;
  19.     Label2: TLabel;
  20.     Location: TEdit;
  21.     Subfolders: TCheckBox;
  22.     BrowseButton: TButton;
  23.     Attributes: TGroupBox;
  24.     System: TCheckBox;
  25.     Hidden: TCheckBox;
  26.     Readonly: TCheckBox;
  27.     Archive: TCheckBox;
  28.     Directory: TCheckBox;
  29.     Label3: TLabel;
  30.     Containing: TEdit;
  31.     IgnoreCase: TCheckBox;
  32.     ExactAttr: TCheckBox;
  33.     FileSize: TGroupBox;
  34.     Label8: TLabel;
  35.     Label9: TLabel;
  36.     Label10: TLabel;
  37.     Label11: TLabel;
  38.     SizeMax: TSpinEdit;
  39.     SizeMin: TSpinEdit;
  40.     GroupBox1: TGroupBox;
  41.     BD: TCheckBox;
  42.     BeforeDate: TEdit;
  43.     AD: TCheckBox;
  44.     AfterDate: TEdit;
  45.     AfterTime: TEdit;
  46.     AT: TCheckBox;
  47.     BeforeTime: TEdit;
  48.     BT: TCheckBox;
  49.     procedure FindButtonClick(Sender: TObject);
  50.     procedure StopButtonClick(Sender: TObject);
  51.     procedure FindFileNewFolder(Sender: TObject; Folder: String;
  52.       var IgnoreFolder: Boolean);
  53.     procedure FindFileFound(Sender: TObject; Folder: String;
  54.       var FileInfo: TSearchRec);
  55.     procedure BrowseButtonClick(Sender: TObject);
  56.     procedure FoundFilesDblClick(Sender: TObject);
  57.     procedure BDClick(Sender: TObject);
  58.     procedure BTClick(Sender: TObject);
  59.     procedure ADClick(Sender: TObject);
  60.     procedure ATClick(Sender: TObject);
  61.     procedure FormCreate(Sender: TObject);
  62.   public
  63.     Folders: Integer;
  64.     StartTime: LongInt;
  65.   end;
  66.  
  67. var
  68.   MainForm: TMainForm;
  69.  
  70. implementation
  71.  
  72. {$R *.DFM}
  73.  
  74. uses
  75.   FileCtrl, ShellAPI;
  76.  
  77. procedure TMainForm.FindButtonClick(Sender: TObject);
  78. begin
  79.   Folders := 0;
  80.   StartTime := GetTickCount;
  81.   { Sets FileFile properties }
  82.   FindFile.Filename := Filename.Text;
  83.   FindFile.Location := Location.Text;
  84.   FindFile.Subfolders := Subfolders.Checked;
  85.   FindFile.Containing := Containing.Text;
  86.   FindFile.IgnoreCase := IgnoreCase.Checked;
  87.   FindFile.Attributes := [];
  88.   if Archive.Checked then
  89.     FindFile.Attributes := FindFile.Attributes + [ffArchive];
  90.   if Readonly.Checked then
  91.     FindFile.Attributes := FindFile.Attributes + [ffReadonly];
  92.   if Hidden.Checked then
  93.     FindFile.Attributes := FindFile.Attributes + [ffHidden];
  94.   if System.Checked then
  95.     FindFile.Attributes := FindFile.Attributes + [ffSystem];
  96.   if Directory.Checked then
  97.     FindFile.Attributes := FindFile.Attributes + [ffDirectory];
  98.   FindFile.ExactAttribute := ExactAttr.Checked;
  99.   FindFile.SizeMin := SizeMin.Value * 1024; { KB -> byte }
  100.   FindFile.SizeMax := SizeMax.Value * 1024; { KB -> byte }
  101.   FindFile.ModifiedBefore := 0;
  102.   FindFile.ModifiedAfter := 0;
  103.   if BD.Checked then
  104.     FindFile.ModifiedBefore := StrToDate(BeforeDate.Text);
  105.   if BT.Checked then
  106.     FindFile.ModifiedBefore := FindFile.ModifiedBefore + StrToTime(BeforeTime.Text);
  107.   if AD.Checked then
  108.     FindFile.ModifiedAfter := StrToDate(AfterDate.Text);
  109.   if AT.Checked then
  110.     FindFile.ModifiedAfter := FindFile.ModifiedAfter + StrToTime(AfterTime.Text);
  111.   { Updates visual controls }
  112.   FoundFiles.Clear;
  113.   FindButton.Enabled := False;
  114.   StopButton.Enabled := True;
  115.   { Begins search }
  116.   FindFile.Execute;
  117.   { Updates visual controls }
  118.   StopButton.Enabled := False;
  119.   FindButton.Enabled := True;
  120.   Status.Caption := Format('%d files found in %d folders (%d ms)',
  121.     [FoundFiles.Items.Count, Folders, GetTickCount - StartTime]);
  122.   if FindFile.Aborted then
  123.     Status.Caption := 'Search aborted - ' + Status.Caption;
  124. end;
  125.  
  126. procedure TMainForm.StopButtonClick(Sender: TObject);
  127. begin
  128.   FindFile.Abort;
  129. end;
  130.  
  131. procedure TMainForm.FindFileNewFolder(Sender: TObject; Folder: String;
  132.   var IgnoreFolder: Boolean);
  133.  
  134. begin
  135.   Inc(Folders);
  136.   Status.Caption := Folder;
  137.   Application.ProcessMessages;
  138. end;
  139.  
  140. procedure TMainForm.FindFileFound(Sender: TObject; Folder: String;
  141.   var FileInfo: TSearchRec);
  142. begin
  143.   if Folder[Length(Folder)] <> '\' then
  144.     FoundFiles.Items.Add(Folder + '\' + FileInfo.Name)
  145.   else
  146.     FoundFiles.Items.Add(Folder + FileInfo.Name);
  147.   Application.ProcessMessages;
  148. end;
  149.  
  150. procedure TMainForm.BrowseButtonClick(Sender: TObject);
  151. var
  152.   Dir: String;
  153. begin
  154.   Dir := Location.Text;
  155.   if SelectDirectory(Dir, [], 0) then
  156.     Location.Text := Dir;
  157. end;
  158.  
  159. procedure TMainForm.FoundFilesDblClick(Sender: TObject);
  160. var
  161.   C: array[0..255] of Char;
  162. begin
  163.   if FoundFiles.ItemIndex >= 0 then
  164.   begin
  165.     StrPCopy(C, FoundFiles.Items[FoundFiles.ItemIndex]);
  166.     ShellExecute(0, 'open', C, nil, nil, SW_SHOWNORMAL);
  167.   end;
  168. end;
  169.  
  170. procedure TMainForm.BDClick(Sender: TObject);
  171. begin
  172.   BeforeDate.Enabled := BD.Checked;
  173. end;
  174.  
  175. procedure TMainForm.BTClick(Sender: TObject);
  176. begin
  177.   BeforeTime.Enabled := BT.Checked;
  178. end;
  179.  
  180. procedure TMainForm.ADClick(Sender: TObject);
  181. begin
  182.   AfterDate.Enabled := AD.Checked;
  183. end;
  184.  
  185. procedure TMainForm.ATClick(Sender: TObject);
  186. begin
  187.   AfterTime.Enabled := AT.Checked;
  188. end;
  189.  
  190. procedure TMainForm.FormCreate(Sender: TObject);
  191. begin
  192.   BeforeDate.Text := DateToStr(Date);
  193.   AfterDate.Text := DateToStr(Date);
  194.   BeforeTime.Text := TimeToStr(Time);
  195.   AfterTime.Text := TimeToStr(Time);
  196. end;
  197.  
  198. end.
  199.