通过Delphi打造自己的文本编辑器

通过Delphi打造自己的文本编辑器

使用组件

  1. 菜单组件:MainMenu
  2. 菜单组件:OpenDialog
  3. 菜单组件:SaveDialog
  4. 菜单组件:FindDialog
  5. 菜单组件:ReplaceDialog
  6. 菜单组件:FontDialog
  7. 菜单组件:ColorDialog

实施步骤

  1. 添加Memo组件和菜单(MainMenu)组件
  2. 添加菜单
    • 文件:新建、打开、保存、退出
    • 编辑:撤销、剪切、复制、粘贴、删除、查找、替换、全选、插入时间
    • 格式:字体、背景
    • 帮助:关于

具体实现

1. 更换图标

选择自己喜欢的图片,注意格式改为位图。

2. 添加MainMenu并编辑为如图所示

3.添加组件

将各组件加至Memo

4.实现各组件

  1. 文件部分

    //新建
    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;
    
    1. 编辑部份
    //撤销
    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;
    
    1. 格式
    //字体
    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;
    
    1. 帮助
    //关于
    begin
    ShellAbout(self.Handle,pChar('小戴记事本1.0'),pChar('the_mote'),HICON(nil))
    end;
    
    1. 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;
    
    1. 替换实现
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;

5. 运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值