TCustomRichView.OnSaveComponentToFile

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

TCustomRichView.OnSaveComponentToFile

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

type

  TRVSaveComponentToFileEvent = procedure(

    Sender: TCustomRichView; Path: TRVUnicodeString;

    SaveMe: TPersistent; SaveFormat: TRVSaveFormat;

    var OutStr:TRVUnicodeStringof object;

 

property OnSaveComponentToFile: TRVSaveComponentToFileEvent;

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

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

SaveMe компонент, который нужно сохранить.

SaveFormat идентифицирует формат файла: rvsfText, rvsfHTML, rvsfRTF, rvsfDocX, rvsfMarkdown.

Path – путь, куда сохраняется документ. Может быть использован для сохранения изображений (см. метод SavePicture).

Дополнительные входные параметры:

Sender.Style.RVData, Sender.Style.ItemNo указывают на элемент документа, содержащий компонент. RVData документ, содержащий сохраняемый элемент; это может быть Sender.RVData, ячейка таблицы, или RVData редактора ячейки таблицы. ItemNo номер элемента в RVData.

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

OutStr текст для вставки в файл.

Для DocX, OutStr вставляется в «поток символов» («run»), то есть между <w:r> и </w:r>.

 

Пример:

procedure TMyForm.MyRichViewSaveComponentToFile(

  Sender: TCustomRichView; Path: TRVUnicodeString;

  SaveMe: TPersistent; SaveFormat: TRVSaveFormat;

  var OutStr: TRVUnicodeString);

var bmp: TBitmap;

  ImageFileName: TRVUnicodeString;

begin

 case SaveFormat of

   rvsfText:

     begin

       if SaveMe is TButton then

         OutStr := '['+TButton(SaveMe).Caption+']';

       else if SaveMe is TImage then

         OutStr := '<Изображение '+TImage(SaveMe).Hint+'>';

      end;

   rvsfHTML:

     begin

       if SaveMe is TButton then

         OutStr := '<FORM><INPUT type="button"' +

                   'value="' + TButton(SaveMe).Caption +

                   '" onClick="alert(''Тест'')"></FORM>';

       else if SaveMe is TImage then begin

         bmp         := TBitmap.Create;

         bmp.Height  := TImage(SaveMe).Height;

         bmp.Width   := TImage(SaveMe).Width;

         bmp.Canvas.Draw(0,0, TImage(SaveMe).Picture.Bitmap);

         ImageFileName := MyRichView.SavePicture(SaveFormat,Path,bmp);

         OutStr      := '<IMG src="'+ImageFileName+'" alt='+

                          TImage(SaveMe).Hint+'>';

         bmp.Free;

       end;

     end;

    rvsfRTF:

      begin

        OutStr := '\plain\b ('+SaveMe.ClassName+')';

      end;

 end;

end;

Этот код сохраняет:

компоненты TButton в текст как строку «[Button.Caption]»;

компоненты TButton в HTML как форму с кнопкой;

компоненты TImage в текст как строку «<Изображение Image.Hint>»;

компоненты TImageв HTML как изображения (используя SavePicture) с альтернативным текстом «Image.Hint»;

все компоненты в RTF как «(Класс компонента)».

 

См. также:

OnSaveItemToFile;

Сохранение и загрузка;

Экспорт в HTML.