Listformat - picture-валюты

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
Полимат
Сообщения: 1817
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 27 раз
Поблагодарили: 10 раз

Listformat - picture-валюты

Сообщение gopstop2007 »

Формат колонки

Код: Выделить всё

?List{PROPLIST:Picture,номер колонки} = формат
с этим все ясно,

а как получить runtime в каждой строке списка в таком формате?

Код: Выделить всё

@N11.2~валюта~
валюта меняется в каждой строке. Спасибо за потраченное время.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1412
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Listformat - picture-валюты

Сообщение RaFaeL »

Выводить в колонку не поле, а строковую переменную, на validaterecord прописать LOC:Str=format(val,@N11.2~валюта~)
kreator
✯ Ветеран ✯
Сообщения: 5169
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Listformat - picture-валюты

Сообщение kreator »

Ещё можно задавать для ячейки "style". Прописать разные style'ы с разными форматами (в разрезе стайлов это называется "picture"). Style'ы настраиваются в Actions окна.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Listformat - picture-валюты

Сообщение Shur »

Насколько я знаю, общей практикой является наличие двух колонок в листе:
- CURRENCY (RUB/USD/EUR/GBP и т.д.)
- AMOUNT
Почему не подходит такой вариант? Какое преимущество у предлагаемого вами?
+ Какое выравнивание намерены использовать - левое, правое, по десятичному знаку?
gopstop2007
Полимат
Сообщения: 1817
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 27 раз
Поблагодарили: 10 раз

Listformat - picture-валюты

Сообщение gopstop2007 »

RaFaeL писал(а):Выводить в колонку не поле, а строковую переменную, на validaterecord прописать LOC:Str=format(val,@N11.2~валюта~)
что то не работает это у меня, С10 ABC.
kreator писал(а):Ещё можно задавать для ячейки "style". Прописать разные style'ы с разными форматами (в разрезе стайлов это называется "picture"). Style'ы настраиваются в Actions окна.
думал об этом, надо заранее присваивать стили к предполагаемым валютам :( Плюс к этому и количество знаков после точки (десятичное значение)
Shur писал(а):Насколько я знаю, общей практикой является наличие двух колонок в листе:
- CURRENCY (RUB/USD/EUR/GBP и т.д.)
- AMOUNT
Почему не подходит такой вариант? Какое преимущество у предлагаемого вами?
+ Какое выравнивание намерены использовать - левое, правое, по десятичному знаку?
Практика великое дело, но если колонкам можно задавать порядок, при этом как определить какая валюта из "к оплате" и "оплачено", надо их еще в шапке подписывать. Хочется упростить. Выравнивание роли не играет, интересно еще десятичные, количество знаков после точки, изменять.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1412
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Listformat - picture-валюты

Сообщение RaFaeL »

gopstop2007 писал(а): что то не работает это у меня, С10 ABC.
Может не туда написал? После Parent Call надо
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8073
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

Listformat - picture-валюты

Сообщение Игорь Столяров »

gopstop2007 писал(а): что то не работает это у меня, С10 ABC.
1. Заведи переменную, например Loc:Str String(20)
2. Добавь ее в LIST как колонку.
3. Открой код окна (SOURCE) и поставь формирование строки с суммой и валютой вот здесь:

Код: Выделить всё

     IF BRW1::RecordStatus NOT=Record:OK THEN RETURN BRW1::RecordStatus.
     [6600]
     Loc:Str = Clip(Left(Format(MySumma,@n_13.2))) & ' ' & Clip(MyValuta)
     ! или Loc:Str = Clip(Left(Format(MySumma,'@n_20.2~ ' & Clip(MyValuta) & '~')))
4. Все. Собирай и проверяй ... :)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5169
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Listformat - picture-валюты

Сообщение kreator »

gopstop2007 писал(а):что то не работает это у меня, С10 ABC.kreator писал(а):Ещё можно задавать для ячейки "style". Прописать разные style'ы с разными форматами (в разрезе стайлов это называется "picture"). Style'ы настраиваются в Actions окна.думал об этом, надо заранее присваивать стили к предполагаемым валютам Плюс к этому и количество знаков после точки (десятичное значение)
А что, их (валют и соответственно стилей) очень много? Стили - это хорошая практика. SV даже вынесла этот сервис в Actions окна.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1817
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 27 раз
Поблагодарили: 10 раз

