Day7 MDI简单文本编辑器的编写

一个简单的文本编辑器该如何用程序编写出来呢?对于这个问题,也就是今天所要分享的主题,希望能对这有兴趣的人一些启发。好了,就让我们进入程序设计中吧!
开发环境:Delphi7
开发准备:新建form1与新建form2,并把form1名字属性改为MainForm1,form2名字改为children,同时设置改名后的两个form的FormStyle属性,截图如下:

这里写图片描述
这里写图片描述

开发控件截图如下:
主窗口截图如下:
这里写图片描述
子窗口截图如下:
这里写图片描述

主窗口代码Unit2.pas如下:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, Menus,StrUtils,DateUtils,calculator,desktop;

type
  TMainForm1 = class(TForm)
    MainMenu: TMainMenu;
    File1: TMenuItem;
    Exit1: TMenuItem;
    N1: TMenuItem;
    SaveAs1: TMenuItem;
    Save1: TMenuItem;
    Open1: TMenuItem;
    New1: TMenuItem;
    Edit1: TMenuItem;
    Object1: TMenuItem;
    Links1: TMenuItem;
    N3: TMenuItem;
    GoTo1: TMenuItem;
    Replace1: TMenuItem;
    Find1: TMenuItem;
    N4: TMenuItem;
    PasteSpecial1: TMenuItem;
    Paste1: TMenuItem;
    Copy1: TMenuItem;
    Cut1: TMenuItem;
    N5: TMenuItem;
    Repeatcommand1: TMenuItem;
    Undo1: TMenuItem;
    Window1: TMenuItem;
    Show1: TMenuItem;
    Hide1: TMenuItem;
    N6: TMenuItem;
    ArrangeAll1: TMenuItem;
    Cascade1: TMenuItem;
    ile1: TMenuItem;
    NewWindow1: TMenuItem;
    Help1: TMenuItem;
    AboutBox: TMenuItem;
    OpenPictureDialog1: TOpenPictureDialog;
    SavePictureDialog1: TSavePictureDialog;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    FontDialog1: TFontDialog;
    ReplaceDialog1: TReplaceDialog;
    FindDialog1: TFindDialog;
    Style1: TMenuItem;
    Font1: TMenuItem;
    Color1: TMenuItem;
    ColorDialog1: TColorDialog;
    Calculator1: TMenuItem;
    Desktopcontroller1: TMenuItem;
    procedure Open1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ile1Click(Sender: TObject);
    procedure Cascade1Click(Sender: TObject);
    procedure ArrangeAll1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Undo1Click(Sender: TObject);
    procedure Copy1Click(Sender: TObject);
    procedure Cut1Click(Sender: TObject);
    procedure Paste1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure SaveAs1Click(Sender: TObject);
    procedure New1Click(Sender: TObject);
    procedure Find1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure PasteSpecial1Click(Sender: TObject);
    procedure Font1Click(Sender: TObject);
    procedure Color1Click(Sender: TObject);
    procedure Hide1Click(Sender: TObject);
    procedure Show1Click(Sender: TObject);
    procedure Calculator1Click(Sender: TObject);
    procedure Desktopcontroller1Click(Sender: TObject);
    procedure NewWindow1Click(Sender: TObject);
    procedure AboutBoxClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm1: TMainForm1;
    i:word;
implementation

//uses MDIChild2;

//uses MDIChild2;

//uses MDIChild2;
//uses Child2;
//uses MDIChild1;
uses Child2;
{$R *.dfm}

procedure TMainForm1.Open1Click(Sender: TObject);
{var
Child1:TChild1;
begin
     if OpenPictureDialog1.Execute then
     begin
         Child1:=TChild1.Create(Self);
         with Child1.Image.Picture do
         begin

             LoadFromFile(OpenPictureDialog1.FileName);
             Child1.ClientWidth:=Width;
             Child1.ClientHeight:=Height;
         end;
         Child1.Caption:=ExtractFileName(OpenPictureDialog1.FileName);
         Child1.Show;
     end;
end;
  }
  var  Children: TChildren;
       //Memo:Tmemo;

  begin

       if OpenDialog1.Execute then
     begin
          Children:=TChildren.Create(Self);
         begin
              Children.Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
              Children.ClientWidth:=Width;
              Children.ClientHeight:=Height;
         end;
         Children.Caption:=ExtractFileName(OpenDialog1.FileName);
         Children.Show;
     end;
  end;
procedure TMainForm1.FormCreate(Sender: TObject);
{
begin
  if SavePictureDialog1.Execute then
  begin
      with ActiveMDIChild as TChild1 do
      Image.Picture.SaveTOFile(SavePictureDialog1.FileName);
  end;
end;
   }
begin
       if SaveDialog1.Execute then
       begin
            with ActiveMDIChild as TChildren do
            Children.Memo1.Lines.SaveTOFile(SaveDialog1.FileName);
       end;
end;
procedure TMainForm1.ile1Click(Sender: TObject);
begin
Tile;
end;

procedure TMainForm1.Cascade1Click(Sender: TObject);
begin
       Cascade;
end;

procedure TMainForm1.ArrangeAll1Click(Sender: TObject);
begin
//ArrangeIcons;

end;

procedure TMainForm1.Exit1Click(Sender: TObject);
begin
  close;
end;

procedure TMainForm1.Undo1Click(Sender: TObject);
begin
 Children.Memo1.Undo;
end;

procedure TMainForm1.Copy1Click(Sender: TObject);
begin
Children.Memo1.CopyToClipboard;
end;

procedure TMainForm1.Cut1Click(Sender: TObject);
begin
Children.Memo1.CutToClipboard;
end;

procedure TMainForm1.Paste1Click(Sender: TObject);
begin
Children.Memo1.PasteFromClipboard;
end;

procedure TMainForm1.Save1Click(Sender: TObject);
begin
    SaveDialog1.Filter:='Txt (*.txt)|*.txt|PDF (*.pdf)|*.pdf|Doc (*.doc)|*.doc|Rtf (*.rtf)|*.rtf';
    SaveDialog1.DefaultExt:='Txt|pdf|doc|rtf';//保存为RTF格式
     if SaveDialog1.Execute then
     begin

         Children.Memo1.Lines.SaveToFile(Savedialog1.FileName);
     end;
end;

procedure TMainForm1.SaveAs1Click(Sender: TObject);
begin
        SaveDialog1.Filter:='Txt (*.txt)|*.txt|PDF (*.pdf)|*.pdf|Doc (*.doc)|*.doc|Rtf (*.rtf)|*.rtf';
    SaveDialog1.DefaultExt:='Txt|pdf|doc|rtf';//保存格式
     if SaveDialog1.Execute then
     begin

         Children.Memo1.Lines.SaveToFile(Savedialog1.FileName);
     end;
end;

procedure TMainForm1.New1Click(Sender: TObject);
begin
       // OpenDialog1.Filter:='JPG (*.jpg)|*.jpg| Txt (*.txt)|*.txt|PDF (*.pdf)|*.pdf';
  OpenDialog1.Filter:='Txt (*.txt)|*.txt|PDF (*.pdf)|*.pdf|Doc (*.doc)|*.doc|Rtf (*.rtf)|*.rtf';
 OpenDialog1.DefaultExt:='Txt|pdf|doc|rtf';//保存格式
        if Children.Memo1.Modified then
         begin
       i:=MessageDlg('文件被修改,是否保存?',mtConfirmation,[mbyes,mbNo,mbCancel],1);
       if i=mryes then
       begin
       Open1Click(Sender);
       if   OpenDialog1.Execute then
        Children.Memo1.Lines.LoadFromFile( OpenDialog1.FileName);
        Children.Memo1.Modified:=False; //打开后,设置标志
end;
       if i=mrno then
       if  OpenDialog1.Execute then
       begin
        Children.Memo1.Lines.LoadFromFile( OpenDialog1.FileName);
        Children.Memo1.Modified:=False; //打开后,设置标志
       end;
       end
       else
       begin
        if   OpenDialog1.Execute then
         Children.Memo1.Lines.LoadFromFile( OpenDialog1.FileName);
        Children.Memo1.Modified:=False; //打开后,设置标志
       end;
end;

procedure TMainForm1.Find1Click(Sender: TObject);
begin
 FindDialog1.Execute;
end;
   procedure TMainForm1.FindDialog1Find(Sender: TObject);
var
     FoundAt:integer;
     StartPos,ToEnd:integer;
begin
     if Children.Memo1.SelLength<>0 then
     begin
          StartPos:= Children.Memo1.SelStart;
     end
     else
     begin
          startPos:=0;
     end;

     ToEnd:=length( Children.Memo1.Text)-startPos;

     FoundAt:=POS(finddialog1.FindText, Children.memo1.Text);
     if  FoundAt<>0 then
     begin
            MainForm1.Show;
           Children.Memo1.SelStart:=FoundAt-1;
           Children.Memo1.SelLength:=length(finddialog1.FindText);
     end;

end;
procedure TMainForm1.ReplaceDialog1Find(Sender: TObject);
var
     FoundAt:integer;
     StartPos,ToEnd:integer;
begin
     if  Children.Memo1.SelLength<>0 then
     begin
          StartPos:= Children.Memo1.SelStart;
     end
     else
     begin
          startPos:=0;
     end;

     ToEnd:=length( Children.Memo1.Text)-startPos;

     FoundAt:=POS(ReplaceDialog1.FindText, Children.memo1.Text);
     if  FoundAt<>0 then
     begin
          MainForm1.Show;
           Children.Memo1.SelStart:=FoundAt-1;
           Children.Memo1.SelLength:=length(ReplaceDialog1.FindText);

     end;

end;

procedure TMainForm1.ReplaceDialog1Replace(Sender: TObject);
var
     FoundAt:integer;
     StartPos,ToEnd:integer;
     str:string;
begin
     if  Children.Memo1.SelLength<>0 then
     begin
          StartPos:= Children.Memo1.SelStart;
     end
     else
     begin
          startPos:=0;
     end;

     ToEnd:=length( Children.Memo1.Text)-startPos;

     FoundAt:=POS(ReplaceDialog1.FindText, Children.memo1.Text);
     if  FoundAt<>0 then
     begin
          MainForm1.Show;
           Children.Memo1.SelStart:=FoundAt-1;
           Children.Memo1.SelLength:=length(ReplaceDialog1.FindText);
          str:=Children.Memo1.SelText;
           Children.Memo1.Text:=AnsiReplaceText(Children.Memo1.Text,ReplaceDialog1.FindText,ReplaceDialog1.ReplaceText);
          FoundAt:=POS(ReplaceDialog1.ReplaceText,Children.memo1.Text);

     end;

end;
procedure TMainForm1.Replace1Click(Sender: TObject);
begin
 ReplaceDialog1.Execute;
end;

procedure TMainForm1.PasteSpecial1Click(Sender: TObject);
begin
     Children.Memo1.HideSelection:=False;//选定文本反底显示
      Children.Memo1.SelectAll;
end;

procedure TMainForm1.Font1Click(Sender: TObject);
begin
  if  FontDialog1.Execute then        //判断是否执行
    Children.Memo1.Font:=FontDialog1.Font;
end;

procedure TMainForm1.Color1Click(Sender: TObject);
begin
   if ColorDialog1.Execute then
   Children.Memo1.Color:=ColorDialog1.Color;
end;

procedure TMainForm1.Hide1Click(Sender: TObject);
begin
    Children.Memo1.Hide;
end;

procedure TMainForm1.Show1Click(Sender: TObject);
begin
   Children.Memo1.Show;
end;

procedure TMainForm1.Calculator1Click(Sender: TObject);
begin
     form1.Show;
end;

procedure TMainForm1.Desktopcontroller1Click(Sender: TObject);
begin
        form11.Show;
end;

procedure TMainForm1.NewWindow1Click(Sender: TObject);
begin
       Open1Click(Sender);
end;

procedure TMainForm1.AboutBoxClick(Sender: TObject);
begin
   Children.Memo1.Text:='这是一个较为有用的小工具,由于目前所学甚少,故而只能运用所运用的知识进行开发;当然,如果你有更好的,那就更好了.目前学习任务如下:'+'其一,MDI文档编辑器和图片查看器;其二,TList的运用;其三,自己开发一个有用的工具箱;其四,每天坚持写CSDN博客;其五,每天坚持看专业PDF文档;其六,每天坚持学习英语和看书;其七,每天坚持敲代码500行';
end;

end.

子窗口代码Child2.pas如下:

unit Child2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TChildren = class(TForm)
    Memo1: TMemo;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Children: TChildren;

implementation

{$R *.dfm}

procedure TChildren.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     Action:=CaFree;
end;

procedure TChildren.FormDestroy(Sender: TObject);
begin
     sender:=nil;
     Children:=nil;
end;

end.

运行截图如下:
这里写图片描述
好了,到了此刻,算是告一段落了,相信大家有了了解,关于MDI简单文本编辑器方面的。明天见吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值