Форум » GUI » Различные форматы числа в TBROWSE » Ответить

Различные форматы числа в TBROWSE

Dr. Oldwarez: Как известно, в разных странах числа имеют разный формат. Так в Америке дробная часть отделяется точкой, а тысячи разделяются запятыми 123,524.57 В Германии дробная часть отделяется запятой, а тысячи разделяются точками 123.524,57 Ну, а в России дробная часть также отделяется запятой, а тысячи разделяются пробелами. Вопрос: Почему TBROWSE поддерживает только американский формат числа? Так, я задаю числовому полю параметр PICTURE '999,999,999.99', и получаю на выходе число с тысячными разделителями, но только американского формата. При попытке же указать PICTURE '999.999.999,99' получается какой-то бред. Попробовал порыться в SET - там только SET DATE есть. Не подскажете, как настроить формат вывода числа в TBROWSE?

Ответов - 5

gfilatov2002: Dr. Oldwarez пишет: Почему TBROWSE поддерживает только американский формат числа? Начну с того, что TBROWSE использует для ввода данных элемент управления GetBox, который, в свою очередь, опирается на стандартный Get объект Харбора. Следовательно, если хотите изменить формат поля ввода, то имеет смысл вспомнить/изучить стандарный клипперовский класс Picture. После этого приходим к решению проблемы: надо использовать команду "@E " в маске ввода, т.е. указать PICTURE "@E 999,999.99"

Dr. Oldwarez: Большое спасибо! Действительно, PICTURE "@E 999,999.99" выводит числа в немецком (румынском, албанском) формате 123.524,57 Ну, а для русско-французского формата с пробелами какую команду надо использовать? Вот тут подробно Форматы числа по странам мира

Dima: Dr. Oldwarez пишет: Ну, а для русско-французского формата с пробелами какую команду надо использовать? picture "@E 999 999.99" picture "@R 999 999.99"


Dr. Oldwarez: Огромное спасибо!

Dr. Oldwarez: И ещё один нюанс, не зная которого, можно наделать ошибок. Поскольку у меня общие суммы хранятся в текстовом виде в подвале TBROWSE, необходимо их обратно конвертировать в числовой формат. Для этого я использую функцию VALN(cStr) [pre2]FUNCTION VALN(cStr) LOCAL nVal:=0 cStr:=STRTRAN(cStr,'.','') //вырезаем тысячные разделители - здесь для европейского формата cStr:=STRTRAN(cStr,',','.') // заменяем запятую на точку в разделителе дроби nVal:=VAL(cStr) RETURN nVal [/pre2]



полная версия страницы