通过Delphi打造自己的文本编辑器
使用组件
- 菜单组件:MainMenu
- 菜单组件:OpenDialog
- 菜单组件:SaveDialog
- 菜单组件:FindDialog
- 菜单组件:ReplaceDialog
- 菜单组件:FontDialog
- 菜单组件:ColorDialog
实施步骤
- 添加Memo组件和菜单(MainMenu)组件
- 添加菜单
- 文件:新建、打开、保存、退出
- 编辑:撤销、剪切、复制、粘贴、删除、查找、替换、全选、插入时间
- 格式:字体、背景
- 帮助:关于
具体实现
1. 更换图标
选择自己喜欢的图片,注意格式改为位图。
2. 添加MainMenu并编辑为如图所示
3.添加组件
将各组件加至Memo
4.实现各组件
-
文件部分
//新建 begin if Opendialog1.Execute then begin FileName:=Opendialog1.FileName; Memo1.Lines.LoadFromFile(FileName); end; end; //打开 begin if OpenDialog1.Execute then begin FileName:= OpenDialog1.FileName; Memo1.Lines.LoadFromFile(FileName); end; end; //保存 begin If SaveDialog1.Execute then begin FileName:=SaveDialog1.FileName+'.txt'; Memo1.Lines.SaveToFile(FileName); end else exit; end; //退出 begin close; end;
- 编辑部份
//撤销 begin Memo1.Undo; end; //剪切 begin Memo1.CutToClipboard; end //复制 begin Memo1.CopyToClipboard; end; //粘贴 begin Memo1.PasteFromClipboard; end; //删除 begin Memo1.ClearSelection; end; //全选 begin Memo1.ClearSelection; end; //查找 begin FindDialog1.FindText:=Memo1.SelText; finddialog1.Execute; end; //插入日期 begin Memo1.SelText:=DateToStr(now()); end;
- 格式
//字体 begin if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font else exit; end; //背景 procedure TForm1.Background1Click(Sender: TObject); begin if ColorDialog1.Execute then Memo1.Color:=ColorDialog1.Color else exit; end;
- 帮助
//关于 begin ShellAbout(self.Handle,pChar('小戴记事本1.0'),pChar('the_mote'),HICON(nil)) end;
- find实现
var i,j,PosReturn,SkipChars:Integer; begin For i:=0 to Memo1.Lines.Count do begin PosReturn:=Pos(FindDialog1.FindText,Memo1.Lines[i]); if PosReturn<>0 then begin SkipChars:=0; For j:=0 to i-1 do SkipChars:=SkipChars+Length(Memo1.Lines[j]); SkipChars:=SkipChars+(i*2); SkipChars:=SkipChars+PosReturn-i; Memo1.SetFocus; Memo1.SelStart:=SkipChars; Memo1.SelLength:=Length(FindDialog1.FindText); Break; end; end; end;
- 替换实现
var
SelPos:Integer;
begin
with TReplaceDialog(Sender) do
begin
SelPos:=Pos(FindText,Memo1.Lines.Text);
if SelPos > 0 then
begin
Memo1.SelStart:=SelPos-1;
Memo1.SelLength:=Length(FindText);
Memo1.SelText:=ReplaceText;
end
else
MessageBox(handle,'抱歉,找不到需要替换的文件','警告',0);
end;
end;