unit Demo1Frm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RVStyle, RVScroll, RichView, StdCtrls, Menus;

type
  TfrmDemo1 = class(TForm)
    lst: TListBox;
    rv: TRichView;
    pm: TPopupMenu;
    mitShowCP: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure rvCheckpointVisible(Sender: TCustomRichView;
      CheckpointData: TCheckpointData);
    procedure lstDblClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure pmPopup(Sender: TObject);
    procedure mitShowCPClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


implementation
uses MainFrm;
{$R *.DFM}
{-----------------------------------------------------------}
procedure TfrmDemo1.FormCreate(Sender: TObject);
var SearchRec: TSearchRec;
begin
  lst.Items.BeginUpdate;
  rv.AddNL('When you scroll this document to some file, the corresponding item'+
    ' in the list box is highlighted.',sncomHeading,0);
  rv.AddNL('Double-click on the left listbox to scroll to the file.', sncomHeading,0);
  rv.AddNL('Right-click to show/hide "checkpoints".', sncomHeading,0);
  if FindFirst(ExtractFilePath(Application.ExeName)+'*.pas', 0,SearchRec) = 0 then
    repeat
      lst.Items.Add(SearchRec.Name);
      // Marking next added item with checkpoint
      rv.AddNamedCheckpointEx(SearchRec.Name, True);
      // Adding name of file
      rv.AddNL(SearchRec.Name,sncomKeyword,3);
      // Adding text from file.
      // Last parameter = True, so all text will be loaded as one
      // paragraph, and displayed in the single frame
      rv.LoadText(ExtractFilePath(Application.ExeName)+SearchRec.Name, sncomNormal, 2, True);
    until FindNext(SearchRec)<>0;
  FindClose(SearchRec);
  lst.Items.EndUpdate;
  rv.Format;
end;
{-----------------------------------------------------------}
procedure TfrmDemo1.rvCheckpointVisible(Sender: TCustomRichView;
  CheckpointData: TCheckpointData);
begin
  if CheckpointData=nil then
    lst.ItemIndex := -1
  else
    lst.ItemIndex := rv.GetCheckpointNo(CheckpointData);
end;
{-----------------------------------------------------------}
procedure TfrmDemo1.lstDblClick(Sender: TObject);
begin
  if lst.ItemIndex=-1 then exit;
  rv.ScrollTo(rv.GetCheckpointY(lst.ItemIndex));
end;
{-----------------------------------------------------------}
procedure TfrmDemo1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_ESCAPE then Close;
end;
{-----------------------------------------------------------}
procedure TfrmDemo1.pmPopup(Sender: TObject);
begin
  mitShowCP.Checked := rvoShowCheckpoints in rv.Options;
end;
{-----------------------------------------------------------}
procedure TfrmDemo1.mitShowCPClick(Sender: TObject);
begin
  if rvoShowCheckpoints in rv.Options then
    rv.Options := rv.Options - [rvoShowCheckpoints]
  else
    rv.Options := rv.Options + [rvoShowCheckpoints];
  rv.Invalidate;
end;

end.
