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

RichEdit

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. {==============================================================================}
  4. { This demo shows how to scroll to specified position of document using        }
  5. { special invisible labels - "checkpoints"                                     }
  6. { Key methods and properties:                                                  }
  7. { - AddNamedCheckpoint;                                                        }
  8. { - GetCheckpointByNo, FindCheckpointByName;                                   }
  9. { - GetCheckpointY, GetCheckpointYEx;                                          }
  10. { - ScrollTo                                                                   }
  11. { - Options (rvoShowCheckpoints)                                               }
  12. {==============================================================================}
  13. uses
  14.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  15.   StdCtrls, RVStyle, RVScroll, RichView;
  16. type
  17.   TForm1 = class(TForm)
  18.     RichView1: TRichView;
  19.     RVStyle1: TRVStyle;
  20.     Button1: TButton;
  21.     Button2: TButton;
  22.     Button3: TButton;
  23.     CheckBox1: TCheckBox;
  24.     Button4: TButton;
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure CheckBox1Click(Sender: TObject);
  27.     procedure Button1Click(Sender: TObject);
  28.     procedure Button2Click(Sender: TObject);
  29.     procedure Button3Click(Sender: TObject);
  30.     procedure Button4Click(Sender: TObject);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36. var
  37.   Form1: TForm1;
  38. implementation
  39. {$R *.DFM}
  40. procedure TForm1.FormCreate(Sender: TObject);
  41. var i, j: Integer;
  42. begin
  43.   for i := 1 to 3 do begin
  44.     RichView1.AddNamedCheckpoint('C'+IntToStr(i));
  45.     RichView1.AddFmt('Chapter %d', [i], 1,1);
  46.     for j := 0 to 30 do
  47.       RichView1.AddNL('Bla - bla - bla - bla - bla - bla - bla - bla'+
  48.                       '- bla - bla - bla - bla - bla - bla - bla - bla',0,0);
  49.   end;
  50.   RichView1.AddNamedCheckpoint('END');
  51.   RichView1.Format;
  52.   {
  53.     Comments:
  54.     Checkpoints are not items. They are special additional information,
  55.     associated with any item.
  56.     (in older, freeware versions, checkpoints were items)
  57.     But checkpoint can be added like any other item using Add*** methods:
  58.     AddNamedCheckpoint, AddCheckpoint, AddNamedCheckpointEx, and some other.
  59.     AddNamedCheckpoint('') == AddCheckpoint
  60.     Checkpoint added with any of these methods will be associated with next
  61.     added item (if no items added after it, checkpoints becomes special
  62.     end-of-text checkpoint which is not associated with any item)
  63.     Do not try to add checkpoints one after another without items between them
  64.     (it's impossible, and causes the exception)
  65.   }
  66. end;
  67. procedure TForm1.CheckBox1Click(Sender: TObject);
  68. begin
  69.   // toggles checkpoints visibility
  70.   if Checkbox1.Checked then
  71.     RichView1.Options := RichView1.Options+[rvoShowCheckpoints]
  72.   else
  73.     RichView1.Options := RichView1.Options-[rvoShowCheckpoints];
  74.   RichView1.Invalidate;
  75. end;
  76. procedure TForm1.Button1Click(Sender: TObject);
  77. var CheckpointData: TCheckpointData;
  78.     Y: Integer;
  79. begin
  80.   // GetCheckpointByNo(checkpoint index) - returns value of type TCheckpointData,
  81.   // identifying checkpoint
  82.   CheckpointData := RichView1.GetCheckpointByNo(0);
  83.   // GetCheckpointYEx returns Y coordinate of checkpoint
  84.     Y := RichView1.GetCheckpointYEx(CheckpointData);
  85.   // ScrollTo - scrolls to specified Y coordinate
  86.   RichView1.ScrollTo(Y);
  87. end;
  88. procedure TForm1.Button2Click(Sender: TObject);
  89. begin
  90.   // The same actions, more compact
  91.   with RichView1 do
  92.     ScrollTo(GetCheckpointYEx(GetCheckpointByNo(1)));
  93. end;
  94. procedure TForm1.Button3Click(Sender: TObject);
  95. begin
  96.   // Even more compact
  97.   with RichView1 do
  98.     ScrollTo(GetCheckpointY(2));
  99. end;
  100. procedure TForm1.Button4Click(Sender: TObject);
  101. begin
  102.   // We can use checkpoint name to find it
  103.   with RichView1 do
  104.     ScrollTo(GetCheckpointYEx(FindCheckpointByName('END')));
  105. end;
  106. end.