|
<< Нажмите, чтобы показать Содержание >> TCustomRichView.OnSaveComponentToFile |
Происходит когда TRichView сохраняет вставленный компонент в документ формата Markdown, RTF, HTML, DocX, текст.
type
TRVSaveComponentToFileEvent = procedure(
Sender: TCustomRichView; Path: TRVUnicodeString;
SaveMe: TPersistent; SaveFormat: TRVSaveFormat;
var OutStr:TRVUnicodeString) of 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 как «(Класс компонента)».
См. также: