TRichviewEdit теряет url при редактировании гиппер ссылки в RTF (конвертация в HTML TRvHtmlImporter)

При редактировании документа RTF в TRichviewEdit пропадает введенный url для добавляемой гиппер ссылки. При этом сохранялся только отформатированный текст, и от того что это гиппер ссылка ни оставалось и следа. При этом совершенно естественно, что при конвертации в HTML ничего не конвертировалось кроме отформатированного текста.
Проблема заключалась в том, что TRichviewEdit не мог самостоятельно сохранять url необходимо
Дописать следующий код (спасибо Сергею Ткаченко – разработчику компонента за консультацию по этом у вопросу)
На обработчики событий OnReadHyperlink OnWriteHyperlink

procedure.RichViewEdit1ReadHyperlink(Sender: TCustomRichView; const Target
  , Extras: string; DocFormat: TRVLoadFormat; var StyleNo: integer
  ; var ItemTag: TRVTag; var ItemName: TRVRawByteString);
begin
  if DocFormat=rvlfURL then
    StyleNo :=
      rvActionInsertHyperlink1.GetHyperlinkStyleNo(RichViewEdit1); // Возможно здесь необходимо будет написать название вашего экшена для вставки гипеерс ссылки.
  ItemTag:= Target;
end;
//
procedure TfrmRichEditForm.RichViewEdit1WriteHyperlink(Sender: TCustomRichView
  ; id: Integer; RVData: TCustomRVData; ItemNo: Integer; SaveFormat: TRVSaveFormat
  ; var Target, Extras: string);
begin
  Target := RVData.GetItemTag(ItemNo);
end;

После чего все отлично работает. Однако если после вставки при компиляции произойдет ошибка в этих обработчиках [dcc32 Error] E2010 Incompatible types: ‘Integer’ and ‘string’, то необходимо проверить возможно обработчик OnReadHyperlink как описано ниже.

procedure.RichViewEdit1ReadHyperlink(Sender: TCustomRichView;
  const Target, Extras: string; DocFormat: TRVLoadFormat; var StyleNo, ItemTag: integer;
 var ItemName: TRVRawByteString);

Это происходит из за того что тип TRVTag описан следующим образом

{$IFNDEF RVOLDTAGS}
TRVTag = type String;
{$ELSE}
TRVTag = Integer;
{$ENDIF}

И необходимо отключить директиву RVOLDTAGS в файле «RV_Defs.inc». После чего необходимо пере компилировать bpl компонента TRichView. Для того чтобы TRvHtmlImporter работал корректно необходимо пере компилировать и его bpl. После чего конвертация работает абсолютно корректно.

Еще интересные записи по данной теме

Share

Tags: , ,

One Response to “TRichviewEdit теряет url при редактировании гиппер ссылки в RTF (конвертация в HTML TRvHtmlImporter)”

  1. Аноним пишет:

    Моё мнение вопрос развёрнут полностью, автор выжал всё что можно, за что ему мой поклон!

Leave a Reply