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

RichEdit

开发平台:

Delphi

  1. unit Demo1Frm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   RVStyle, RVScroll, RichView, StdCtrls, Menus;
  6. type
  7.   TfrmDemo1 = class(TForm)
  8.     lst: TListBox;
  9.     rv: TRichView;
  10.     pm: TPopupMenu;
  11.     mitShowCP: TMenuItem;
  12.     procedure FormCreate(Sender: TObject);
  13.     procedure rvCheckpointVisible(Sender: TCustomRichView;
  14.       CheckpointData: TCheckpointData);
  15.     procedure lstDblClick(Sender: TObject);
  16.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  17.       Shift: TShiftState);
  18.     procedure pmPopup(Sender: TObject);
  19.     procedure mitShowCPClick(Sender: TObject);
  20.   private
  21.     { Private declarations }
  22.   public
  23.     { Public declarations }
  24.   end;
  25. implementation
  26. uses MainFrm;
  27. {$R *.DFM}
  28. {-----------------------------------------------------------}
  29. procedure TfrmDemo1.FormCreate(Sender: TObject);
  30. var SearchRec: TSearchRec;
  31. begin
  32.   lst.Items.BeginUpdate;
  33.   rv.AddNL('When you scroll this document to some file, corresponded item in '   +
  34.            'the list box is highlighted.',sncomHeading,0);
  35.   rv.AddNL('Double-click on the left listbox to scroll the document to the file.',
  36.            sncomHeading,0);
  37.   rv.AddNL('Right-click to show/hide "checkpoints".',
  38.            sncomHeading,0);
  39.   if FindFirst(ExtractFilePath(Application.ExeName)+'*.pas',
  40.                0,SearchRec) = 0 then
  41.     repeat
  42.       lst.Items.Add(SearchRec.Name);
  43.       // Marking next added item with checkpoint
  44.       rv.AddNamedCheckpointEx(SearchRec.Name, True);
  45.       // Adding name of file
  46.       rv.AddNL(SearchRec.Name,sncomKeyword,3);
  47.       // Adding text from file.
  48.       // Last parameter = True, so all text will be loaded as one
  49.       // paragraph, and displayed in the single frame
  50.       rv.LoadText(ExtractFilePath(Application.ExeName)+SearchRec.Name, sncomNormal, 2, True);
  51.     until FindNext(SearchRec)<>0;
  52.   FindClose(SearchRec);
  53.   lst.Items.EndUpdate;
  54.   rv.Format;
  55. end;
  56. {-----------------------------------------------------------}
  57. procedure TfrmDemo1.rvCheckpointVisible(Sender: TCustomRichView;
  58.   CheckpointData: TCheckpointData);
  59. begin
  60.   if CheckpointData=nil then
  61.     lst.ItemIndex := -1
  62.   else
  63.     lst.ItemIndex := rv.GetCheckpointNo(CheckpointData);
  64. end;
  65. {-----------------------------------------------------------}
  66. procedure TfrmDemo1.lstDblClick(Sender: TObject);
  67. begin
  68.   if lst.ItemIndex=-1 then exit;
  69.   rv.ScrollTo(rv.GetCheckpointY(lst.ItemIndex));
  70. end;
  71. {-----------------------------------------------------------}
  72. procedure TfrmDemo1.FormKeyDown(Sender: TObject; var Key: Word;
  73.   Shift: TShiftState);
  74. begin
  75.   if Key=VK_ESCAPE then Close;
  76. end;
  77. {-----------------------------------------------------------}
  78. procedure TfrmDemo1.pmPopup(Sender: TObject);
  79. begin
  80.   mitShowCP.Checked := rvoShowCheckpoints in rv.Options;
  81. end;
  82. {-----------------------------------------------------------}
  83. procedure TfrmDemo1.mitShowCPClick(Sender: TObject);
  84. begin
  85.   if rvoShowCheckpoints in rv.Options then
  86.     rv.Options := rv.Options - [rvoShowCheckpoints]
  87.   else
  88.     rv.Options := rv.Options + [rvoShowCheckpoints];
  89.   rv.Invalidate;
  90. end;
  91. end.