unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, RVStyle, RVScroll, RichView, RVEdit, CRVFData;

type
  TForm1 = class(TForm)
    rve: TRichViewEdit;
    RVStyle1: TRVStyle;
    procedure RVStyle1DrawParaBack(Sender: TRVStyle; ACanvas: TCanvas;
      ParaNo: Integer; ARect: TRect; var DoDefault: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  rve.LoadRVF('test.rvf');
  rve.Format;
end;

procedure TForm1.RVStyle1DrawParaBack(Sender: TRVStyle; ACanvas: TCanvas;
  ParaNo: Integer; ARect: TRect; var DoDefault: Boolean);
var
  i, j : integer;
  DoLineHL: Boolean;
  r: TRect;
begin

  //if rve.GetItemStyle( rve.CurItemNo ) = rvsTable then exit;
  //if rve.GetItemStyle( Sender.ItemNo ) = rvsTable then exit;
  //if rve.GetCurrentItemEx(TRVTableItemInfo, rv, item) then exit;

  i := Sender.ItemNo;
  j := rve.CurItemNo;

  {RVAlign := rvvaBaseline;
  if (rve.GetItemStyle(j) = rvsPicture) then
    rve.GetPictureInfo(j, s, gr, RVAlign, RVTag );
  if (rve.GetItemStyle(j) = rvsBreak) or
    ( RVAlign = rvvaLeft ) or
      ( RVAlign = rvvaRight ) then exit; }

  if TCustomRVFormattedData(Sender.RVData) = rve.RVData then
    j := rve.CurItemNo;
  repeat
    DoLineHL := i=j;
    if DoLineHL then
      break;
    dec(i);
  //was IsFromNewLine but wasn't always working that way so I changed it to
  //IsParaStart 9/9/2021. SRD
  until TCustomRVFormattedData(Sender.RVData).IsParaStart(i+1);
  if DoLineHL then begin
    ACanvas.Brush.Style := bsSolid;
    ACanvas.Brush.Color := $CCCCFF;
    ACanvas.FillRect(ARect);
    r := ARect;


  //  if rve.GetItemTextW(j) <> '' then
  //  r.Bottom := r.Bottom + 2;
    //if OfficeTextSel1.Checked then r.Left := 0;
  //  ColorBlend(ACanvas, r, SRDJournalThemes.EditorActiveLine , 225);

  end;
end;

end.
