Прокрутка в ТРВ-Редакторе (TRichView)

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

Прокрутка в ТРВ-Редакторе (TRichView)

Вертикальная прокрутка [VCL и Lazarus]

В TRichView высота документов может быть практически неограниченной. Однако диапазоны полос прокрутки ограничены, поэтому TRichView не может использовать пиксели в качестве единиц прокрутки (малого шага изменения позиции полосы прокрутки). Единицы прокрутки в компоненте TRVScroller (родительском компоненте TRichView) здесь называются "ЕПТРВ" (Единицы Прокрутки ТРВ-Редактора). По умолчанию 1 ЕПТРВ = 10 пикселей, но компонент может автоматически увеличивать это значение во время форматирования, если диапазон вертикальной полосы прокрутки превышает 30 000 ЕПТРВ. Вы можете задать количество пикселей в 1 ЕПТРВ с помощью свойства VSmallStep (но компонент может увеличивать это значение во время форматирования).

Например, вы можете установить высоту ЕПТРВ равной высоте одной строки обычного текста. После присвоения нового значения VSmallStep следует переформатировать документ с помощью метода Format.

Вы можете получить или установить положение вертикальной полосы прокрутки с помощью свойства VScrollPos (в диапазоне 0..VScrollMax).

Вы также можете использовать метод ScrollTo для прокрутки до указанной вертикальной позиции, заданной в пикселях.

ScrollTo(y) эквивалентно VScrollPos := y div VSmallStep, поэтому ScrollTo не может прокрутить точно до указанной позиции.

Вы можете отображать и скрывать вертикальную полосу прокрутки с помощью свойства VScrollVisible.

Свойство DocumentHeight – это высота документа в пикселях (высота прокручиваемой области). Например, вы можете использовать это значение для установки высоты компонента TRichView. DocumentHeight включает значения TopMargin и BottomMargin.

Вертикальные координаты в документе можно получить для:

закладки

гиперссылки (GetJumpPointY)

любого элемента документа (GetItemCoords)

Вертикальная прокрутка [FireMonkey]

Вертикальная полоса прокрутки появляется автоматически при необходимости.

Вы можете получить или установить положение вертикальной полосы прокрутки, используя свойство VScrollPos (в диапазоне 0..VScrollMax).

Вы также можете использовать метод ScrollToPosition для прокрутки до указанной вертикальной позиции, заданной в пикселях.

Свойство DocumentHeight – это высота документа в пикселях (высота прокручиваемой области). Например, вы можете использовать это значение для установки высоты компонента TRichView. DocumentHeight включает значения TopMargin и BottomMargin.

Вертикальные координаты в документе можно получить для:

закладки

гиперссылки (GetJumpPointY)

любого элемента документа (GetItemCoords)

Горизонтальная прокрутка

Горизонтальная полоса прокрутки появляется автоматически при необходимости.

В версии для VCL и Lazarus, вы можете скрыть её свойством HScrollVisible.

Вы можете получить или установить положение горизонтальной полосы прокрутки, используя свойство HScrollPos (в диапазоне 0..HScrollMax).

С помощью некоторых свойств можно управлять шириной документа (ширина прокручиваемой области за вычетом полей), тем самым контролируя горизонтальную прокрутку (см. LeftMargin, RightMargin).

По умолчанию, если документ не содержит широких изображений, компонентов или таблиц, текст переносится по ширине клиентской области окна TRichView за вычетом полей.

Если же присутствуют широкие элементы, то ширина прокручиваемой области равна:

max(ширина клиентской области окна TRichView,

   "ширина самого широкого элемента" +

   "максимальное значение левого отступа + отступа первой строки +

  правого отступа" + поля),

и текст переносится по ширине прокручиваемой области (за вычетом полей).

Текст в абзацах с опцией отключения переноса также может влиять на ширину прокручиваемой области, точно также как широкие нетекстовые элементы.

Используйте свойство MinTextWidth, чтобы задать минимальную ширину для переноса текста (текст переносится, когда его длина в пикселях превышает это значение). Горизонтальная прокручиваемая область не может быть меньше MinTextWidth + поля (но может быть больше из-за широких изображений или большой ширины окна TRichView). Вы можете использовать MinTextWidth для ускорения форматирования при изменении размера TRichView. Переформатирование происходит очень быстро, если ширина прокручиваемой области не изменяется. Например, если вы установите MinTextWidth равным размеру экрана, TRichView не будет выполнять полное переформатирование при изменении размера пользователем (однако, читать текст с горизонтальной полосой прокрутки неудобно).

Объяснение MinTextWidth

Объяснение MinTextWidth

Свойство MaxTextWidth позволяет задать максимальную ширину для переноса текста. Это значение не влияет на ширину прокручиваемой области.

Объяснение MaxTextWidth

Объяснение MaxTextWidth

Аналогичного эффекта можно добиться, используя опцию rvoClientTextWidth в Options. Если эта опция включена, ширина для переноса текста всегда будет равна ширине клиентского окна TRichView за вычетом полей. Это полезно, если ваш документ может содержать широкие изображения или элементы управления, или абзацы без переноса текста.

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