📄 main.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 + -