powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выравнивание табуляции в строке
14 сообщений из 14, страница 1 из 1
Выравнивание табуляции в строке
    #38002678
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Вывожу в строковую переменную различную инфу (далее пойдет в почтовое сообщение).
Часть информации - денежные величины. Между собой, для выравнивания, разделяю их вставкой vbTab, типа такого:
Код: vbnet
1.
strmes = vbtab & Format(summa1, "#,###.00") & vbtab & Format(summa2, "#,###.00") ... и т.д.


Пока число разрядов в сумма одинаково - все красиво. В случае, когда суммы отличаются на порядок и более - возникает "лесенка":
авторКонтрольные суммы:
---------------------
Оплата:
План 2012 год: 5 497,10 7 305,59 3 534,58 6 279,66 =22 616,93
Прогноз/Факт 2012 год: 5 883,33 726,25 5 299,19 10 680,99 =22 589,75
---
Освоение:
План 2012 год: 1 016,10 7 305,59 1 034,58 8 779,66 =18 135,93
Прогноз/Факт 2012 год: 1 255,47 956,95 624,66 15 651,03 =18 488,11
---------------------
Как это можно полечить? Или может есть какой другой способ выравненного форматированного вывода?
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002682
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upd. сейчас так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Контрольные суммы: 
---------------------
Оплата:
План 2012 год: 		5 497,10	7 305,59	3 534,58	6 279,66	=22 616,93
Прогноз/Факт 2012 год: 	5 883,33	726,25	5 299,19	10 680,99	=22 589,75
---
Освоение:
План 2012 год: 		1 016,10	7 305,59	1 034,58	8 779,66	=18 135,93
Прогноз/Факт 2012 год: 	1 255,47	956,95	624,66	15 651,03	=18 488,11
---------------------
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002695
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отказаться от табуляции и вставлять нужное количсетво пробелов
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002716
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proотказаться от табуляции и вставлять нужное количсетво пробелов
Не вариант. Число цифр в каждой сумме может сильно плясать, заранее сколько пробелов вставить нужно неизвестно. Если только при выводе считать сколько цифр в каждой сумме, и, исходя из этого, вычислять число пробелов.. некрасивое решение
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002722
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюс к тому же, "пляска" возникает из за разницы в разрядах в колонках по-вертикали.. В оригинальном коде эти суммы - не переменные, а обращения к соотв. полям рекордсета, причем разные строки вывода - разные записи таблицы.. Так что, на этапе вывода узнать нужное число пробелом нереально
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002765
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basil-77Если только при выводе считать сколько цифр в каждой суммеОй-Ой какая проблема
Код: vbnet
1.
Len(Format(summa1, "#,###.00"))
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002770
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
strmes = Space(20-Len(Format(summa1, "#,###.00"))) & Format(summa1, "#,###.00") & Space(20-Len(Format(summa2, "#,###.00"))) & Format(summa2, "#,###.00")
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002794
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Probasil-77Если только при выводе считать сколько цифр в каждой суммеОй-Ой какая проблема
Код: vbnet
1.
Len(Format(summa1, "#,###.00"))


Это не проблема. Проблема постом выше. Цифры пляшут "в колонках", а данные берутся из разных записей рекордсета в цикле
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002838
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basil-77,
Как вариант собрать письмо в формате HTML, а там через TABLE, TR, TD сделать красивую табличку
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38002846
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basil-77Это не проблема. Проблема постом выше. Цифры пляшут "в колонках", а данные берутся из разных записей рекордсета в циклеИ что? Кто мешает вставлять пробелы "на лету"? код я привел.
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38003464
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Или может есть какой другой способ выравненного форматированного вывода?

Еще есть оператора LSet, RSet и Mid:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub tt()
Dim a(1)
a(0) = Array("План 2012 год:", 5497.1, 7305.59, 3534.58, 6279.66)
a(1) = Array("Прогноз/Факт 2012 год:", 5883.33, 726.25, 5299.19, 10680.99)
Debug.Print MyFormat("Оплата:")
Debug.Print MyFormat(a(0))
Debug.Print MyFormat(a(1))
End Sub

Function MyFormat(x) As String
Dim i&, s$, d#
If IsArray(x) Then
    MyFormat = Space$(UBound(x) * 12 + 34)
    LSet MyFormat = x(0)
    For i = 1 To UBound(x)
        s = Format$(x(i), "#,###.00")
        Mid(MyFormat, 22 + i * 12 - Len(s)) = s
        d = d + x(i)
    Next
    s = Format$(d, "=#,###.00")
    Mid(MyFormat, Len(MyFormat) - Len(s) + 1) = s
Else: MyFormat = x
End If
End Function

Результат (сумма считается в этой же функции!)

Код: plaintext
1.
2.
Оплата:
План 2012 год:           5 497,10    7 305,59    3 534,58    6 279,66   =22 616,93
Прогноз/Факт 2012 год:   5 883,33      726,25    5 299,19   10 680,99   =22 589,76
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38003666
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Натолкнули на умную мысль :) странно, что сам не сообразил, вроде ничего такого...
В основе вариант от Shocker.Pro
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38005561
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basil-77,

Есть еще вариант поменять шрифт на Courier New. В этом шрифте длина каждого символа одинакова. И пользуйтесь далее vbTab.
...
Рейтинг: 0 / 0
Выравнивание табуляции в строке
    #38005676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DUDALSbasil-77,

Есть еще вариант поменять шрифт на Courier New. В этом шрифте длина каждого символа одинакова. И пользуйтесь далее vbTab.у него не в этом проблема, он и так пользуется моноширинным шрифтом.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выравнивание табуляции в строке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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