📄 main.pas
字号:
procedure TForm1.AnyCheckClick(Sender: TObject);
begin
if AnyCheck.Checked then
begin
dcDiskScanner.SearchAttributes := [saNormal, saArchive, saReadOnly, saHidden, saSystem, saDirectory, saAny];
NormalCheck.Checked := True;
ArchiveCheck.Checked := True;
ReadOnlyCheck.Checked := True;
HiddenCheck.Checked := True;
SystemCheck.Checked := True;
DirectoryCheck.Checked := True;
end
else
with dcDiskScanner do
begin
SearchAttributes := [];
if NormalCheck.Checked then
SearchAttributes := SearchAttributes + [saNormal];
if ArchiveCheck.Checked then
SearchAttributes := SearchAttributes + [saArchive];
if ReadOnlyCheck.Checked then
SearchAttributes := SearchAttributes + [saReadOnly];
if HiddenCheck.Checked then
SearchAttributes := SearchAttributes + [saHidden];
if SystemCheck.Checked then
SearchAttributes := SearchAttributes + [saSystem];
if DirectoryCheck.Checked then
SearchAttributes := SearchAttributes + [saDirectory];
end
end;
procedure TForm1.DiskScannerSearchClick(Sender: TObject);
begin
with dcDiskScanner do
begin
Folder := StartFolder.Text;
SearchMask := SearchMaskEdit.Text;
IncludeSubfolders := IncludeSubfoldersCheck.Checked;
IncludeHiddenSubfolders := IncludeHiddenSubfoldersCheck.Checked;
FindAllFolders := FindAllFoldersCheck.Checked;
SearchAttributes := [];
if NormalCheck.Checked then
SearchAttributes := SearchAttributes + [saNormal];
if ArchiveCheck.Checked then
SearchAttributes := SearchAttributes + [saArchive];
if ReadOnlyCheck.Checked then
SearchAttributes := SearchAttributes + [saReadOnly];
if HiddenCheck.Checked then
SearchAttributes := SearchAttributes + [saHidden];
if SystemCheck.Checked then
SearchAttributes := SearchAttributes + [saSystem];
if DirectoryCheck.Checked then
SearchAttributes := SearchAttributes + [saDirectory];
if AnyCheck.Checked then
SearchAttributes := SearchAttributes + [saAny];
SearchSize.AnySize := AnySizeCheck.Checked;
SearchSize.MinSizeKB := AtLeastSpin.Value;
SearchSize.MaxSizeKB := AtMostSpin.Value;
SearchTime.AnyTime := AnyTimeCheck.Checked;
if CreatedRadio.Checked then SearchTime.FindFiles := ffCreated
else
if ModifiedRadio.Checked then SearchTime.FindFiles := ffModified;
SearchTime.SinceTime := SinceDate.Date;
SearchTime.TillTime := TillDate.Date;
Matches.Limited := not UnlimitedCheck1.Checked;
Matches.MaxMatches := MaxMatchesSpin1.Value;
DiskScannerSearch.Enabled := False;
DiskScannerStop.Enabled := True;
DiskScannerSuspended.Checked := False;
with DiskScannerResults.Items do
begin
BeginUpdate;
try
Clear;
finally
EndUpdate;
end;
end;
Execute;
end;
end;
procedure TForm1.DiskScannerStopClick(Sender: TObject);
begin
dcDiskScanner.Stop
end;
procedure TForm1.UnlimitedCheck1Click(Sender: TObject);
begin
MaxMatchesSpin1.Enabled := not UnlimitedCheck1.Checked;
end;
procedure TForm1.UnlimitedCheck2Click(Sender: TObject);
begin
MaxMatchesSpin2.Enabled := not UnlimitedCheck2.Checked;
end;
procedure TForm1.dcDiskScannerFileFound(Sender: TObject; FileName,
FileType: String; FileSize: Extended; FileTime: TDateTime;
FileAttributes: TdcScanAttributes;
LargeIcon, SmallIcon: TIcon; SysImageIndex: Integer;
TotalFiles: Integer; TotalSize: Extended);
const
KBStr = 'KB';
var
St: String;
ListItem: TListItem;
begin
StatusBar.Panels[1].Text := 'Files ' + IntToStr(TotalFiles);
StatusBar.Panels[2].Text := 'Total size: ' + FloatToStr(TotalSize) + ' bytes';
ListItem := DiskScannerResults.Items.Add; // adding new item
{** file name}
ListItem.Caption := FileName;
{** file type}
ListItem.SubItems.Add(FileType);
{** file size}
if not (saDirectory in FileAttributes) then
if FileSize <> 0 then
St := FloatToStrF(Int(FileSize / 1024 + 1), ffNumber, 18, 0) + KBStr
else
St := '0' + KBStr
else
St := '';
ListItem.SubItems.Add(St);
{** file time}
ListItem.SubItems.Add(DateTimeToStr(FileTime));
{** icon image }
ListItem.ImageIndex := SysImageIndex;
if saHidden in FileAttributes then
ListItem.Cut := True;
St := LowerCase(ExtractFileExt(FileName));
{ adding shortcut overlay for .lnk and .url }
if (St = '.lnk') or (St = '.url') then
ListItem.OverlayIndex := 1;
{ //* Use code below if you don't want to use
//* system images and set DiskScanner1.UseIcons to True
ListItem.ImageIndex := ImageList1.Count;
ImageList1.AddIcon(SmallIcon); }
end;
procedure TForm1.dcDiskScannerScanFolder(Sender: TObject; Folder: String);
begin
StatusBar.Panels[0].Text := Folder;
end;
procedure TForm1.dcDiskScannerScanDone(Sender: TObject; TotalFiles: Integer;
TotalSize: Extended; ElapsedTimeInSeconds: Integer);
begin
DiskScannerSearch.Enabled := True;
DiskScannerStop.Enabled := False;
ShowMessage('Scanning done.'#13#10 +
'Total files found by specified criteria: ' + IntToStr(TotalFiles) + #13#10 +
'Total size of files: ' + FloatToStr(TotalSize) + ' bytes'#13#10 +
'Elapsed Time: ' + IntToStr(ElapsedTimeInSeconds) + ' seconds.');
end;
procedure TForm1.Add1Click(Sender: TObject);
var
AddPathForm: TAddPathForm;
ListItem: TListItem;
begin
AddPathForm := TAddPathForm.Create(Application);
if AddPathForm.ShowModal = id_Ok then
begin
ListItem := IncludeList.Items.Add;
ListItem.Caption := AddPathForm.PathEdit.Text;
ListItem.Checked := AddPathForm.IncludeCheck.Checked;
end;
AddPathForm.Free;
end;
procedure TForm1.Delete1Click(Sender: TObject);
var
ListItem: TListItem;
begin
ListItem := IncludeList.Selected;
if ListItem <> nil then
IncludeList.Items.Delete(ListItem.Index);
end;
procedure TForm1.Add2Click(Sender: TObject);
var
AddPathForm: TAddPathForm;
ListItem: TListItem;
begin
AddPathForm := TAddPathForm.Create(Application);
if AddPathForm.ShowModal = id_Ok then
begin
ListItem := ExcludeList.Items.Add;
ListItem.Caption := AddPathForm.PathEdit.Text;
ListItem.Checked := AddPathForm.IncludeCheck.Checked;
end;
AddPathForm.Free;
end;
procedure TForm1.Delete2Click(Sender: TObject);
var
ListItem: TListItem;
begin
ListItem := ExcludeList.Selected;
if ListItem <> nil then
ExcludeList.Items.Delete(ListItem.Index);
end;
procedure TForm1.IncludeListChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
Delete1.Enabled := IncludeList.Selected <> nil;
end;
procedure TForm1.ExcludeListChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
Delete2.Enabled := ExcludeList.Selected <> nil;
end;
procedure TForm1.MultiDiskScannerSearchClick(Sender: TObject);
var
i: Integer;
ListItem: TListItem;
begin
ResultsList.Items.Clear;
dcMultiDiskScanner.IncludeList.Clear;
dcMultiDiskScanner.ExcludeList.Clear;
i := IncludeList.Items.Count;
if i <> 0 then
for i := 0 to i - 1 do
begin
ListItem := IncludeList.Items[i];
dcMultiDiskScanner.IncludeList.AddPath(ListItem.Caption, ListItem.Checked);
end;
i := ExcludeList.Items.Count;
if i <> 0 then
for i := 0 to i - 1 do
begin
ListItem := ExcludeList.Items[i];
dcMultiDiskScanner.ExcludeList.AddPath(ListItem.Caption, ListItem.Checked);
end;
MultiDiskScannerSearch.Enabled := False;
MultiDiskScannerStop.Enabled := True;
MultiDiskScannerSuspended.Checked := False;
dcMultiDiskScanner.Matches.Limited := not UnlimitedCheck2.Checked;
dcMultiDiskScanner.Matches.MaxMatches := MaxMatchesSpin2.Value;
dcMultiDiskScanner.Execute;
end;
procedure TForm1.MultiDiskScannerStopClick(Sender: TObject);
begin
dcMultiDiskScanner.Stop;
end;
procedure TForm1.dcMultiDiskScannerFileFound(Sender: TObject; FileName,
FileType: String; FileSize: Extended; FileTime: TDateTime;
FileAttributes: TdcScanAttributes;
LargeIcon, SmallIcon: TIcon; SysImageIndex: Integer;
TotalFiles: Integer; TotalSize: Extended);
var
ListItem: TListItem;
begin
StatusBar.Panels[1].Text := 'Files ' + IntToStr(TotalFiles);
StatusBar.Panels[2].Text := 'Total size: ' + FloatToStr(TotalSize) + ' bytes';
ListItem := ResultsList.Items.Add;
ListItem.Caption := FileName;
ListItem.SubItems.Add(FileType);
if not (saDirectory in FileAttributes) then
ListItem.SubItems.Add(FloatToStr(Int(FileSize / 1024) + 1) + ' Kb');
ListItem.SubItems.Add(DateTimeToStr(FileTime));
ListItem.ImageIndex := SysImageIndex;
end;
procedure TForm1.dcMultiDiskScannerScanFolder(Sender: TObject;
Folder: String);
begin
if Excluding then Folder := 'Excluding: ' + Folder;
StatusBar.Panels[0].Text := Folder;
end;
procedure TForm1.dcMultiDiskScannerScanDone(Sender: TObject;
TotalFiles: Integer; TotalSize: Extended; ElapsedTimeInSeconds: Integer);
begin
MultiDiskScannerSearch.Enabled := True;
MultiDiskScannerStop.Enabled := False;
ShowMessage('Scanning done.'#13#10 +
'Total files found by specified criteria: ' + IntToStr(TotalFiles) + #13#10 +
'Total size of files: ' + FloatToStr(TotalSize) + ' bytes'#13#10 +
'Elapsed Time: ' + IntToStr(ElapsedTimeInSeconds) + ' seconds.');
end;
procedure TForm1.dcMultiDiskScannerExcludingBegin(Sender: TObject);
begin
Excluding := True;
end;
procedure TForm1.dcMultiDiskScannerExcludingEnd(Sender: TObject);
begin
Excluding := False;
end;
procedure TForm1.dcMultiDiskScannerFolderNotExist(Sender: TObject;
Folder: String);
begin
Application.MessageBox(PChar('Folder "' + Folder + '" not exist.'), 'dcMultiDiskScanner', MB_ICONINFORMATION);
end;
procedure TForm1.GetFileInfoBtnClick(Sender: TObject);
var
St: String;
begin
if dcOpenDialog.Execute then
begin
dcFileInfo.FileName := dcOpenDialog.FileName;
IconsBox.Visible := True;
ListBox.Clear;
ListBox.Items.Add('Name: ' + dcFileInfo.FileName);
ListBox.Items.Add('Type: ' + dcFileInfo.FileType);
ListBox.Items.Add('Size: ' + FloatToStr(dcFileInfo.FileSize) + ' bytes');
ListBox.Items.Add('Created: ' + DateTimeToStr(dcFileInfo.TimeCreated));
ListBox.Items.Add('Modified: ' + DateTimeToStr(dcFileInfo.TimeLastModified));
ListBox.Items.Add('Accessed: ' + DateTimeToStr(dcFileInfo.TimeLastAccessed));
St := 'Attributes: ';
if fiaArchive in dcFileInfo.FileAttributes then
St := St + 'Archive ';
if fiaHidden in dcFileInfo.FileAttributes then
St := St + 'Hidden ';
if fiaReadOnly in dcFileInfo.FileAttributes then
St := St + 'ReadOnly ';
if fiaSystem in dcFileInfo.FileAttributes then
St := St + 'System ';
ListBox.Items.Add(St);
LargeIcon.Picture.Icon.Assign(dcFileInfo.LargeIcon);
SmallIcon.Picture.Icon.Assign(dcFileInfo.SmallIcon);
end;
end;
procedure TForm1.DiskBrowserBtnClick(Sender: TObject);
begin
with dcBrowseDialog do
begin
StatusText := Msg.Text;
case BrowseForCombo.ItemIndex of
0: BrowseFor := forFolder;
1: BrowseFor := forComputer;
2: BrowseFor := forPrinter;
3: BrowseFor := forAnything;
end;
case SpecLocation.ItemIndex of
0: SpecialLocation := slNone;
1: SpecialLocation := slDesktop;
2: SpecialLocation := slPrograms;
3: SpecialLocation := slControlPanel;
4: SpecialLocation := slPrinters;
5: SpecialLocation := slPersonal;
6: SpecialLocation := slFavorites;
7: SpecialLocation := slStartup;
8: SpecialLocation := slRecent;
9: SpecialLocation := slSendto;
10: SpecialLocation := slRecycleBin;
11: SpecialLocation := slStartMenu;
12: SpecialLocation := slDesktopDirectory;
13: SpecialLocation := slMyComputer;
14: SpecialLocation := slNetwork;
15: SpecialLocation := slNethood;
16: SpecialLocation := slFonts;
17: SpecialLocation := slTemplates;
end;
Options := [];
if ShowPathCheck.Checked then
Options := Options + [soShowStatusText, soShowPathInStatus];
if ShowAncCheck.Checked then
Options := Options + [soShowSysAncestors];
if ShowNetCheck.Checked then
Options := Options + [soShowNetworkFiles];
if ShowFilesCheck.Checked then
Options := Options + [soShowFiles];
Execute;
end;
end;
procedure TForm1.DiskScannerResultsDblClick(Sender: TObject);
var
ListItem: TListItem;
begin
if PageControl.ActivePage = DiskScannerSheet then
ListItem := DiskScannerResults.Selected
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -