Функции из модуля RVLinear

<< Нажмите, чтобы показать Содержание >>

Функции из модуля RVLinear

Модуль [VCL / FMX] RVLinear / fmxRVLinear.

const

  RVCharsPerLineBreak: Integer = 2;

  RVNonTextCharacter: TRVUnicodeChar = ' ';

 

function RVGetLinearCaretPos(rve: TCustomRichViewEdit;
  CharsPerLineBreak: Integer = -1): Integer;
procedure RVSetLinearCaretPos(rve: TCustomRichViewEdit;

  LinearPos: Integer; CharsPerLineBreak: Integer = -1);

RVGetLinearCaretPos возвращает позицию каретки в виде количества символов перед ней. Нетекстовые объекты, кроме таблиц, считаются одним символом, а разрывы строк – CharsPerLineBreak символами.

RVSetLinearCaretPos перемещает каретку в указанную позицию.

Значение параметра CharsPerLineBreak

Описание

2

Использовать #13#10 для разделения строк

1

Использовать #13 для разделения строк

0

Строки не разделяются

-1

Использовать значение глобальной переменной RVCharsPerLineBreak (которая, с свою очередь, может быть равна 2, 1 или 0)

procedure RVGetSelection(rv: TCustomRichView;

  out SelStart, SelLength: Integer;
  CharsPerLineBreak: Integer = -1);
procedure RVSetSelection(rv: TCustomRichView

  SelStart, SelLength: Integer;
  CharsPerLineBreak: Integer = -1);

RVGetSelection возвращает позицию выделения в параметрах, аналогичных Memo / RichEdit (SelStart и SelLength).

RVSetSelection устанавливает выделение с помощью этих значений.

type

  TRVSelection = record

    SelStart, SelLength: Integer;

    MultiCell: Boolean;

    StartRow, StartCol, RowOffs, ColOffs: Integer;

  end;

procedure RVGetSelectionEx(rv: TCustomRichView;

  out Selection: TRVSelection;
  CharsPerLineBreak: Integer = -1);
procedure RVSetSelectionEx(rv: TCustomRichView;

  const Selection: TRVSelection;
  CharsPerLineBreak: Integer = -1);

RVGetSelectionEx возвращает позицию выделения в записи типа TRVSelection.

RVSetSelectionEx устанавливает выделение с помощью этой записи.

Эти функции поддерживают не только обычное выделение, но и выделение нескольких ячеек в таблицах.

function RichViewToLinear(rv: TCustomRichView;

  CurRVData, RVData: TCustomRVData;
  ItemNo, ItemOffs: Integer; out LinearPos: Integer;
  CharsPerLineBreak: Integer = -1): Boolean;
function LinearToRichView(rv: TCustomRichView;

  CurRVData: TCustomRVData;
  var LinearPos: Integer; out RVData: TCustomRVData;
  out ItemNo, ItemOffs: Integer;

  CharsPerLineBreak: Integer = -1): Boolean;

RichViewToLinear преобразует позицию, заданную в параметрах ТРВ-Редактора (RVData – документ, ItemNo – номер элемента в этом документе, ItemOffs – смещение внутри этого элемента), в линейную координату – количество символов от начала CurRVData до этой позиции.

Нетекстовые объекты, кроме таблиц, считаются одним символом, а разрывы строк – CharsPerLineBreak символами.

LinearToRichView выполняет обратное преобразование.

function RVGetTextRange(rv: TCustomRichView;
  RangeStart, RangeLength: Integer; 
  CharsPerLineBreak: Integer = -1): TRVUnicodeString;
function RVGetTextLength(rv: TCustomRichView
  CharsPerLineBreak: Integer = -1): Integer;

RVGetTextRange возвращает текст из rv, начиная с позиции RangeStart, длиной RangeLength.

Нетекстовые элементы, кроме таблиц и табуляций, возвращаются как RVNonTextCharacter. Об обработке разрывов строк см. таблицу о CharsPerLineBreak выше.

Вызов RVGetTextRange(rv, 0, RVGetTextLength(rv)) возвращает весь текст.

 

Все эти функции совместимы между собой и одинаково вычисляют позиции при условии, что используется одно и то же значение CharsPerLineBreak.

Текст, возвращаемый RVGetTextRange, имеет взаимно однозначное соответствие с документом TRichView, в отличие от текста, возвращаемого функциями из модуля RVGetText.