Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форматирование вычисляемого поля [D7, IB6.x]


koks ©   (2005-10-20 12:04:00) 

Уважаемые мастера, подскажите

Мне надо чтобы вычисляемое float-поле форматировалось так:

значение  DisplayText  
35,28      + 35,28%
-35,28     - 35,28%
0          0

пишу в DisplayFormat:

'+'### ### ##0.00'%';'-'### ### ##0'%'.00;0

однако все отображается неправильно.

Подскажите - как правильно.


evvcom   (2005-10-20 16:22:00) [1]


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

Это при вводе/выводе функций XxxToStr/StrToXxx и пр. А для DisplayFormat явно написано, что ",", и ни слова про региональные настройки.


koks   (2005-10-20 16:07:00) [2]

Ура!!! Понял в чем ошибка - если в оригинальной строке (первый пост) заменить пробел на запятую все работает!!

Да видать и впрямь я начинающий

Всем сспасиба...


koks   (2005-10-20 16:04:00) [3]

Хотя запятая тоже проканывает. Выходит можно и так и так.


koks   (2005-10-20 16:00:00) [4]

Thousand separator берется из того, что установлено в системе в региональных настройках. Лично у меня там стоит пробел.
А напрвильно в подсказке расположение кавычек.


evvcom   (2005-10-20 15:56:00) [5]


> Во-первых, подсказка не верна. Правильно - # ##0.00'%';

С чего ты это взял? Из хелпа: ", Thousand separator."


koks   (2005-10-20 15:45:00) [6]

Ну да, еще можно вычисляемые поля определить как стринг. В обработчике OnCalc вычислять вещественное число и дополнительной операцией делать FormatFloat.
Варианты есть.

Но я хочу понять, почему не работает стандартный подход. Ведь в хелпе ясно написано: в DisplayFormat может быть три секции, разделенные ;
Одна для положительных чисел, вторая для отрицательных и третья для 0.
Для каждых 3-х вариантов можно задавать свой формат. Это-то мне и надо.
Я записал строку  - не могу понять где ошибка.


evvcom   (2005-10-20 15:37:00) [7]

Тогда в TField.OnGetText обрабатывай.


koks   (2005-10-20 15:21:00) [8]

Ну нет - не такой уж я начинающий, но все равно переклинило...

Во-первых, подсказка не верна. Правильно - # ##0.00'%';
Во-вторых, мне нужно:
1. Чтобы в положительных значениях печатался знак ('+35,28%')
2. Чтобы 0 отображался '0' а не '0.00%';

Вот те в чем загвоздка.


Baltika-9   (2005-10-20 12:15:00) [9]

DisplayFormat := '#,##0.00%';


koks   (2005-10-20 12:08:00) [10]

Смотрел - не помогло.... заклинило


Baltika-9   (2005-10-20 12:06:00) [11]

См. пример к функции FormatFloat.


Наверх

Титульная страница Поиск, карта сайта Написать письмо