Unit1.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:4k
源码类别:

RichEdit

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ExtCtrls, RVScroll, RichView, RVEdit, RVMisc, RVStyle, ImgList,
  6.   RVTable;
  7. type
  8.   TForm1 = class(TForm)
  9.     rve: TRichViewEdit;
  10.     Panel1: TPanel;
  11.     bnnOpen: TButton;
  12.     btnFind: TButton;
  13.     btnReplace: TButton;
  14.     fd: TFindDialog;
  15.     rd: TReplaceDialog;
  16.     RVStyle1: TRVStyle;
  17.     OpenDialog1: TOpenDialog;
  18.     il: TImageList;
  19.     procedure btnReplaceClick(Sender: TObject);
  20.     procedure rdFind(Sender: TObject);
  21.     procedure rdReplace(Sender: TObject);
  22.     procedure rveRVFImageListNeeded(Sender: TCustomRichView;
  23.       ImageListTag: Integer; var il: TCustomImageList);
  24.     procedure btnFindClick(Sender: TObject);
  25.     procedure fdFind(Sender: TObject);
  26.     procedure bnnOpenClick(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32. var
  33.   Form1: TForm1;
  34. implementation
  35. {$R *.DFM}
  36. procedure ShowInfo(const msg,cpt: String);
  37. begin
  38.   Application.MessageBox(PChar(msg),PChar(cpt),MB_OK or MB_ICONINFORMATION);
  39. end;
  40. {=============================== REPLACE ======================================}
  41. procedure TForm1.btnReplaceClick(Sender: TObject);
  42. var s: String;
  43.     p: Integer;
  44. begin
  45.   rve.SetFocus;
  46.   fd.CloseDialog;
  47.   if rve.SelectionExists then begin
  48.     s := rve.GetSelText;
  49.     p := Pos(#13,s);
  50.     if p<>0 then s := Copy(s,1,p-1);
  51.     rd.FindText := s;
  52.   end;
  53.   rd.Execute;
  54. end;
  55. {------------------------------------------------------------------------------}
  56. procedure TForm1.rdFind(Sender: TObject);
  57. begin
  58.   if not rve.SearchText(rd.FindText,GetRVESearchOptions(rd.Options)) then
  59.     ShowInfo('String not found','Search and Replace');
  60. end;
  61. {------------------------------------------------------------------------------}
  62. procedure TForm1.rdReplace(Sender: TObject);
  63. var c: Integer;
  64. begin
  65.   if frReplace in rd.Options then begin
  66.     if rve.GetSelText=rd.FindText then rve.InsertText(rd.ReplaceText,False);
  67.     if not rve.SearchText(rd.FindText,GetRVESearchOptions(rd.Options)) then
  68.       ShowInfo('String not found','Search and Replace');
  69.     end
  70.   else if frReplaceAll in rd.Options then begin
  71.     c := 0;
  72.     if rve.GetSelText=rd.FindText then begin
  73.       rve.InsertText(rd.ReplaceText,False);
  74.       inc(c);
  75.     end;
  76.     while rve.SearchText(rd.FindText,GetRVESearchOptions(rd.Options)) do begin
  77.       rve.InsertText(rd.ReplaceText,False);
  78.       inc(c);
  79.     end;
  80.     ShowInfo(Format('There were %d replacements',[c]),'Replace');
  81.   end;
  82. end;
  83. {================================= FIND =======================================}
  84. procedure TForm1.btnFindClick(Sender: TObject);
  85. var s: String;
  86.     p: Integer;
  87. begin
  88.   rve.SetFocus;
  89.   rd.CloseDialog;
  90.   if rve.SelectionExists then begin
  91.     s := rve.GetSelText;
  92.     p := Pos(#13,s);
  93.     if p<>0 then s := Copy(s,1,p-1);
  94.     fd.FindText := s;
  95.   end;
  96.   fd.Execute;
  97. end;
  98. {------------------------------------------------------------------------------}
  99. procedure TForm1.fdFind(Sender: TObject);
  100. begin
  101.   if not rve.SearchText(fd.FindText,GetRVESearchOptions(fd.Options)) then
  102.     ShowInfo('String not found','Search');
  103. end;
  104. {==============================================================================}
  105. procedure TForm1.rveRVFImageListNeeded(Sender: TCustomRichView;
  106.   ImageListTag: Integer; var il: TCustomImageList);
  107. begin
  108.   il := Self.il;
  109. end;
  110. {------------------------------------------------------------------------------}
  111. procedure TForm1.bnnOpenClick(Sender: TObject);
  112. var
  113.     r: Boolean;
  114. begin
  115.   if OpenDialog1.Execute then begin
  116.     rve.Clear;
  117.     case OpenDialog1.FilterIndex of
  118.       1: // RVF
  119.         r := rve.LoadRVF(OpenDialog1.FileName);
  120.       2: // ANSI text
  121.         r := rve.LoadText(OpenDialog1.FileName,0,0,False);
  122.       else
  123.         r := False;
  124.     end;
  125.     if not r then
  126.       Application.MessageBox('Error during loading', 'Error', 0);
  127.     rve.Format;
  128.     rve.SetFocus;
  129.   end;
  130. end;
  131. initialization
  132.   RegisterClasses([TEdit,TButton]);
  133. end.