TCustomRichView.OnSaveItemToFile

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

TCustomRichView.OnSaveItemToFile

Позволяет изменить способ сохранения элементов документа в текстовом формате, RTF, DocX, HTML или Markdown.

type

  TRVSaveItemToFileEvent = procedure (Sender: TCustomRichView;

    const Path: TRVUnicodeString

    RVData: TCustomRVData; ItemNo: Integer;

    SaveFormat: TRVSaveFormatvar OutStr: TRVUnicodeString;

    var DoDefault: Boolean) of object;

 

property OnSaveItemToFile: TRVSaveItemToFileEvent;

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

Существуют события, предоставляющие часть возможностей данного события:

OnHTMLSaveImage,

OnSaveImage2,

OnSaveComponentToFile.

Эти события проще в использовании, чем это событие OnSaveItemToFile.

 

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

Path путь к файлу для сохранения документа;

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

SaveFormat идентифицирует формат сохранения документа.

OutStr:

для нетекстовых элементов: пустая строка;

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

DoDefault True.

 

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

Установите значение параметров DoDefault и OutStr согласно таблице ниже.

Выходное значение DoDefault

Для текстовых элементов

Для нетекстовых элементов

True

Для текстовых файлов: стандартное сохранение, значение OutStr не используется.

Для HTML, RTF, DocX, Markdown: значение OutStr будет обработано и сохранено (например, '<' будут заменены на '&lt;' для HTML).

Стандартное сохранение, значение OutStr не используется..

False

OutStr будет сохранено в файл без обработки (без замены управляющих символов).

Если вы не хотите изменять сохранение какого-либо элемента, оставьте параметр DoDefault в значении True.

При сохранении в форматы HTML и RTF нельзя изменить некоторую специальную обработку маркеров списка.

Замечания по DocX:

событие не вызывается для таблиц;

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

Замечания по Markdown:

Независимо от значения DoDefault, пробелы в OutStr могут быть закодированы (заменены на '&nbsp;' или перенос строки). Чтобы этого избежать, используйте символы #01 вместо пробелов (#01 будут заменены пробелами перед сохранением).

 

Пример: сохранение рисунков как '[РИС.]'

procedure TMyForm.MyRichViewSaveItemToFile(

  Sender: TCustomRichView; const Path: TRVUnicodeString;

  RVData: TCustomRVData; ItemNo: Integer;

  SaveFormat: TRVSaveFormat

  var OutStr: TRVUnicodeStringvar DoDefault: Boolean);

begin

  if (RVData.GetItemStyle(ItemNo)=rvsPicturethen

  begin

    case SaveFormat of
      rvsfMarkdown:
        OutStr := '\[РИС.\]';
      else
        OutStr := '[РИС.]';
    end;

    DoDefault := False;        

  end;

end;