Страницы: 1
RSS
Форматы. Как отобразить строки одной длины визуально одинаковыми в MsgBox
 
Доброго времени суток, Планетяне!

Дано: Есть две строки, каждая из которых "добита" пробелами справа до нужной длины
Проблема: в MsgBox они НЕ отображаются равными (нужно дополнительно добавить ~20 пробелов к короткому тексту), в то время как в Debug всё нормально
Причина: в Debug используется моноширинный шрифт, а в MsgBox - нет

Возможные решения:
  1. сделать свою форму вместо штатной MsgBox — тут всё понятно, не рассметриваем
  2. изменить шрифт MsgBox на моноширинный — насколько я понял, тут надо в WinAPI лезть, чего бы не хотелось, конечно
  3. Есть какой-то коэффициент, позволяющий добавить N пробелов для визуально корректного отображения
Кто-что думает?

Код и скрины
Изменено: Jack Famous - 15.10.2020 13:49:42
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Алексей, кроме как использовать таблицу ширины символа и считать, потом разницу делить на ширину пробела, получая количество.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: использовать таблицу ширины символа
а она где-то есть такая? Что за шрифт используется в MsgBox?
Изменено: Jack Famous - 15.10.2020 14:29:24
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Проще простенькую форму сделать
 
Если не ошибаюсь то по умолчанию Segoe UI
По вопросам из тем форума, личку не читаю.
 
vikttur, да вот именно, что простенькую не хочется…
В штатном MsgBox 3 типа сообщений со своими знаками и звуками - хочется не меньше такого что-то
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Тогда не простенькую, а "со своими [а не только системными] знаками и звуками" :)
Так можно не только текст выравнивать, но и расширить возможности.
 
vikttur, походу, это самый разумный вариант))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Универсальный способ - только как БМВ предложил. Но если задача - имитировать таблицу, тогда можно воспользоваться vbtab.Или использовать vbtab вместо Space() в Вашей функции (что-то среднее между методом (, предложенным) БМВ и тем, что предложил я.
Изменено: Михаил Лебедев - 15.10.2020 15:17:39
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, очень хороший вариант, кстати - спасибо!  :idea:
Только теперь надо рассчитать, сколько в Табе пробелов и/или других символов, зависит ли это от шрифта и т.д. Потом функцию накидать, чтобы делила заданную строку на количество Табов и т.д.  :D
Пока неутешительно
Изменено: Jack Famous - 15.10.2020 15:31:01
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
зависит ли это от шрифта
очень зависит. Чтобы все выглядело красиво нужен моноширный, который в MsgBox "из коробки" не поддерживается. Да и даже через API вроде нет решения, насколько мне известно. Поэтому как ни крути своя форма будет куда удобнее и практичнее. Делал как-то такое - ни разу не пожалел, т.к. очень многое можно было докрутить в итоге и подвесить.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, спасибо!  :idea:
Цитата
Jack Famous: походу, это самый разумный вариант))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх