slav_z

Работа с атрибутами текста

В теме 2 сообщения

image.png.1fbb6d5d08e9b1bec7874491eea83dcf.png

Как сделать текст с подобными атрибутами? Очень просто!

(Цвет текста не работает в XE8) Вот весь код:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.UIConsts, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.TextLayout;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Text1: TText;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

type
  TTextAccess = class(TText);

procedure ClearTextAttribute(Text: TText);
begin
  TTextAccess(Text).Layout.ClearAttributes;
end;

procedure AddTextAttribute(Text: TText; Pos,Length: Integer; FontStyles: TFontStyles; FontColor: TAlphaColor);
var Font: TFont;
begin
  Font:=TFont.Create;
  Font.Assign(Text.Font);
  Font.Style:=FontStyles;
  TTextAccess(Text).Layout.AddAttribute(
    TTextRange.Create(Pos,Length),
    TTextAttribute.Create(Font,FontColor));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

  AddTextAttribute(Text1,10,17,[TFontStyle.fsBold],claRed);
  AddTextAttribute(Text1,34,8,[TFontStyle.fsUnderline],claBlue);
  AddTextAttribute(Text1,47,8,[TFontStyle.fsStrikeOut],claGreen);

  Text1.Repaint;

end;

end.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Век живи, век учись. Спасибо, не знал о такой возможности. Поигрался в тестовом проекте - все действительно работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От ra.eremeev
      Добрый день!
      Нуждаюсь в помощи.
      Необходимо в TText вывести текст в Unicode, содержащий смайлы.
      На iOS проблем нет - смайлы отображаются. 
      На Android - монохромные значки (залитые черным) - .
      При этом, если выводить в ListView (через TListItemText), то смайлы выходят и на Android. Шрифт при этом тот же, что и для TText. 
      Но необходимо именно в TText
      Помогите, пожалуйста, как вывести смайлы на Andorid в TText?
       
    • От Роман Фил
      Привет Всем уважаемые! 
      Пытаюсь сделать растягивание по содержимому компонента. Как это реализовано в мессенджерах типа WhatsApp если большой текст то растягивает (выделяется) по содержимому большое поле, если короткий то малое. 
        Text2.Text := Memo1.Lines.Strings[4];   text2.Height := canvas.TextHeight(Text2.Text); //по высоте строки меняется т.к. там и есть одна строка в TText просто переносится WordWrap визуально.   text2.Height:=canvas.TextWidth(text2.Text); //  - так чушь  Как это вообще реализовано кто нибудь сталкивался?

    • От sviat9440
      Почему в 10.1 цвет надписи тянется из стиля, хотя в StylledSettings галочка FontColor отключена?

    • От Axbor
      Как исправит такой косяк с отображением текста TText? Если видно, там остатки от текста отображаются. Платформа андроид, Rad Studio XE 10.

    • От namxai
      Всем привет.
      Реализую поведение TListBox, при котором на OnItemClick, высота Item-а увеличивается и становится виден TText (делаем Visible:=true).
       
      Анимация для наглядности:
      ).
       
      Реализуется так:
        Detail := Item.Children.Items[1];   (Detail as TText).Visible := true;   ItemAni := TFloatAnimation.Create(Item);   ItemAni.Parent := Item;   ItemAni.StartValue := 50;   ItemAni.StopValue := 150;   ItemAni.PropertyName := 'Height';   ItemAni.Start;   ItemAni.OnFinish := FreeItemAni; Вопрос такой. Как мне узнать сколько места займет разбитый автоматом на строки текст в TText, чтобы подстраивать высоту Item под размер текста(он получается от 1 до 7-8 строк). Как узнать на сколько подстрок разбивает TText содержимое?
       
      Сильно не пинайте, я дизайнер, а не программист.
    • От brunnengi
      Здравствуйте
       
      Появилась задача сделать надписи так, что бы цвет букв в одном слове был разный, как на картинке например

      Но так и не нашел решения. Делать слова по одной букве тоже не вариант. 
      Как поступить, какой есть выход? Может кто то уже делал и есть наработки?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу