powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как выровнять текст по десятичной точке?
24 сообщений из 24, страница 1 из 1
Как выровнять текст по десятичной точке?
    #39436584
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите простой способ выровнять текст по десятичной точке, без добавления лишних нулей? Ну, и то, что получилось, надо выровнять вправо

Как надо:
Код: plaintext
1.
2.
3.
4.
5.
6.
|   123.456|
|    12.45 |
|     1.298|
|    45    |
|   256    |
|     0.15 |

Как НЕ надо:
Код: plaintext
1.
2.
3.
4.
5.
6.
|   123.456|
|    12.450|
|     1.298|
|    45.000|
|   256.000|
|     0.150|
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39436693
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а текст моноширинный? И в каком компоненте его надо выровнять?
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437150
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проще число разбить на 2 части и выравнивать левую часть по правому краю, а правую часть по левому краю, профит, либо вариант номер 2, измерять размер текста до точки или после точки и выравнивать
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437207
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesпрощену все-таки что проще зависит от контейнера. Если контейнер - моноширинный текстбокс, то проще отформатировать
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437226
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

ясно дело, мы даже не знаем, разбиты тут строки по контролам или все в 1 куче.
Есть еще одна идея :) можно на белом фоне, ".000" делать белого цвета :D и тогда выравнивание будет за счет символов (моноширных), а видимость за счет цвета :) (это при условии, что текст не реактируемый конечно и не копируемый)
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437356
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа текст моноширинный?
Если бы!

Shocker.ProИ в каком компоненте его надо выровнять?
Обычный DataGrid и WinForm-овский DataGridView
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437357
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesможно на белом фоне, ".000" делать белого цвета :D
Можно на любом фоне ".000" делать прозрачного цвета ;)
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда спецконтрол с трехкомпонентым выравниваниваем
я б не стал заморачиваться с вычислениями ширины текста
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437378
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как по мне, это вообще выглядит по уродски, когда 1 числа идет с дробной частью, а целый без неё. имхо, но глазу приятнее с нулями, чем без нулей. Тем более, нули можно сделать "бледными", если они сильно глаз мазолят. Сделать это будет на много проще и смотреться будет куда приятнее
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437380
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант, "ненужные" конечные нули заменить на символ "FIGURE SPACE" (U2007), а разделительную точку на "PUNCTUATION SPACE" (U2008).

Выписка из Вики :
...
FIGURE SPACE имеет такую же ширину, что и цифры в данном шрифте, и предназначен для набора таблиц. Неразрывный.
...
PUNCTUATION SPACE ширина равна ширине точки
...
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437384
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если размер 2 столбца фиксированный, то можно через TextBlock.Inlines всё сделать.
Разбиваем текст на 3 части (Run), целое, точка, дробное. Задаем фиксированный размер Run, выравниваем всё направо. Профит.
Как вариант если размер не фиксированный, можно вычислить его, не особо проблема
Размер строки, можно легко узнать через FormattedText
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437431
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Coltтакую же ширину, что и цифры в данном шрифте
только вот беда - далеко не во всех шрифтах цифры одинаковой ширины ))
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437432
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

в нормальных шрифтах на сколько я помню цифры всегда моноширные. если конечно готический использовать или еще какой, то может и разные, но в стандартном наборе точно все цифры одной ширины, инфа 100% :)
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437445
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesв нормальных шрифтах на сколько я помню цифры всегда моноширные. если конечно готический использовать или еще какой, то может и разные, но в стандартном наборе точно все цифры одной ширины, инфа 100% :)88888888888888888888
11111111111111111111
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437943
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesкак по мне, это вообще выглядит по уродски, когда 1 числа идет с дробной частью, а целый без неё.

Дело не в том, у кого есть дробная часть, а у кого нет.
Дело в том, что у разных чисел - разная длина дробной части.


Roman Mejtesимхо, но глазу приятнее с нулями, чем без нулей.

Ну а мой заказчик - иного мнения. Мне деньги получить важнее, чем привить ему другой вкус.
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39437945
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesесли размер 2 столбца фиксированный, то можно через TextBlock.Inlines всё сделать.
Разбиваем текст на 3 части (Run), целое, точка, дробное. Задаем фиксированный размер Run, выравниваем всё направо. Профит.
Как вариант если размер не фиксированный, можно вычислить его, не особо проблема
Размер строки, можно легко узнать через FormattedText

Не понял, каким задать фиксированный размер Run-а. Изначально неизвестна максимальная точность. И даже если известна, в выборке все равно могут быть числа, все с мЕньшим числом знаков. Т.е. проходить по всем числам - надо.
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39438000
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу оговорюсь, что дальше - не решение, а скорее зачаток мысли. Может он поможет в решении, а может и окажется бессмысленным.

Идея в том, что RTF почти один к одному переводиться в FlowDocument, а в стандарте RTF есть такой тип табуляции, как "выравнивание по разделителю", которое позволяет отобразить числа как в первом посте.

Разметка RTF файла выглядит примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{\rtf
{\fonttbl\f0 Arial;}
\pard\tqdec\tx567\f0
\tab 123.456\par
\tab 12.45\par
\tab 1.298\par
\tab 45\par
\tab 256\par
\tab 0.15\par
\pard\par
}

Можно ли это все нормально перевести в FlowDocument и поможет ли это решению - не знаю.
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39438044
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ColtСразу оговорюсь, что дальше - не решение, а скорее зачаток мысли. Может он поможет в решении, а может и окажется бессмысленным.

Идея в том, что RTF почти один к одному переводиться в FlowDocument, а в стандарте RTF есть такой тип табуляции, как "выравнивание по разделителю", которое позволяет отобразить числа как в первом посте.

Разметка RTF файла выглядит примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{\rtf
{\fonttbl\f0 Arial;}
\pard\tqdec\tx567\f0
\tab 123.456\par
\tab 12.45\par
\tab 1.298\par
\tab 45\par
\tab 256\par
\tab 0.15\par
\pard\par
}

Можно ли это все нормально перевести в FlowDocument и поможет ли это решению - не знаю.
табуластопы в FlowDocument не поддерживаются :(
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39438059
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th,

Картинки еще не предлагали?
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39438176
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg, неа. Предлагай!
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39438207
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблему решили?
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39440101
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, нет. Пока отложил, сейчас другие 2 проекта запустил. Пока думаю.
Самое смешное, что всего год назад делал это же на С++/WTL. Сделал за 2 часа (:
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39440131
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thRoman Mejtes, нет. Пока отложил, сейчас другие 2 проекта запустил. Пока думаю.
Самое смешное, что всего год назад делал это же на С++/WTL. Сделал за 2 часа (:
ну ни кто же не мешает делать это точно так же на WPF, используйте Render'инг и FormattedText тоже самое, только проще :)
...
Рейтинг: 0 / 0
Как выровнять текст по десятичной точке?
    #39440236
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, разная архитектура. Там был самодельный грид (понадобилась экзотика), который весь рисовался целиком самостоятельно, тут обычный DataGrid.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как выровнять текст по десятичной точке?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]