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

📄 ffindtext.pas

📁 Delphi编写的一个支持语法高亮显示和很多语言的文本编辑器
💻 PAS
字号:
unit fFindText;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, iniFiles, synEdit, CorelButton;

type
  TfrmFindText = class(TForm)
    lblFind: TLabel;
    gpOptions: TGroupBox;
    chkMatch: TCheckBox;
    chkCase: TCheckBox;
    gbDir: TGroupBox;
    cmbFind: TComboBox;
    chkCaret: TCheckBox;
    chkSel: TCheckBox;
    chkWrap: TCheckBox;
    btnFind: TCorelButton;
    btnCancel: TCorelButton;
    rdDown: TRadioButton;
    rdUp: TRadioButton;
    procedure btnFindClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cmbFindKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure cmbFindEnter(Sender: TObject);
  private
    function GetSearchBackwards: boolean;
    function GetSearchCaseSensitive: boolean;
    function GetSearchFromCursor: boolean;
    function GetSearchInSelection: boolean;
    function GetSearchText: string;
    function GetSearchTextHistory: string;
    function GetSearchWholeWords: boolean;
    function GetWrapAround: Boolean;
    procedure SetSearchBackwards(Value: boolean);
    procedure SetSearchCaseSensitive(Value: boolean);
    procedure SetSearchFromCursor(Value: boolean);
    procedure SetSearchInSelection(Value: boolean);
    procedure SetSearchText(Value: string);
    procedure SetSearchTextHistory(Value: string);
    procedure SetSearchWholeWords(Value: boolean);
    procedure SetWrapAround(Value: Boolean);
  public
    property SearchBackwards: boolean read GetSearchBackwards
      write SetSearchBackwards;
    property SearchCaseSensitive: boolean read GetSearchCaseSensitive
      write SetSearchCaseSensitive;
    property SearchFromCursor: boolean read GetSearchFromCursor
      write SetSearchFromCursor;
    property SearchInSelectionOnly: boolean read GetSearchInSelection
      write SetSearchInSelection;
    property SearchText: string read GetSearchText write SetSearchText;
    property SearchTextHistory: string read GetSearchTextHistory
      write SetSearchTextHistory;
    property SearchWholeWords: boolean read GetSearchWholeWords
      write SetSearchWholeWords;
    property WrapAround: boolean read GetWrapAround write SetWrapAround;
    { Public declarations }
  end;

var
  frmFindText: TfrmFindText;

implementation

uses fMain, fDoc,UDialogSettings;

{$R *.dfm}

function TfrmFindText.GetSearchBackwards: boolean;
begin
  Result := rdUp.Checked = True;
end;

function TfrmFindText.GetWrapAround: Boolean;
begin
  Result := chkWrap.Checked;
end;

procedure TfrmFindText.SetWrapAround(Value: Boolean);
begin
  chkWrap.Checked := Value;
end;

function TfrmFindText.GetSearchCaseSensitive: boolean;
begin
  Result := chkCase.Checked;
end;

function TfrmFindText.GetSearchFromCursor: boolean;
begin
  Result := chkCaret.Checked;
end;

function TfrmFindText.GetSearchInSelection: boolean;
begin
  Result := chkSel.Checked;
end;

function TfrmFindText.GetSearchText: string;
begin
  Result := cmbFind.Text;
end;

function TfrmFindText.GetSearchTextHistory: string;
var
  i: integer;
begin
  Result := '';
  for i := 0 to cmbFind.Items.Count - 1 do begin
    if i >= 10 then
      break;
    if i > 0 then
      Result := Result + #13#10;
    Result := Result + cmbFind.Items[i];
  end;
end;

function TfrmFindText.GetSearchWholeWords: boolean;
begin
  Result := chkMatch.Checked;
end;

procedure TfrmFindText.SetSearchBackwards(Value: boolean);
begin
  rdUp.Checked := Value;
end;

procedure TfrmFindText.SetSearchCaseSensitive(Value: boolean);
begin
  chkCase.Checked := Value;
end;

procedure TfrmFindText.SetSearchFromCursor(Value: boolean);
begin
  chkCaret.Checked := Value;
end;

procedure TfrmFindText.SetSearchInSelection(Value: boolean);
begin
  chkSel.Checked := Value;
end;

procedure TfrmFindText.SetSearchText(Value: string);
begin
  cmbFind.Text := Value;
end;

procedure TfrmFindText.SetSearchTextHistory(Value: string);
begin
  cmbFind.Items.Text := Value;
end;

procedure TfrmFindText.SetSearchWholeWords(Value: boolean);
begin
  chkMatch.Checked := Value;
end;

procedure TfrmFindText.btnFindClick(Sender: TObject);
begin
{  flags := [];
  if chkMatch.Checked then
    Include(flags, ssoWholeWord);
  if chkCase.Checked then
    Include(flags, ssoMatchCase);
  if not chkCaret.Checked then
    Include(flags, ssoEntireScope);
  if chkSel.Checked then
    Include(flags, ssoSelectedOnly);
  if (rdUp.Checked) then
    Include(flags, ssoBackwards);
  cmbFind.Items.Add(cmbFind.Text);

  TfrmDoc(frmMain.ActiveMDIChild).findFlags := flags;
  Exclude(TfrmDoc(frmMain.ActiveMDIChild).findFlags, ssoEntireScope);
  TfrmDoc(frmMain.ActiveMDIChild).findString := cmbFind.Text;
  TfrmDoc(frmMain.ActiveMDIChild).sciMain.SearchReplace(cmbFind.Text, '', flags); //.FindText(flags, chkWrap.Checked, PChar(cmbFind.Text), Self.rdUp.Checked);
  SaveOpts(Self, 'Find');
  close;}
  SaveOpts(Self);
end;

procedure TfrmFindText.FormShow(Sender: TObject);
begin
  LoadOpts(Self);
end;
procedure TfrmFindText.cmbFindKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Char(27) then close;
end;

procedure TfrmFindText.FormCreate(Sender: TObject);
begin
  if FileExists(ExtractFilePath(Application.ExeName) + 'ini\find.dat') = False then
    cmbFind.Items.SaveToFile(ExtractFilePath(Application.ExeName) + 'ini\find.dat');
  cmbFind.Items.LoadFromFile(ExtractFilePath(Application.ExeName) + 'ini\find.dat')
end;

procedure TfrmFindText.cmbFindEnter(Sender: TObject);
begin
  cmbFind.SelStart := 0;
  cmbFind.SelLength := Length(cmbFind.Text);
end;

end.

⌨️ 快捷键说明

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