Delphi实例之一个较复杂的记事本的实现


本文整理自网络,侵删。

 
这里只放主要代码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Menus, ExtActns,
  StdActns, ActnList;

type
  TForm1 = class(TForm)
    ImageList1: TImageList;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    StatusBar1: TStatusBar;
    Timer1: TTimer;
    OpenDialog1: TOpenDialog;
    RichEdit1: TRichEdit;
    SaveDialog1: TSaveDialog;
    ToolButton11: TToolButton;
    FontDialog1: TFontDialog;
    ToolButton12: TToolButton;
    FindDialog1: TFindDialog;
    ToolButton13: TToolButton;
    ReplaceDialog1: TReplaceDialog;
    ToolButton14: TToolButton;
    ColorDialog1: TColorDialog;
    ToolButton15: TToolButton;
    PrintDialog1: TPrintDialog;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    ActionList1: TActionList;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    EditUndo1: TEditUndo;
    EditDelete1: TEditDelete;
    RichEditBold1: TRichEditBold;
    RichEditItalic1: TRichEditItalic;
    RichEditUnderline1: TRichEditUnderline;
    N25: TMenuItem;
    PopupMenu1: TPopupMenu;
    Copy1: TMenuItem;
    Paste1: TMenuItem;
    Cut1: TMenuItem;
    SelectAll1: TMenuItem;
    Delete1: TMenuItem;
    N26: TMenuItem;
    N27: TMenuItem;
    N28: TMenuItem;
    Help1: TMenuItem;
    About1: TMenuItem;
    Contents1: TMenuItem;
    RichEditAlignLeft1: TRichEditAlignLeft;
    RichEditAlignRight1: TRichEditAlignRight;
    RichEditAlignCenter1: TRichEditAlignCenter;
    Center1: TMenuItem;
    AlignLeft1: TMenuItem;
    AlignRight1: TMenuItem;
    C1: TMenuItem;
    N29: TMenuItem;
    N30: TMenuItem;
    N31: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure RichEdit1SelectionChange(Sender: TObject);
    procedure RichEdit1Change(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure ToolButton14Click(Sender: TObject);
    procedure ToolButton15Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Contents1Click(Sender: TObject);
    procedure C1Click(Sender: TObject);
    procedure N30Click(Sender: TObject);
    procedure N31Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Unit3, Unit5, Unit6;

{$R *.dfm}

{此过程用于窗口创建时状态栏时间的显示}
procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.Panels[3].Text:=DateTimeToStr(Now);
end;

{此过程用于 动态修改状态栏时间}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Panels[3].Text:=DateTimeToStr(Now);
end;

{此过程用于显示光标所在的位置}
procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:='位置:'+IntToStr(RichEdit1.CaretPos.Y+1)+'行'
    +IntToStr(RichEdit1.CaretPos.X)+'列';
end;

{此过程用于在状态栏显示文件是否被修改}
procedure TForm1.RichEdit1Change(Sender: TObject);
begin
  if RichEdit1.Modified then
    StatusBar1.Panels[1].Text:='修改'
end;

{打开文本文件操作}
procedure TForm1.ToolButton2Click(Sender: TObject);
var
  FName:string;
begin
   with OpenDialog1 do
     begin
       Filter:='文本文件(*.txt|*.txt';      {文件类型过滤器,防止打开非文本文件}
       DefaultExt:='txt';
       Filename:='';
       Options:=[ofHideReadOnly,ofFileMustExist,ofPathMustExist];
       if execute
         then
           if ofExtensionDifferent in Options
             then MessageDlg('这不是文本文件。',mtError,[mbOK],0)
             else
               begin
                 RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
                 FName:=OpenDialog1.FileName;
                 StatusBar1.Panels[2].Text:=FName;
               end;
     end;
end;

{此过程用于保存文件}
procedure TForm1.ToolButton3Click(Sender: TObject);
var
  fname:string;
begin
   with SaveDialog1 do
     if Execute
       then
         begin
           DefaultExt:='txt';
           RichEdit1.Lines.SaveToFile(FileName);
           RichEdit1.Modified:=false;
           FName:=SaveDialog1.FileName;
           StatusBar1.Panels[2].Text:=FName;
         end;
end;

{改变字体的过程}
procedure TForm1.ToolButton11Click(Sender: TObject);
begin
  If RichEdit1.SelLength>0
    then
      begin
        FontDialog1.Font.Assign(RichEdit1.SelAttributes);{使用FontDialog}
        if FontDialog1.Execute
          then RichEdit1.SelAttributes.Assign(FontDialog1.Font);
      end
    else
      ShowMessage('请先选中一段文本。')    {没有选中任何字}
end;

{此过程用于启动查找}
procedure TForm1.ToolButton12Click(Sender: TObject);
begin
  FindDialog1.Execute
end;

{通过 FindDialog 提供的方法来实现查找文本}
procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundPos,InitPos:integer;
begin
  InitPos:=RichEdit1.SelStart+RichEdit1.SelLength;
  FoundPos:=Pos(FindDialog1.FindText,Copy(RichEdit1.Text,
             InitPos+1,Length(RichEdit1.Text)-InitPos));
  {用pos函数定位字符串位置}
  if FoundPos>0   {文档中不止一个}
    then
      begin
        RichEdit1.SetFocus;
        RichEdit1.SelStart:=InitPos+FoundPos-1;
        RichEdit1.SelLength:=Length(FindDialog1.FindText);
      end
    else     {没有找到}
      MessageDlg('没有找到要查找的文本',mtInFormation,[mbOK],0);
  InitPos:=RichEdit1.SelStart+RichEdit1.SelLength;
end;

{启动替换}
procedure TForm1.ToolButton13Click(Sender: TObject);
begin
  ReplaceDialog1.Execute;
end;

{此过程用于实现替换功能}
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
  i,n:integer;
  s,find,replace:string;
begin
  s:=RichEdit1.Text;
  find:=ReplaceDialog1.FindText;
  n:=Length(find);
  Replace:=ReplaceDialog1.ReplaceText;
  i:=Pos(find,s);
  RichEdit1.SelStart:=i-1;
  RichEdit1.SelLength:=n;
  RichEdit1.SelText:=Replace;
  if frReplaceAll in ReplaceDialog1.Options
    then
      repeat
        s:=RichEdit1.Text;
        i:=pos(find,s);
        if i<>0
          then
            RichEdit1.Text:=Copy(s,1,i-1)+Copy(s,i+n,length(s)-(i+n)+1);
            {将文件分成三段:1--(i-1),i--(i+n),(i+n+1)--Length(s)}
      until i=0;
end;

{此过程实现文字颜色的改变}
procedure TForm1.ToolButton14Click(Sender: TObject);
begin
  with ColorDialog1 do
    begin
      Color:=RichEdit1.SelAttributes.Color;
      if Execute
        then
          RichEdit1.SelAttributes.Color:=Color;
    end;
end;

{此过程用于实现打印功能}
procedure TForm1.ToolButton15Click(Sender: TObject);
begin
  with PrintDialog1 do
    begin
      Options:=[poPrintToFile];
      PrintToFile:=true;
      if execute
        then
          begin
            if PrintToFile
              then
                 begin
                   SaveDialog1.Title:='打印到文件: ';
                   if SaveDialog1.Execute
                     then RichEdit1.Lines.SaveToFile(SaveDialog1.FileName+
                           '.prt');
                 end
              else RichEdit1.PaintTo(Handle,10,10);
          end;
    end;

end;

{此过程用于实现“新建”,注意:这将会清空所有未保存的内容}
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  RichEdit1.Clear;
end;

{退出}
procedure TForm1.N6Click(Sender: TObject);
begin
  Form1.Close;
end;

{弹出作者姓名}
procedure TForm1.About1Click(Sender: TObject);
begin
  ShowMessage('(C)Choabs,2014') ;
end;

{打开帮助窗口}
procedure TForm1.Contents1Click(Sender: TObject);
begin
  Form2.Show;
end;

{打开日历窗口}
procedure TForm1.C1Click(Sender: TObject);
begin
  Form3.Show;
end;

{打开法律信息窗口}
procedure TForm1.N30Click(Sender: TObject);
begin
  form5.Show;
end;

{打开感谢窗口}
procedure TForm1.N31Click(Sender: TObject);
begin
  form6.show;
end;

end.

相关阅读 >>

Delphi zlib 流压缩解压

Delphi getprocessisadmin()判断exe是否以管理员身份启动

Delphi 字符串常识

Delphi多媒体函数

Delphi控制word添加多行文字

Delphi执行js

Delphi双进程监控

Delphi 中文字符串截取

Delphi gethref 获取<a href="链接"></a>中href的数据

Delphi vcl tmemo加速字符串读取

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...