|
<< Нажмите, чтобы показать Содержание >> TRVStyleTemplate.ApplyToTextStyle |
Изменяет свойства ATextStyle в соответствии со свойствами этого шаблона стиля.
procedure ApplyToTextStyle(ATextStyle: TCustomRVFontInfo;
ParaStyleTemplate: TRVStyleTemplate);
Метод изменяет только те свойства ATextStyle, которые не включены в ATextStyle.ModifiedProperties.
Если требуется изменить все свойства, перед вызовом этого метода присвойте ATextStyle.ModifiedProperties = [].
Если требуется изменить только свойства, управляемые шаблонами стилей, перед вызовом этого метода вызовите UpdateModifiedTextStyleProperties.
Применение шаблона стиля означает применение свойств его TextStyle, перечисленных в ValidTextProperties, а также свойств, унаследованных от Parent.
Свойство Kind этого шаблона стиля должно быть равным rvstkText или rvstkParaText.
К ATextStyle могут применяться до двух шаблонов стилей: этот шаблон стиля и ParaStyleTemplate. Этот шаблон имеет более высокий приоритет, чем ParaStyleTemplate: если какое-либо свойство задано и в этом шаблоне, и в ParaStyleTemplate, используется значение из этого шаблона стиля.
Как этот шаблон стиля, так и ParaStyleTemplate могут быть равны nil.
Последовательность операций:
1.Метод применяет этот шаблон стиля и его родительские шаблоны к ATextStyle. Затем он присваивает ATextStyle.StyleTemplateId = Id. Этот метод можно вызывать для nil-объекта; в этом случае он только присваивает ATextStyle.StyleTemplateId = -1.
2.Затем к оставшимся свойствам применяется ParaStyleTemplate, если он не равен nil. При этом метод НЕ присваивает ATextStyle.ParaStyleTemplateId.
3.После этого оставшиеся свойства ATextStyle сбрасываются к значениям по умолчанию.
Пример: вставка гиперссылки в rve: TRichViewEdit. Если возможно, гиперссылка форматируется с помощью шаблона стиля 'Hyperlink'.
var
OldStyleTemplate, NewStyleTemplate,
ParaStyleTemplate: TRVStyleTemplate;
TextStyle: TFontInfo;
begin
// создание копии текущих значений атрибутов текста в TextStyle
TextStyle := TFontInfo.Create(nil);
TextStyle.Assign(rve.Style.TextStyles[rve.CurTextStyleNo]);
// поиск шаблона стиля 'Hyperlink'
NewStyleTemplate := rve.Style.StyleTemplates.FindItemByName(
'Hyperlink');
if NewStyleTemplate<>nil then
begin
// Шаблон стиля 'Hyperlink' имеется. Применяем его к TextStyle
OldStyleTemplate := rve.Style.StyleTemplates.FindItemById(
TextStyle.StyleTemplateId);
ParaStyleTemplate := rve.Style.StyleTemplates.FindItemById(
TextStyle.ParaStyleTemplateId);
OldStyleTemplate.UpdateModifiedTextStyleProperties(
TextStyle, ParaStyleTemplate);
NewStyleTemplate.ApplyToTextStyle(FontInfo, ParaStyleTemplate);
end
else
begin
// Шаблона стиля 'Hyperlink' нет.
// Применяем свойства гиперссылки по умолчанию
TextStyle.Color := clBlue;
TextStyle.Style := [fsUnderline];
end;
TextStyle.Jump := True;
// вставка
rve.CurTextStyleNo := rve.Style.FindTextStyle(TextStyle);
rve.InsertStringTag('TRichView.com', 'https://www.trichview.ru');
// завершение
TextStyle.Free;
end;
См. также:
▪ApplyToParaStyle (содержит ещё один пример)