TRVStyleTemplate.ApplyToTextStyle

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

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 (содержит ещё один пример)