![]() |
#1 |
Участник
|
Отображение десятичных знаков в форме
Привет всем!
Одно и то же поле таблицы должно отображаться в 2х разных формах по разному: в одной - количество знаков после запятой - 11 (как указано в EDT), а в другой - 2. Как сделать второй вариант? ![]() PS NoOfDecimals в свойствах контрола не доступно из-за AutoDataGroup.. Последний раз редактировалось decoder; 26.10.2009 в 17:23. |
|
![]() |
#2 |
Ищущий знания...
|
в десигне формы у полей типа RealEdit есть свойство NoOfDecimals (число десятичных знаков отображения). Выставляете там такую цифирку сколько хотите видеть на форме, и будет вам счастье.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#3 |
Участник
|
Вы же понимаете, что если во второй форме вы ограничите количество отображаемых знаков после запятой двумя, то и ввести в этой форме вы сможете только 2 знака после запятой, а не 11..
Просто предупреждаю заранее ![]() |
|
![]() |
#4 |
Боец
|
Цитата:
element.control(control::ControlName).NoOfDecimals |
|
![]() |
#5 |
Ищущий знания...
|
поставить AutoDataGroup в No, и выставить нужное свойство
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#6 |
Участник
|
Не, отказываться от AutoDataGroup == Yes из-за такой мелочи не стоит - уж слишком полезное это свойство
![]() Цитата:
![]() Последний раз редактировалось gl00mie; 26.10.2009 в 19:05. |
|
![]() |
#7 |
Участник
|
Как вариант. Сделать display или даже edit метод (если необходимо редактирование), который будет возвращать/принимать расширенный тип данных с заранее настроенной точностью. Вынести созданный метод в нужную группу полей.
Преимущество: AutoDataGroup == Yes; отсутствие кода на форме Недостаток: будет невозможно сортировать и фильтровать по дисплэйному полю |
|
![]() |
#8 |
Участник
|
оч удобно, но порождает ошибку run-time..
Цитата:
Сообщение от gl00mie
![]() В данном конкретном случае можно в методе обратного вызова у FormRealControl проверять свойства dataSource() и dataField(): первое должно совпадать с MyTable_DS.id() (к которому относится поле), а второе - с extendedFieldId поля в таблице, т.е., например, с fieldId2Ext( fieldnum(MyTable, MyRealField), 1 ). Если совпали, значит, итератор передал контрол, связанный с нужным полем, и надо выставить у него свойство NoOfDecimals..
![]() Последний раз редактировалось decoder; 27.10.2009 в 12:54. |
|
![]() |
#9 |
Боец
|
Какую именно ошибку? Я привел "сырой" код, ест-но нужно оформить немножко.
Пример для формы tutorial_Form_Controls: X++: public void init() { super(); element.setPrecision(); } X++: void setPrecision() { FormRealControl formRealControl; ; formRealControl = element.control(control::RealEdit); if (formRealControl) { formRealControl.NoOfDecimals(16); } } |
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Боец
|
очень странно... Вы вместо "RealEdit" подставляете имя контрола?
Вот, попробуйте рабочие примеры: DAX 3.0: tutorial_Form_Controls_30.xpo DAX 4.0: Form_tutorial_Form_Controls_40.xpo DAX 5.0: Form_tutorial_Form_Controls_50.xpo |
|
![]() |
#12 |
Участник
|
ошибка проявляется не каждый раз
про тож самое Итератор с поддержкой методов обратного вызова для обработки контролов на форме |
|
|
За это сообщение автора поблагодарили: DSPIC (1). |
![]() |
#13 |
Участник
|
где-нить после super() в init() формы пишем примерно следующее:
X++: DEV_iterateThroughFormControls( element.design(), element, @"setFieldPrecision", DEV_FormHelpers::addRealCtrlId2Set() ); X++: public void setFieldPrecision(FormRealControl _formControl) { // проверяем, связан ли контрол с нужным полем datasource'а на форме if ( _formControl.dataSource() == MyTable_DS.id() && _formControl.dataField() == fieldId2Ext( fieldnum(MyTable, MyRealField), 1 ) ) { _formControl.noOfDecimals( 11, AutoMode::Fixed ); } } |
|
|
За это сообщение автора поблагодарили: decoder (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|