鱼C论坛

 找回密码
 立即注册
查看: 2015|回复: 0

[技术交流] 鱼C记事本V1.0

[复制链接]
发表于 2013-11-27 20:40:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有没有那位大神知道怎么实现全部替换功能?


unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls,ShellAPI;
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    file1: TMenuItem;
    new1: TMenuItem;
    open1: TMenuItem;
    save1: TMenuItem;
    N1: TMenuItem;
    exit1: TMenuItem;
    edit1: TMenuItem;
    undo1: TMenuItem;
    N2: TMenuItem;
    copy1: TMenuItem;
    paste1: TMenuItem;
    cut1: TMenuItem;
    delete1: TMenuItem;
    N3: TMenuItem;
    all1: TMenuItem;
    N4: TMenuItem;
    find1: TMenuItem;
    replace1: TMenuItem;
    N5: TMenuItem;
    date: TMenuItem;
    O1: TMenuItem;
    font1: TMenuItem;
    help1: TMenuItem;
    about1: TMenuItem;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    FindDialog1: TFindDialog;
    ReplaceDialog1: TReplaceDialog;
    ColorDialog1: TColorDialog;
    FontDialog1: TFontDialog;
    background1: TMenuItem;
    procedure open1Click(Sender: TObject);
    procedure save1Click(Sender: TObject);
    procedure new1Click(Sender: TObject);
    procedure exit1Click(Sender: TObject);
    procedure undo1Click(Sender: TObject);
    procedure copy1Click(Sender: TObject);
    procedure paste1Click(Sender: TObject);
    procedure cut1Click(Sender: TObject);
    procedure delete1Click(Sender: TObject);
    procedure all1Click(Sender: TObject);
    procedure dateClick(Sender: TObject);
    procedure font1Click(Sender: TObject);
    procedure background1Click(Sender: TObject);
    procedure about1Click(Sender: TObject);
    procedure find1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure replace1Click(Sender: TObject);
    procedure ReplaceDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
var
   FileName : String;
   k: Integer = 0;
   m: Integer =0;
{$R *.dfm}
procedure TForm1.open1Click(Sender: TObject);
begin
   OpenDialog1.Filter := '文本文档(*.txt)|*.txt';
   if OpenDialog1.Execute then
       begin
       FileName := OpenDialog1.FileName;
       Memo1.Lines.LoadFromFile(FileName);
       end
   else
   exit;
end;
procedure TForm1.save1Click(Sender: TObject);
begin
    SaveDialog1.Filter := '文本文档(*.TXT)|*.TXT';
    if SaveDialog1.Execute then
       begin
       FileName := SaveDialog1.FileName + '.txt' ;
       Memo1.Lines.SaveToFile(FileName);
       end
    else
    exit;
end;
procedure TForm1.new1Click(Sender: TObject);
begin
   if Memo1.Modified = True then
      begin
        if ID_OK = MessageBox(Handle,'内容以发生改变,是否保存?','提示',MB_OKCANCEL) then
        //判断在选择弹出对话框的按钮时所执行的动作
           begin
           SaveDialog1.Filter := '文本文档(*.TXT)|*.TXT';
           SaveDialog1.Execute;
           FileName := SaveDialog1.FileName + '.txt' ;
           Memo1.Lines.SaveToFile(FileName);
           end
        else
           Memo1.Lines.Text  := '';
      end
    else
      Memo1.Lines.Text  := ''
end;
procedure TForm1.exit1Click(Sender: TObject);
begin
   close;
end;
procedure TForm1.undo1Click(Sender: TObject);
begin
   Memo1.Undo;   //实现撤销操作
end;
procedure TForm1.copy1Click(Sender: TObject);
begin
   Memo1.CopyToClipboard ;   //将选中的部分复制到剪贴板
end;
procedure TForm1.paste1Click(Sender: TObject);
begin
    Memo1.PasteFromClipboard ;   //从剪贴板粘贴内容
end;
procedure TForm1.cut1Click(Sender: TObject);
begin
    Memo1.CutToClipboard ;    //将选中部分剪贴到剪贴板
end;
procedure TForm1.delete1Click(Sender: TObject);
begin
    Memo1.ClearSelection;      //删除选中部分
end;
procedure TForm1.all1Click(Sender: TObject);
begin
    Memo1.SelectAll ; //全选
end;
procedure TForm1.dateClick(Sender: TObject);
begin
     Memo1.SelText := DatetimeToStr (now())  //将系统当时的时间日期插入到光标所在位置 DatetimeToStr返回的是字符型数据
end;
procedure TForm1.font1Click(Sender: TObject);
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;
procedure TForm1.about1Click(Sender: TObject);
begin
   ShellAbout (self.Handle,pChar('鱼C记事本V1.0'),pChar('鱼C工作室——小甲鱼'),HICON(nil))
    // ShellAbout函数使用前应现在uses下添加 ShellAPI
end;
procedure TForm1.find1Click(Sender: TObject);
begin
   FindDialog1.FindText := Memo1.SelText ;
   FindDialog1.Execute ;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
   i,j,PosReturn,SkipChars : Integer;
begin
if (k<=Memo1.Lines.Count) then
begin
  for i := k 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);    //在每次进行换行的时候,要按回车,占用2个字节,所以从第1行结束开始,每行都要多2个字节
         SkipChars := SkipChars + PosReturn - 1;
         Memo1.SetFocus;
         Memo1.SelStart := SkipChars;
         Memo1.SelLength := Length(FindDialog1.FindText );
         Break;
      end;
      k := k+1;
   end;
k := k+1     //K就实现了逐行查找,即查找下一个按键
end
else
begin
k := 0 ;
ShowMessage ('找不到'+ FindDialog1.FindText);
end;
end;
procedure TForm1.replace1Click(Sender: TObject);
begin
   ReplaceDialog1.FindText := Memo1.SelText ;
   ReplaceDialog1.Execute ;
end;
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
var
   i,j,PosReturn,SkipChars : Integer;
begin
if (m<=Memo1.Lines.Count) then
begin
  for i := m to Memo1.Lines.Count do
  begin
      PosReturn := Pos (ReplaceDialog1.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 - 1;
         Memo1.SetFocus;
         Memo1.SelStart := SkipChars;
         Memo1.SelLength := Length(ReplaceDialog1.FindText );
         Break;
      end;
      m := m+1;
   end;
m := m+1
end
else
begin
m := 0 ;
ShowMessage ('找不到'+ ReplaceDialog1.FindText);
end;
end;
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
    Memo1.SelText := ReplaceDialog1.ReplaceText ;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    if Memo1.Modified = True then
      begin
        if ID_OK = MessageBox(Handle,'内容以发生改变,是否保存?','提示',MB_OKCANCEL) then
        //判断在选择弹出对话框的按钮时所执行的动作
           begin
           SaveDialog1.Filter := '文本文档(*.TXT)|*.TXT';
           SaveDialog1.Execute;
           FileName := SaveDialog1.FileName + '.txt' ;
           Memo1.Lines.SaveToFile(FileName);
           end
         else
         exit;
       end;
end;
end.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 14:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表