Перейти к содержанию
Fire Monkey от А до Я
  • 0

Font.Size и высота в TEdit


FeLDMARShaL

Вопрос

Очень серьезный баг который раньше обходил всякими разными способами, но сейчас уже не получается. Воспроизводится стабильно.

1) Delphi XE8.1

2) Создаем новый проект для различных устройств

3) Кладем на форму TEdit

4) Делаем выравнивание по верху (просто так, чтобы не подгадывать с размерами, и чтобы после компиляции на устройство он не пропал)

5) Из StyleSettings убираем галочку напротив Size (чтобы можно было изменять размер шрифта в рантайме)

6) Ложим на форму TButton

7) Делаем выравнивание по верху (тоже просто так чтобы не потерялся контрол)

8) Создаем событие клика у этой кнопки, в котором уменьшаем на единицу размер шрифта у TEdit:

Edit1.TextSetting.Font.Size := Edit1.TextSetting.Font.Size - 1;

Компилируем на андроид устройство (любое, ошибка везде наблюдается)

 

После успешного запуска приложения вводим в TEdit какую нибудь фразу из нескольких слов. И если тыкать по полю, то видим как каретка всегда ставится в от место которое тыкнули, т.е. у нас есть возможность тыкнуть на 2 букву и исправить ее.

После чего начинаем уменьшать размер шрифта тыка по кнопке. И в один прекрасные момент у нас каретка жестко становится в самом начале и мы не можем изменить ее положение

Ссылка на комментарий

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

  • 0

Выше описал как этот баг воспроизвести штатными средствами. В своем же приложении я использую свой стилизованный контрол, в котором использую больший шрифт, в результате чего делаю сам контрол по высоте выше. И заметил, что работа с Edit пропадет не при определенных значениях шрифта, а при определенных соотношениях высоты Edit к размеру шрифта.

Например (данные не точные):

1) При высоте 100 пикселов минимальный размер шрифта при котором контрол работает правильно 40 пикселов

2) При высоте 20 пикселов минимальный размер шрифта 13 пикселов

 

Если выставить размер шрифта хоть на 1 пексел меньше чем минимальный, то будем наблюдать баг, что не можем перемещать курсор по контролу.

Раньше обходил этот баг так: высчитывал примерное соотношение минимального размера шрифта при котором все было хорошо, и задавал физическии ограничение, в результате чего пользователь по факту никогда не смог бы уменьшить его и не увидеть баг.

 

п.с. c iOS насколько я помню такая же проблема (но это не гарантирую, т.к. уже давно не проверял)

Ссылка на комментарий
  • 0

Проверил на Delphi XE10 сиетл: тоже самое. точно также контролу башню сносит и теряется возможность передвигать каретку внутри контрола.

Нуждаюсь в любом решении, способного победить этот крайне негативный эффект.

Ссылка на комментарий
  • 0

FeLDMARShaL, огромное спасибо! Этот топик сэкономил мне уйму впустую потраченного времени! iOS 8.4 (XE7) - уменьшили шрифт (вместе с кучей других правок) и получили такой же эффект. Мне бы в голову не пришло, что это от размера шрифта зависит, лазил бы по всем diff-ам, выискивая глюк...

Увы, решение не искал - просто увеличил шрифт...

Ссылка на комментарий
  • 0

А может товарищи админы/модераторы могут прокомментировать ошибочку. Может есть смысл попросить разработчиков эмбаркадеро заняться багом? раз он тянется уже как минимум с XE7?

Ну или хотя бы любое временное решение посоветуете? Может есть сторонний компонент лишеный этого бага (по возможности бесплатный), или аналог?

Ссылка на комментарий
  • 0

Проверил на Delphi XE10 сиетл: тоже самое. точно также контролу башню сносит и теряется возможность передвигать каретку внутри контрола.

Нуждаюсь в любом решении, способного победить этот крайне негативный эффект.

Эффект может негативный, вот только мне непонятно нафига он нужен!

Зачем что то писать, уменьшать шрифты по кнопке, править с любой позиции - зачем все это?

Придумайте идеологически по-другому схему!

Ссылка на комментарий
  • 0

Собирался открыть тему про Font.Size, а тут уже есть она. :)

 

Из-за того что стоящие в ряд Edit-ы не умещались мне пришлось уменьшить размер шрифта с 12 на 11  (Шрифт: Segoe UI  Начертание: обычный).

И после этого никак не получается перемещаться в Edit. Каретка всегда стоит впереди и сколько бы раз не тапал по Edit, не могу переместиться в конец.

 

 

Эффект может негативный, вот только мне непонятно нафига он нужен!

Зачем что то писать, уменьшать шрифты по кнопке, править с любой позиции - зачем все это?

Придумайте идеологически по-другому схему!

Этот эффект получается даже если уменьшить шрифт заранее. Например, в моем случае Edit-ы должны стоять в ряд, так как фактически они заполняют один уникальный номер и разделить их в два ряда никак не получится.

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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