|
<< Нажмите, чтобы показать Содержание >> TCustomRichView.OnReadField |
Происходит при чтении полей из файлов RTF или DocX.
type
// объявлено в модуле RVStyle/fmxRVStyle
TRVRTFFieldResultAction =
(rvrtffraInsert, rvrtffraCollectText);
TRVFieldResultData = record
FieldResultAction: TRVRTFFieldResultAction;
Item: TObject;
Text: TRVUnicodeString;
Tag: TRVTag;
StyleNo: Integer;
end;
TRVFieldContext = record
FirstTime: Boolean;
ParaNo: Integer;
FieldResultText: TRVUnicodeString;
end;
type
TRVReadFieldEvent = procedure (
Sender: TCustomRichView;
const FieldCode: TRVUnicodeString;
Context: TRVFieldContext;
DocFormat: TRVLoadFormat;
out FieldResult: TRVFieldResultData;
var DoDefault: Boolean) of object;
property OnReadField: TRVReadFieldEvent;
Это событие происходит при чтении полей из файлов RTF или DocX. Оно возникает только для полей, которые не обрабатываются самим TRichView.
Входные параметры:
FieldCode – код поля, включая имя поля RTF/DocX и его параметры
DocFormat – формат загружаемого документа, rvlfRTF или rvlfDocX
Context – дополнительная информация, описывающая текущее состояние чтения RTF/DocX.
DoDefault = True
Выходные параметры:
DoDefault – если False, TRichView должен выполнить действие, описанное в FieldResult; если True, TRichView должен выполнить обработку по умолчанию (т. е. прочитать результат поля из RTF/DocX и вставить его как обычное содержимое).
FieldResult описывает действие, которое должен выполнить TRichView вместо этого поля; используется только если DoDefault = False.
Если вы присвоите FieldResult.FieldResultAction = rvrtffraInsert, содержимое, описанное в FieldResult, должно быть вставлено в TRichView.
Если FieldResult.Item <> nil, это должен быть объект класса, унаследованного от TCustomRVItemInfo. Этот элемент будет вставлен в документ TRichView; в качестве текста элемента будет использоваться FieldResult.Text. Если у этого элемента есть связанный стиль текста (например, у TRVLabelItemInfo есть свойство TextStyleNo), вы можете присвоить rvsDefStyle номеру стиля текста; TRichView заменит это значение номером, представляющим текущие атрибуты текста в RTF/DocX.
Если вы присвоите FieldResult.FieldResultAction = rvrtffraInsert, содержимое, описанное в FieldResult, должно быть вставлено в TRichView.
Если FieldResult.Item = nil, будет вставлен текст FieldResult.Text. Если FieldResult.StyleNo >= 0, он задаёт стиль текста (номер в коллекции Style.TextStyles). Если FieldResult.StyleNo < 0 (или равно rvsDefStyle), используются текущие атрибуты текста RTF/DocX. FieldResult.Text может быть многострочным, но не может содержать символы табуляции (#9). Если FieldResult.Tag <> '', этому тексту присваивается этот тег.
Если вы присвоите FieldResult.FieldResultAction значение rvrtffraCollectText, после вызова этого события ничего не будет вставлено. Вместо этого компонент прочитает результат поля, извлекая из него текст. Событие будет вызвано во второй раз для того же поля с Context.FirstTime = False, а собранный текст будет находиться в Context.FieldResultText.
Поля параметра Context:
FirstTime = True, если событие вызывается впервые для данного поля. False, если оно вызывается после сбора текста из результата поля.
FieldResultText – собранный текст, действителен только если FirstTime = False.
ParaNo – номер стиля абзаца (в коллекции Style.ParaStyles), представляющий текущие атрибуты абзаца в файле RTF/DocX. Хотя индекс абзаца будет присвоен вставленному содержимому TRichView, это свойство может быть полезно, если вы назначаете свой собственный стиль текста (FieldResult.StyleNo; или стиль текста, связанный с FieldResult.Item). Зная ParaNo, если используются шаблоны стилей, вы можете назначить стиль текста с соответствующим значением ParaStyleTemplateId.