Listformat - picture-валюты

Сообщение gopstop2007 »

Игорь Столяров писал(а): 4. Все. Собирай и проверяй ... :)
Спасибо работает. :) Только у меня еще это поле редактируется по EIP :(
RaFaeL писал(а):Может не туда написал? После Parent Call надо
Кстати работает :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8073
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

Listformat - picture-валюты

Сообщение Игорь Столяров »

gopstop2007 писал(а): Только у меня еще это поле редактируется по EIP
Я по вопросу уже понял, что все непросто ... ;)
Тогда используйте стили (style), как рекомендовали ниже. Это самый простой и понятный вариант ввода цифр в EIP с форматом.
В принципе для EIP можно выполнять разбор введенной символьной строки, разделять значение на цифру и валюту,
записывать это в разные поля БД и снова отображать как форматированную строку в LIST - но это уже работа с классами,
тут из головы сразу не расскажешь. Не рекомендую идти для этой задачи в такие дебри. ;)
Make Clarion Great Again ! 😎
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Listformat - picture-валюты

Сообщение Admin »

gopstop2007 писал(а): Только у меня еще это поле редактируется по EIP
т.е. в EIP может и число и валюта изменяться?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
gopstop2007
Полимат
Сообщения: 1817
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 27 раз
Поблагодарили: 10 раз

Listformat - picture-валюты

Сообщение gopstop2007 »

Admin писал(а):
gopstop2007 писал(а): Только у меня еще это поле редактируется по EIP
т.е. в EIP может и число и валюта изменяться?
нет, валюта должна только отображаться, по аналогии в екселе
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Listformat - picture-валюты

Сообщение Admin »

gopstop2007 писал(а): нет, валюта должна только отображаться, по аналогии в екселе
Т.е. я так поинмаю у записи есть в каком то поле код валюты?
Как люди и сказали, через стиль показывать.
При редактировании у EIP поля ставить формат простого числа.
И вроде все...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8073
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

Listformat - picture-валюты

Сообщение Игорь Столяров »

В решении со стилями я вижу только одно "узкое" место:
если список валют произвольный, то нужно будет вручную создать список стилей
по списку валют, и он не может быть более 255 (что в данном случае не существенно). :)

Но все равно будет не красиво: при правом смещении колонка цифр будет расположена с разным
смещением из-за разной ширины букв курса валют или надо использовать для LIST моноширинный шрифт.

Сделать в LIST группу из 2-х колонок: цифра (вправо) + валюта (влево), и убрать сетку разделителя между ними.
Цифра редактируется по EIP. Все получается предельно просто. ;)
Make Clarion Great Again ! 😎
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Listformat - picture-валюты

Сообщение Admin »

Игорь Столяров писал(а): Но все равно будет не красиво: при правом смещении колонка цифр будет расположена с разным
смещением из-за разной ширины букв курса валют или надо использовать для LIST моноширинный шрифт.
Можно так изгалиться через выравнивание PROP:Decimal про точке.
Но нельзя в названии валюты использовать точку, типа (руб.) :)
Т.к. тогда по ней выравнивать будет

Код: Выделить всё

          PROGRAM
          MAP
          END

Data      QUEUE
Field       DECIMAL(20,3)
Field_Style LONG
          END

Window WINDOW('Demo'),AT(,,152,100),FONT('Tahoma',8,,FONT:regular,CHARSET:CYRILLIC),CENTER,GRAY,DOUBLE
       LIST,AT(0,0),USE(?List1),FULL,VSCROLL,FORMAT('20D(50)|MY@N20.2@'),FROM(Data)
     END

   CODE
   Data.Field = 20.10*100
   Data.Field_Style = 1 
   ADD(Data)
   Data.Field = 200.10*100
   Data.Field_Style = 2
   ADD(Data)
   Data.Field = 2000.10*100
   Data.Field_Style = 3
   ADD(Data)
   OPEN(Window)
   ?List1{PROPSTYLE:Picture, 1}  = '@P<<<<<<<#.## USDP'
   ?List1{PROPSTYLE:Picture, 2}  = '@P<<<<<<<#.## РубP'
   ?List1{PROPSTYLE:Picture, 3}  = '@P<<<<<<<#.## ДрахмP'

   ACCEPT
   END
   CLOSE(Window)
2017-02-22_16-57-17.png
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить