您的位置:首页 > 其它

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简单文本编辑器方面的。明天见吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: