⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 数据安全专家(BSE)开源发布
💻 PAS
📖 第 1 页 / 共 3 页
字号:

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 + -