POV Опубликовано 8 февраля, 2017 Поделиться Опубликовано 8 февраля, 2017 Когда задал компоненте новый TextSettings функция TextWidth возвращает ширину текста для шрифта по умолчанию. Хотя отрисовывает с моими новыми настройками. Отчего? Цитата Ссылка на комментарий
0 Error Опубликовано 8 февраля, 2017 Поделиться Опубликовано 8 февраля, 2017 39 минут назад, POV сказал: Когда задал компоненте новый TextSettings функция TextWidth возвращает ширину текста для шрифта по умолчанию. Хотя отрисовывает с моими новыми настройками. Отчего? https://habrahabr.ru/post/317814/ Цитата Ссылка на комментарий
0 POV Опубликовано 8 февраля, 2017 Автор Поделиться Опубликовано 8 февраля, 2017 Всё уже придумано за нас - у канвы есть MeasureText откуда код на хабре и скопирован. Но и оно возвращает какую-то ересь. Платформа XE8. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 8 февраля, 2017 Модераторы Поделиться Опубликовано 8 февраля, 2017 уже много раз обсуждалось, что TTextLayout нужно инициировать до функции, иначе она косячит при большом кол-ве текста я делаю глобальную переменную и в блоке initialization создаю, ну и в finalization освобождаю. пока глюков не было Berlin если что Цитата Ссылка на комментарий
0 POV Опубликовано 8 февраля, 2017 Автор Поделиться Опубликовано 8 февраля, 2017 А почему оно не инициализировано в родной библиотеке? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 8 февраля, 2017 Модераторы Поделиться Опубликовано 8 февраля, 2017 2 минуты назад, POV сказал: А почему оно не инициализировано в родной библиотеке? ну так там и косячит, незнаю почему они не пофиксят Цитата Ссылка на комментарий
0 POV Опубликовано 8 февраля, 2017 Автор Поделиться Опубликовано 8 февраля, 2017 Да уж. Цитата Ссылка на комментарий
0 ENERGY Опубликовано 13 августа, 2018 Поделиться Опубликовано 13 августа, 2018 (изменено) В 08.02.2017 в 11:10, POV сказал: Когда задал компоненте новый TextSettings функция TextWidth возвращает ширину текста для шрифта по умолчанию. Хотя отрисовывает с моими новыми настройками. Отчего? Оттого, что ширина текста определяется для шрифта и размера указанного в Canvas, а не для шрифта из компонента. Например, в TLabel.TextSettings.Font и в его TLabel.Canvas.Font размер шрифта будет разный (в Canvas он дефолтный - 12). В FMX компонентах Canvas, кстати, общий и один и тот же - это Canvas формы. Если в OnResize чего-либо, сделать так: Label.Canvas.Font.Size := Label.Font.Size; или Label.Canvas.Font.Assign(Label.Font); (чуть дольше) lRealWidth := Label.Canvas.TextWidth(Label.Text); То размер будет корректный. Изменено 13 августа, 2018 пользователем ENERGY MrSergei2017 и Maximus 1 1 Цитата Ссылка на комментарий
Вопрос
POV
Когда задал компоненте новый TextSettings функция TextWidth возвращает ширину текста для шрифта по умолчанию. Хотя отрисовывает с моими новыми настройками.
Отчего?
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.