Заблокирован
|
||||||
1 | ||||||
RAD XE3+ Надчёркивание (overline)27.01.2021, 06:36. Показов 7002. Ответов 46
Метки текст на форме (Все метки)
Потребовалось мне вывести на окно (ну, например, в TLabel, текст с надчёркиваем). Попробовал поиграться с диакритическими подстановками - результат меня не устроил: надчёркивание получается прерывистым и не соответствует по длине тексту, над которым оно расположено (см. рис. 1).
Хотелось бы иметь таки возможность выводить именно частично надчёркнутый текст, как в документах, например (см. рис. 2).
0
|
27.01.2021, 06:36 | |
Ответы с готовыми решениями:
46
Надчёркивание текста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,370
|
|
29.01.2021, 14:40 | 21 |
А чего это меня на тильду торкнуло? Вот где-то я эту комбинацию как служебную видел.
0
|
Житель Земли
|
||||||
29.01.2021, 15:12 | 25 | |||||
в общем, возникла проблема двойного амперсанда в тексте исходной строки. Двойной амперсанд обрабатывается аж в предке TWinControl в SetText (или GetText) - я не вникал, но в Caption приходит уже сформированная строка
При&&вет (вход) > При&вет (выход) Чтобы учесть это, нужно глобально перерабатывать код метода GetLines. Онако же мне думается, что это не нужно (кто пользуется &&?) Чтобы учесть одинарный амперсанд, нужно изменить цикл
0
|
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,370
|
||||||
29.01.2021, 15:33 | 26 | |||||
Вот если бы переопределить тип:
0
|
Житель Земли
|
|
29.01.2021, 16:12 | 27 |
Мало переопределить тип. Шрифт должен поддерживать надчёркивание. А сам по себе fsItalic не делает начертание наклонным, ибо есть шрифты, не поддерживающие курсив, или полужирное начертание и т.д.
Добавлено через 21 минуту Самое правильное - заморочиться с созданием шрифта Это очень интересная работа
0
|
Заблокирован
|
|
29.01.2021, 23:30 [ТС] | 28 |
Амперсанды амперсандами, а ты учёл такие свойства TLabel, как Alignment, AlignWithMargins, AutoSize, Layout?
Может лучше запилить метод вывода текста на канвас с учётом надчёркиваний, а? Шоп отойти от TLabel-концепции и сделать возможным вывод такой вундервафли куда угодно? Например, в TVirtualStringTree.
0
|
Житель Земли
|
|
30.01.2021, 02:05 | 29 |
Конечно, не учёл. В 10 строчках кода за пару часов это учесть нереально. Нужно залазить в такие дебри классовых взаимоотношений, в которые я никогда не лазил. А так, для вывода коротких однострочных надписей сойдёт
0
|
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,370
|
|
30.01.2021, 02:22 | 31 |
Хотите быстро но не очень красиво, используйте шрифт Segoe UI Symbol. Это единственный шрифт, который рисует непрерывную линию.
0
|
Житель Земли
|
|
30.01.2021, 02:47 | 35 |
Вообще, какова сфера применения подобного чуда? Понятно, что в метку можно при желании и философский трактат засунуть, однако судя по скрину из начального поста - явно не тот случай.
Добавлено через 2 минуты Не спорю экспресс-решение: сдвинуть массив линий на разницу ширины метки и ширины текста. Добавлено через 1 минуту С высотой та же петрушка
0
|
Житель Земли
|
|
30.01.2021, 10:55 | 37 |
Только заметил, что при изменении AlignWithMargins цвет линий меняется. Любопытный эффект. Надо будет поковырять
Добавлено через 6 минут Я специально задал тот вопрос. И ещё вдогонку хочу спросить: насколько актуально именно для твоих программ использование меток в режиме нижнего выравнивания/мультистроки/AlignWithMargins? Ибо если судить по другим скринам твоих программ, метка обычно используется для вывода короткого поясняющего текста.
0
|
Заблокирован
|
|
30.01.2021, 12:37 [ТС] | 38 |
Постоянно. Считай, по умолчанию выставляю AlignWithMargins = true и Layout = tlCenter.
------------------ Короче, чот я увлякся, сил моих больше нет. Устал. Кому интересно, можете поковырять исходник. Он жутко сырой, я его не тестил. Режим WordWrap не учитывается алгоритмом, я забыл его заблокировать. Щас спать, если вечером интерес не пропадёт, попробую допилить до установки в поллитру компонентов.
0
|
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,370
|
|
30.01.2021, 13:21 | 39 |
И все-же я считаю, что эффект надчеркивания должен быть реализован изменением свойств шрифта, там-же где и подчеркивание, жирность, но для этого придется пересобрать массу исходников и теряется гибкость произвольной его установки в любом месте текста и вот как это противоречие обойти пока не соображу.
0
|