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

📄 unit1.~pas

📁 这是一个有关文本编辑器的源程序,支持彩色语法,你可以任意修改,修改后发给我一份
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RtfExport, Menus, MemoComponentUnit, SourceEditUnit, ExtCtrls,
  ComCtrls, FindDlg;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    FileF1: TMenuItem;
    Edit1: TMenuItem;
    Open1: TMenuItem;
    N1: TMenuItem;
    exit1: TMenuItem;
    Find1: TMenuItem;
    Refind1: TMenuItem;
    Replace1: TMenuItem;
    Replace2: TMenuItem;
    ExporttoRtf1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    ScEdit: TSourceEdit;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Find1Click(Sender: TObject);
    procedure Refind1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure Replace2Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure ExporttoRtf1Click(Sender: TObject);
    procedure exit1Click(Sender: TObject);
  private
   FindText, ReplaceText: string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 With StatusBar1 do
 begin
  Panels[0].Text := 'ColumnNo: ' + IntToStr(ScEdit.CurrentCol);
  Panels[1].Text := 'LineNo: ' + IntToStr(ScEdit.CurrentRow);
 end;
end;

procedure TForm1.Find1Click(Sender: TObject);
var
 ADlg: TFindFrm;
begin
 try
  ADlg := TFindFrm.Create(Application);
  ADlg.Caption := 'Find';
  if FindText <> '' then ADlg.Edit1.Text := FindText;
  if ADlg.Showmodal = Id_Ok then
  begin
   FindText := ADlg.Edit1.Text;
   if FindText = '' then Exit;
   ScEdit.SearchOption := [];
   //Case Sensitive
   if ADlg.CheckBox1.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soCaseSensitive];
   //Search Direction
   if ADlg.CheckBox4.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soUp]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soDown];
   //Search scope: All Text or Selected Text
   if ADlg.CheckBox8.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soSearchSelText]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soSearchAllText];
   //Search from cursor or from headLine
   if ADlg.CheckBox11.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soWholeRange]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soFromCursor];
   ScEdit.FindText(FindText);
  end;
 finally
  ADlg.Free;
 end;
end;

procedure TForm1.Refind1Click(Sender: TObject);
begin
 if FindText <> '' then
  if Not ScEdit.FindText(FindText) then
   ScEdit.SelStart := ScEdit.SelStart + ScEdit.SelLength;
end;

procedure TForm1.Replace1Click(Sender: TObject);
var
 ADlg : TFindFrm;
begin
 try
  ADlg := TFindFrm.Create(Application);
  ADlg.Caption := 'Find&Replace';
  if FindText <> '' then ADlg.Edit1.Text := FindText;
  ADlg.Panel3.Visible := True;
  if ADlg.Showmodal = Id_Ok then
  begin
   FindText := ADlg.Edit1.Text;
   ReplaceText := ADlg.Edit2.Text;
   if FindText = '' then Exit;
   ScEdit.SearchOption := [];
   //Case Sensitive
   if ADlg.CheckBox1.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soCaseSensitive];
   //Search Direction
   if ADlg.CheckBox4.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soUp]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soDown];
   //Search Option: Search All Text or Selected Text
   if ADlg.CheckBox8.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soSearchSelText]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soSearchAllText];
   //Search Option: Search From cursor or HeadLine
   if ADlg.CheckBox11.Checked then
    ScEdit.SearchOption := ScEdit.SearchOption + [soWholeRange]
   else
    ScEdit.SearchOption := ScEdit.SearchOption + [soFromCursor];
   //----------
   ScEdit.ReplaceText(FindText, ReplaceText, ADlg.CheckBox6.Checked);
  end;
 finally
  ADlg.Free;
 end;
end;

procedure TForm1.Replace2Click(Sender: TObject);
begin
 if FindText <> '' then
  ScEdit.ReplaceText(FindText, ReplaceText, False);
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
 With TOpenDialog.Create(Application) do
 begin
  DefaultExt := '*.sql';
  Filter := 'Sql File(*.sql)|*.sql';
  Title := 'Open';
  if Execute then
  begin
   ScEdit.Lines.LoadFromFile(FileName);
  end;
 end;
end;

procedure TForm1.ExporttoRtf1Click(Sender: TObject);
var
 I : Integer;
 W : TTxt2Rtf;
begin
 With TSaveDialog.Create(Application) do
 begin
  Filter := 'RTF File(*.rtf)|*.rtf';
  DefaultExt := '*.rtf';
  Title := 'Export to Rtf';
  if Execute then
  begin
   try
    W := TTxt2Rtf.Create;
    W.KeyWords.Assign(ScEdit.SyntaxColoring.WordLists.Items[0].Words);
    W.SaveTextToRtfFile(ScEdit.Text, FileName);
   finally
    W.Free;
   end;
  end;
  Free;
 end;
end;
procedure TForm1.exit1Click(Sender: TObject);
begin
 Close;
end;

end.

⌨️ 快捷键说明

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