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

📄 main.pas

📁 文件搜索的代码
💻 PAS
字号:
unit main;

interface

uses
  Windows, SysUtils, Forms, XPMan, Menus, jpeg, JvPanel, Classes, Controls, StdCtrls,
  ExtCtrls, ShellApi, Graphics, JvGIF, Dialogs, JvBrowseFolder, JvComponent, JvThread,
  JvBaseDlg, JvExExtCtrls, JvZlibMultiple;

type
  TFormMain = class(TForm)
    editKeywords: TEdit;
    lblKeywords: TLabel;
    btnSearch: TButton;
    Panel: TJvPanel;
    imgLogo: TImage;
    lblExtension: TLabel;
    editExtension: TEdit;
    lblText: TLabel;
    editText: TEdit;
    lblSearchIn: TLabel;
    cbDrives: TComboBox;
    BrowseDir: TJvBrowseForFolderDialog;
    btnBrowse: TButton;
    Button1: TButton;
    GroupBox1: TGroupBox;
    cbFindAll: TCheckBox;
    cbCase: TCheckBox;
    cbNoHidden: TCheckBox;
    cbNoReadOnly: TCheckBox;
    btnCfgText: TButton;
    Zlib: TJvZlibMultiple;
    cbSearchAll: TCheckBox;
    procedure cbSearchAllClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure editTextChange(Sender: TObject);
    procedure btnBrowseClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btnCfgTextClick(Sender: TObject);
    procedure btnSearchClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    IndexFile, ZipFile, ExtFile: string;

    procedure GetDrives;
  end;

var
  FormMain: TFormMain;

implementation

uses results, about, txtext;

{$R *.dfm}

// Get hard disk drives
procedure TFormMain.GetDrives;
const
 DRIVE_UNKNOWN = 0;
 DRIVE_NO_ROOT_DIR = 1;
 DRIVE_REMOVABLE = 2;
 DRIVE_FIXED = 3;
 DRIVE_REMOTE = 4;
 DRIVE_CDROM = 5;
 DRIVE_RAMDISK = 6;
var
 r: LongWord;
 Drives: array[0..128] of char;
 pDrive: PChar;
begin
 r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
 if r = 0 then Exit;
 if r > SizeOf(Drives) then
   raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
 pDrive := Drives;
 while pDrive^ <> #0 do begin
  if GetDriveType(pDrive) = DRIVE_FIXED then
   cbDrives.Items.Add(pDrive);
  Inc(pDrive, 4);
 end;
 cbDrives.ItemIndex := 0;
end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
 ExtFile := ExtractFilePath(Application.ExeName) + 'extensions.ini';
 IndexFile := ExtractFilePath(Application.ExeName) + 'database.bdd';
 ZipFile := ExtractFilePath(Application.ExeName) + 'database.zip';

 GetDrives;
 // v0.4 code
 {
 // If database not exists, show error message and close application.
 if FileExists(ZipFile) = False then begin
  Application.MessageBox('No database found! Please, run updater.','No database found!');
  Application.Terminate;
 end else
 // If database exists, decompress it.
  Zlib.DecompressFile(ZipFile, ExtractFilePath(Application.ExeName), True);
 }
end;

procedure TFormMain.Exit1Click(Sender: TObject);
begin
 FormMain.Close;
end;

procedure TFormMain.editTextChange(Sender: TObject);
begin
 if editText.Text = '' then
  editExtension.Enabled := True
 else begin
  editExtension.Enabled := False;
  editExtension.Text := '*.*';
 end;
end;

procedure TFormMain.btnBrowseClick(Sender: TObject);
begin
 if BrowseDir.Execute then cbDrives.Text := BrowseDir.Directory;
end;

procedure TFormMain.Button1Click(Sender: TObject);
begin
 FormAbout.Show;
end;

procedure TFormMain.btnCfgTextClick(Sender: TObject);
var
 TFile: TextFile;
 tmp, tmp2: string;
begin
 // Clear extensions list
 FormCfgText.memoExt.Clear;
 
 // Open extensions file
 AssignFile(TFile, ExtFile);
 Reset(TFile);
 ReadLn(TFile, tmp);
 CloseFile(TFile);
 tmp := tmp + ',';

 // Extract extensions
 repeat
  tmp2 := Copy(tmp, 0, pos(',',tmp)-1);
  Delete(tmp, 1, pos('.',tmp));
  Delete(tmp, 1, pos(',',tmp));
  FormCfgText.memoExt.Lines.Add(tmp2);
 until
  pos('.',tmp) = 0;

 // Show config window
 FormCfgText.Show;
end;

procedure TFormMain.btnSearchClick(Sender: TObject);
begin
 // Move search values to results windows
 FormResults.editKeywords.Text := editKeywords.Text;
 FormResults.editText.Text := editText.Text;
 FormResults.editExtension.Text := editExtension.Text;
 FormResults.cbDrives.Text := cbDrives.Text;
 FormResults.cbFindAll.Checked := cbFindAll.Checked;
 FormResults.cbCase.Checked := cbCase.Checked;
 FormResults.cbNoHidden.Checked := cbNoHidden.Checked;
 FormResults.cbNoReadOnly.Checked := cbNoReadOnly.Checked;
 FormResults.cbSearchAll.Checked := cbSearchAll.Checked;
 FormResults.cbDrives.Enabled := cbDrives.Enabled;
 FormResults.btnBrowse.Enabled := btnBrowse.Enabled;

 // Hide main window and show results window
 Hide;
 FormResults.Show;

 // Click in search button of results window
 FormResults.btnSearch.Click;
end;

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = VK_RETURN then btnSearch.Click;
end;

procedure TFormMain.cbSearchAllClick(Sender: TObject);
begin
 if cbSearchAll.Checked then begin
  cbDrives.Enabled := False;
  btnBrowse.Enabled := False;
 end else begin
  cbDrives.Enabled := True;
  btnBrowse.Enabled := True;
 end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -