Day7 MDI简单文本编辑器的编写
2018-01-22 20:24
597 查看
一个简单的文本编辑器该如何用程序编写出来呢?对于这个问题,也就是今天所要分享的主题,希望能对这有兴趣的人一些启发。好了,就让我们进入程序设计中吧! 开发环境: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简单文本编辑器方面的。明天见吧!
相关文章推荐
- 菜鸟也封装之简单文本编辑器.
- 用JAVA编写一个简单的编辑器
- 简单文本编辑器
- 简单的Java纯文本编辑器
- ASP.NET一款免费富文本(RichText)编辑器KindEditor,实现在线排版编辑文章。这里简单介绍下如何使用
- python基于Tkinter库实现简单文本编辑器实例
- 【jQuery】简单的网页文本格式编辑器ckeditor
- 在 Atom 编辑器中使用代码段 snippets 编写 Markdown 文本
- Qt简单编程--获取编辑器Text Edit的光标行文本
- 我做的一个java简单文本编辑器代码
- 编写一个非常简单的 JavaScript 编辑器
- 基于QT的简单文本编辑器
- Linux超简单文本编辑器:nano
- (98)Menu简单文本编辑器实现功能:文件打开,保存,退出
- ArcGIS 字段编辑器,编写简单python代码
- python基于Tkinter库实现简单文本编辑器实例
- wxPython一个简单文本编辑器
- 自己写的一个简单文本批量编辑器, 附源码
- 简单文本编辑器
- 简单文本编辑器制作--windows程序设计雏形