Перейти к содержанию
  • 0
Morfi

Изменение размера шрифта в RunTime

Вопросы

Доброго времени суток.

 

Создаю программно компоненты TLabel.

Status1 := TLabel.Create(Form1);
Status1.Name := 'LabelStatus1_'+idMachine.ToString;
Status1.Parent := RectangleStatus;
Status1.Align := TAlignLayout(9);
Status1.TextSettings.HorzAlign := TTextAlign(0);
//По умолчанию, при создании объекта TLabel, размер шрифта устанавливается в значение 12
Status1.TextSettings.Font.Size := 24;
Status1.TextSettings.WordWrap := true;
Status1.Text := 'Статус 1';
Status1.Visible := true;

Изменяю значение размера шрифта:

Status1.TextSettings.Font.Size := 24 

Значение изменяется, но размер шрифта TLabel при отображении на форме остается прежним.

 

Как можно, или нужно изменять размер шрифта компонента в RunTime?

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


Ссылка на сообщение

Рекомендуемые сообщения

Гость
Эта тема закрыта для публикации ответов.

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

    • От dnekrasov
      Механизм, который позволяет использовать иконку символьного шрифта вместо картинки на кнопках.
      Уж очень мне не нравится стандартный механизм добавления картинки на кнопку, поэтому, пару лет назад, начал искать альтернативу и остановился на символьных шрифтах (таких как FontAwesome). Вот что из этого получилось:

      IconicFontGlyph.zip 
      Под Windows работает без проблем - на других системах не пробовал.
      Как это работает
      Добавляем в проект модуль UIExt.IconicFont.pas Добавляем в проект модули описания шрифтов, которые будут использоваться (см. ниже) Описываем символ, который будет использоваться в качестве иконки (см. ниже) В обработчике  события OnApplyStyleLookup кнопки пишем одну строчку - TIconicFont.ApplyButtonStyle(TCustomButton(Sender)); Модули описания шрифтов
      UIExt.IconicFont.FA.pas -  Font Awesome UIExt.IconicFont.IM.pas - IcoMoon UIExt.IconicFont.IML.pas - IcoMoon Lindua UIExt.IconicFont.IMLN.pas - IcoMoon Linear UIExt.IconicFont.MDI.pas - Material Design Icons UIExt.IconicFont.WHHG.pas - WebHostingHub Glyphs Описание символа
      Для описания символа используется свойство StyleName (не знаю как остальные - лично я его нигде не использую). Само описание - это строка в определённом формате:
      [Короткое имя шрифта];[код символа];[размер шрифта];[цвет]
      2 первых поля - обязательны. Короткое имя шрифта можно увидеть в его модуле описания (TIconicFont.Short)
      Примеры можно увидеть на скриншотах выше (текст над кнопками).
      Ну и напоследок - небольшая демка IconicFontDemo.zip
    • От zekelive
      Добрый день, друзья. Подскажите, есть ли возможность в firemonkey открыть форму как представлено на картинке ниже? Если да, то подскажите в какую сторону копать. Спасибо.

    • От denprox
      Доброго времени суток! Подскажите, как узнать оригинальный размер картинки, загруженной в TImage ?
    • От Ameta
      Доброе время суток. После создания/изменения (Edit Custom Style...) собственного стиля у Label1 (добавил в качестве фона прямоугольник) перестали обрабатываться события OnMouseMove, OnMouseDown и т.д. (Label1.HitTest:=True). До изменения стиля все работало. В чем причина? Спасибо за ответ...

    • От rakhmet
      TListView, как внезапно выяснилось, напрочь игнорирует системный размер шрифта и в iOS, и в Android. Есть решение, как его можно заставить соответствовать системным настройкам, или же никто не грузит себя этой ерундой?
      Наверняка и многие другие компоненты не утруждают себя соответствием системным настройкам, но меня пока интересует только TListView.
    • От Кривяков Виталий
      Добрый день!
      Столкнулся с проблемой вывода текста разного размера по одной линии. Не получается использовать BaseLine доступную для Firemonkey. 
      Baseline -   воображаемая прямая линия, проходящая по нижнему краю прямых знаков без учёта свисаний и нижних выносных элементов. В строке символы текста стоят на базовой линии, а нижние выносные элементы текста «свисают» с неё.
      Из описанного выше ясно, что выводимые символы должны лежать на это линии, но в реале как то все некорректно выводится.
      Сделал два примера VCL (черный фонт) и FireMonkey(черный полупрозрачный фонт), оказалось, что вывод текста осуществляется по разному, при одном и том же значении размера шрифта. Базовая линия в обоих примерах 356.
      Совмещаем отображение символов: GlyphsEqual.png Символы совпали, но базовая линия смещена.
      Совмещаем базовую линию: PosEqual.png Базовая линия совпала, как и верхний край контролов, а вот текст (серый) значительно ниже.
      А теперь собственно вопрос вопрос, где ошибка? Как рассчитать базовую линию для FMX?
       
      P.S.
      Про attributes у TTextLayout знаю.


      BaseLine.rar

    • От Martifan
      Доброго времени сутки.
      Хочу в приложение использовать FontAwesome шрифт, но как в примере указана я все так делаю проект деплоится но когда собираюсь записывать телефоне то выдаёт ошибку.
      может кто нибудь знает в чем проблема?
      заранее благодарю
       

    • От Error
      *** Небольшой обмен опытом ***
      Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
      function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
      Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
      Параметры:
      Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
      uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
      Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
      Параметры:
      Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
      uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
      Также данные функции можно найти в этом юните
    • От sviat9440
      Возникла вот такая непонятная ситуация: до этого момента я всегда считал что TLabel никак физически не может принять Tab Focus наравне с TRectangle и тому подобных. Судя по всему я ошибался. Ниже прилагаю скрин окна Tab Order, что там делает TLabel неясно. Ну да ладно. Вопрос в том как его оттуда убрать, чтобы он не жрал Tab Focus? Стандартных галочек TabStop и CanFocus в Tlabel нет.

      P.S. Я не помню чтобы я сталкивался с этой проблемой в предыдущих версиях RAD.
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...