|
<< Нажмите, чтобы показать Содержание >> TCustomRichView.OnReadHyperlink |
Происходит при чтении гиперссылок (например из файла RTF).
type
TRVReadHyperlink =
procedure (Sender: TCustomRichView;
const Target, Extras: TRVUnicodeString;
DocFormat: TRVLoadFormat;
var StyleNo: Integer; var ItemTag: TRVTag;
var ItemName: TRVUnicodeString) of 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;
См. также события:
См. также свойства RVRTFReadProperties: