TCustomRichView.OnWriteHyperlink

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

TCustomRichView.OnWriteHyperlink

Происходит при сохранении гиперссылки в файл HTML, Markdown, RTF или DocX.

type

  TRVWriteHyperlink = procedure (Sender: TCustomRichView;

     id: Integer; RVData: TCustomRVData; ItemNo: Integer;

     SaveFormat: TRVSaveFormat;

     var Target, Extras: TRVUnicodeStringof object;

 

property OnWriteHyperlink: TRVWriteHyperlink;

По умолчанию теги элементов документа сохраняются как цели гиперссылок в форматах RTF, DocX, HTML и Markdown.

Однако вы можете использовать это событие для настройки сохранения.

Для этого укажите цель гиперссылки в параметре Target.

 

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

id идентификатор гиперссылки; это событие может вызываться для неформатированных документов; в этом случае id=-1.

RVData документ, содержащий гиперссылку (RVData основного TRichView, ячейка, или RVData редактора ячейки).

ItemNo номер гипертекстового элемента в RVData.

SaveFormat может быть одним из: rvsfHTML, rvsfRTF, rvsfDocX, rvsfMarkdown.

 

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

Target цель гиперссылки, которая будет сохранена в файл или поток. Если вы присвоите пустую строку, этот элемент не будет сохранён как гиперссылка.

Extras дополнительная информация для сохранения со ссылкой.

Пример 1:

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

procedure TMyForm.MyRichViewWriteHyperlink(

  Sender: TCustomRichView; id: Integer;

  RVData: TCustomRVData; ItemNo: Integer;

  SaveFormat: TRVSaveFormat;

  var Target, Extras: TRVUnicodeString);

begin

  Target := RVData.GetItemTag(ItemNo);

end;

Пример 2:

Аналогично, но в этом примере, помимо сохранения целевого адреса ссылки, сохраняется подсказка «Нажмите здесь!» (для RTF и для HTML) и атрибут «target=_blank» для HTML.

procedure TMyForm.MyRichViewWriteHyperlink(

  Sender: TCustomRichView; id: Integer;

  RVData: TCustomRVData; ItemNo: Integer;

  SaveFormat: TRVSaveFormat;

  var Target, Extras: TRVUnicodeString);

begin

  Target := RVData.GetItemTag(ItemNo);

  case SaveFormat of

    rvsfHTML:

      Extras := 'target=_blank title="Нажмите здесь!"';

    rvsfRTF:

      Extras := '\o "Нажмите здесь!"';

  end;

end;

Сохранение подсказки показано просто для демонстрации возможностей события. TRichView автоматически сохраняет подсказки, хранящиеся в дополнительном строковом свойстве элемента rvespHint.

 

Пример 3:

procedure TMyForm.MyRichViewWriteHyperlink(

  Sender: TCustomRichView; id: Integer;

  RVData: TCustomRVData; ItemNo: Integer;

  SaveFormat: TRVSaveFormat;

  var Target, Extras: TRVUnicodeString);

begin

  case id-FirstJumpNo of

    0: Target := 'http://www.borland.com';

    1: Target := 'http://www.inprise.com';

    2: Target := 'http://www.codegear.com';

    3: Target := 'http://www.embarcadero.com';

  end;

end;

 

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

OnReadHyperlink.

См. также методы:

SaveHTML;

SaveMarkdown;

SaveRTF;

SaveDocX;

(и аналогичные методы, сохраняющие в поток).

См. также:

Гипертекст;

Экспорт HTML.