TCustomRichView.OnReadHyperlink

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

TCustomRichView.OnReadHyperlink

Происходит при чтении гиперссылок (например из файла RTF).

type

  TRVReadHyperlink = 

    procedure (Sender: TCustomRichView; 

      const Target, Extras: TRVUnicodeString

      DocFormat: TRVLoadFormat;

     var StyleNo: Integer; var ItemTag: TRVTag

     var ItemName: TRVUnicodeStringof object;

 

property OnReadHyperlink: TRVReadHyperlink;

По умолчанию цели гиперссылок сохраняются в теге элемента документа. Используйте это событие для настройки загрузки ссылок.

Входные параметры:

Target цель гиперссылки (например, интернет-адрес, или имя файла, или имя закладки).

Extras дополнительная информация, сохранённая со ссылкой. Например, если Extras='\o"текст подсказки"', то RTF-ссылка имеет всплывающий текст 'текст подсказки'.

TRichView автоматически записывает подсказки ссылок в дополнительное строковое свойство элемента rvespHint и добавляет символ '#' в начало ссылок на закладки.

DocFormat – формат загружаемого документа.

DocFormat

Описание

rvlfRTF

Событие вызывается во время чтения документа RTF, содержащего гиперссылки (загрузка, вставка, вставка из буфера обмена, или приём перетаскиваемого фрагмента).

rvlfDocX

Событие вызывается во время чтения документа DocX, содержащего гиперссылки (загрузка или вставка)

rvlfURL

Происходит:

1) при приёме перетаскиваемой гиперссылки в TRichViewEdit (опция rvddURL должна быть в AcceptDragDropFormats).

2) при вставке гиперссылки из буфера обмена в TRichViewEdit (опция rvddURL должна быть в AccepPasteFormats).

rvlfHTML

Событие вызывается во время чтения документа HTML, содержащего гиперссылки (загрузка, вставка, или вставка из буфера обмена).

rvlfMarkdown

Событие вызывается во время чтения документа Markdown, содержащего гиперссылки (загрузка, вставка, или вставка из буфера обмена).

StyleNo:

если гипертекстовый объект представляет собой изображение, параметр изначально равен rvsHotPicture. Вы можете изменить его на rvsPicture, если хотите отключить эту ссылку.

если гипертекстовый объект представляет собой текст, это номер стиля этого текста. Вы можете изменить его, чтобы он указывал на другой (гипертекстовый) стиль. Если DocFormat=rvlfURL, исходный стиль может быть не гипертекстовым, поэтому вам необходимо указать номер гипертекстового стиля в этом параметре.

ItemName:

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

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

 

Выходные параметры:

StyleNo стиль (тип элемента), который будет использоваться для загруженного элемента документа. См. комментарии для входных параметров.

ItemName строка, которая будет использоваться в качестве имени (текста) загруженного элемента документа. См. комментарии для входных параметров.

ItemTag значение, которое будет присвоено тегу загруженного элемента документа. Это подходящее место для хранения цели гиперссылки.

 

Пример 1:

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

procedure TMyForm.MyRichViewReadHyperlink(Sender: TCustomRichView; 

  const Target, Extras: TRVUnicodeString; DocFormat: TRVLoadFormat;

  var StyleNo: Integer; var ItemTag: TRVTag

  var ItemName: TRVUnicodeString);

begin

  ItemTag := Target;

end;

 

Более сложный пример:

В этом примере предполагается, что вы включили rvddURL в AcceptDragDropFormat и хотите принимать гиперссылки. Кроме того, предполагается, что в редакторе компонента разрешено динамическое добавление стилей (или значения свойств установлены соответствующим образом).

В этом коде для гиперссылок используется синий подчёркнутый текст.

procedure TMyForm.MyRichViewReadHyperlink(Sender: TCustomRichView; 

  const Target, Extras: TRVUnicodeString; DocFormat: TRVLoadFormat;

  var StyleNo: Integer; var ItemTag: TRVTag

  var ItemName: TRVUnicodeString);

var FontStyle: TFontInfo;
begin

  ItemTag := Target;

  if DocFormat=rvddURL then

  begin

    FontStyle := TFontInfo.Create(nil);

    FontStyle.Assign(Sender.Style.TextStyles[StyleNo]);

    FontStyle.Color := clBlue;

    FontStyle.Style := FontStyle.Style + [fsUnderline];

    FontStyle.Jump := True;

    StyleNo := Sender.Style.FindTextStyle(FontStyle);

    FontStyle.Free;

  end;

end;

То же с использованием Инструментов интерфейса ТРВ (RichViewActions):

procedure TMyForm.MyRichViewReadHyperlink(Sender: TCustomRichView; 

  const Target, Extras: TRVUnicodeString; DocFormat: TRVLoadFormat;

  var StyleNo: Integer; var ItemTag: TRVTag

  var ItemName: TRVUnicodeString);

begin

  ItemTag := Target;

  if DocFormat=rvddURL then

    StyleNo := rvActionInsertHyperlink1.GetHyperlinkStyleNo(

      Sender as TRichViewEdit);

end;

 

См. также события:

OnWriteHyperlink.

См. также свойства RVRTFReadProperties:

BasePathLinks.