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
Wrap
Pascal/Delphi Source File
|
2000-04-15
|
5KB
|
199 lines
unit Main16;
interface
uses
WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, TabNotBk, FindFile;
type
TMainForm = class(TForm)
FoundFiles: TListBox;
FindButton: TButton;
StopButton: TButton;
FindFile: TFindFile;
Status: TPanel;
TabbedNotebook: TTabbedNotebook;
Label1: TLabel;
Filename: TEdit;
Label2: TLabel;
Location: TEdit;
Subfolders: TCheckBox;
BrowseButton: TButton;
Attributes: TGroupBox;
System: TCheckBox;
Hidden: TCheckBox;
Readonly: TCheckBox;
Archive: TCheckBox;
Directory: TCheckBox;
Label3: TLabel;
Containing: TEdit;
IgnoreCase: TCheckBox;
ExactAttr: TCheckBox;
FileSize: TGroupBox;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
SizeMax: TSpinEdit;
SizeMin: TSpinEdit;
GroupBox1: TGroupBox;
BD: TCheckBox;
BeforeDate: TEdit;
AD: TCheckBox;
AfterDate: TEdit;
AfterTime: TEdit;
AT: TCheckBox;
BeforeTime: TEdit;
BT: TCheckBox;
procedure FindButtonClick(Sender: TObject);
procedure StopButtonClick(Sender: TObject);
procedure FindFileNewFolder(Sender: TObject; Folder: String;
var IgnoreFolder: Boolean);
procedure FindFileFound(Sender: TObject; Folder: String;
var FileInfo: TSearchRec);
procedure BrowseButtonClick(Sender: TObject);
procedure FoundFilesDblClick(Sender: TObject);
procedure BDClick(Sender: TObject);
procedure BTClick(Sender: TObject);
procedure ADClick(Sender: TObject);
procedure ATClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
public
Folders: Integer;
StartTime: LongInt;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
uses
FileCtrl, ShellAPI;
procedure TMainForm.FindButtonClick(Sender: TObject);
begin
Folders := 0;
StartTime := GetTickCount;
{ Sets FileFile properties }
FindFile.Filename := Filename.Text;
FindFile.Location := Location.Text;
FindFile.Subfolders := Subfolders.Checked;
FindFile.Containing := Containing.Text;
FindFile.IgnoreCase := IgnoreCase.Checked;
FindFile.Attributes := [];
if Archive.Checked then
FindFile.Attributes := FindFile.Attributes + [ffArchive];
if Readonly.Checked then
FindFile.Attributes := FindFile.Attributes + [ffReadonly];
if Hidden.Checked then
FindFile.Attributes := FindFile.Attributes + [ffHidden];
if System.Checked then
FindFile.Attributes := FindFile.Attributes + [ffSystem];
if Directory.Checked then
FindFile.Attributes := FindFile.Attributes + [ffDirectory];
FindFile.ExactAttribute := ExactAttr.Checked;
FindFile.SizeMin := SizeMin.Value * 1024; { KB -> byte }
FindFile.SizeMax := SizeMax.Value * 1024; { KB -> byte }
FindFile.ModifiedBefore := 0;
FindFile.ModifiedAfter := 0;
if BD.Checked then
FindFile.ModifiedBefore := StrToDate(BeforeDate.Text);
if BT.Checked then
FindFile.ModifiedBefore := FindFile.ModifiedBefore + StrToTime(BeforeTime.Text);
if AD.Checked then
FindFile.ModifiedAfter := StrToDate(AfterDate.Text);
if AT.Checked then
FindFile.ModifiedAfter := FindFile.ModifiedAfter + StrToTime(AfterTime.Text);
{ Updates visual controls }
FoundFiles.Clear;
FindButton.Enabled := False;
StopButton.Enabled := True;
{ Begins search }
FindFile.Execute;
{ Updates visual controls }
StopButton.Enabled := False;
FindButton.Enabled := True;
Status.Caption := Format('%d files found in %d folders (%d ms)',
[FoundFiles.Items.Count, Folders, GetTickCount - StartTime]);
if FindFile.Aborted then
Status.Caption := 'Search aborted - ' + Status.Caption;
end;
procedure TMainForm.StopButtonClick(Sender: TObject);
begin
FindFile.Abort;
end;
procedure TMainForm.FindFileNewFolder(Sender: TObject; Folder: String;
var IgnoreFolder: Boolean);
begin
Inc(Folders);
Status.Caption := Folder;
Application.ProcessMessages;
end;
procedure TMainForm.FindFileFound(Sender: TObject; Folder: String;
var FileInfo: TSearchRec);
begin
if Folder[Length(Folder)] <> '\' then
FoundFiles.Items.Add(Folder + '\' + FileInfo.Name)
else
FoundFiles.Items.Add(Folder + FileInfo.Name);
Application.ProcessMessages;
end;
procedure TMainForm.BrowseButtonClick(Sender: TObject);
var
Dir: String;
begin
Dir := Location.Text;
if SelectDirectory(Dir, [], 0) then
Location.Text := Dir;
end;
procedure TMainForm.FoundFilesDblClick(Sender: TObject);
var
C: array[0..255] of Char;
begin
if FoundFiles.ItemIndex >= 0 then
begin
StrPCopy(C, FoundFiles.Items[FoundFiles.ItemIndex]);
ShellExecute(0, 'open', C, nil, nil, SW_SHOWNORMAL);
end;
end;
procedure TMainForm.BDClick(Sender: TObject);
begin
BeforeDate.Enabled := BD.Checked;
end;
procedure TMainForm.BTClick(Sender: TObject);
begin
BeforeTime.Enabled := BT.Checked;
end;
procedure TMainForm.ADClick(Sender: TObject);
begin
AfterDate.Enabled := AD.Checked;
end;
procedure TMainForm.ATClick(Sender: TObject);
begin
AfterTime.Enabled := AT.Checked;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
BeforeDate.Text := DateToStr(Date);
AfterDate.Text := DateToStr(Date);
BeforeTime.Text := TimeToStr(Time);
AfterTime.Text := TimeToStr(Time);
end;
end.