AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.01.2004, 11:59   #1  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
Свойства Combobox
1. У контрола Combobox есть свойство ComboType = Standart (по умолчанию). Что изменится, если поставить значение List (на форме вид контрола не менился)?

2. Свойство AppendNew, которое в положении Yes даёт вводить текст в поле контрола, а в положении No позволяет только лукапить. Как работает это свойство, что добавляет и куда, если набрать можно только текст из выпадающего списка? Другой текст затирается сразу после нажатия на Enter. Кроме того, метод Combobox1.Text() возвращает всё время пустую строку.

3. Можно ли ширину выпадающего списка сделать неравной ширине самого контрола, чтобы, например, на форме от контрола остался только значок лукапа (примерно 23 пиксела), а сам выпадающий список показывал весь текст (15-20 символов)?
Старый 12.01.2004, 13:04   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
1. ComboType = List как раз и запрещает вводить текст в поле контрола, а не AppendNew.
2. Пока не знаю...
3. Легче всего - использовать ActiveX
Старый 12.01.2004, 14:55   #3  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
2.
append new text to the list on editing.
This property can be used on unbound controls only

перевод
позволяет добавлять в выпадающий список свои значения.
Работает если контрол не связан с Enum итп.
Старый 12.01.2004, 15:09   #4  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Изначально опубликовано maxsmirnov
2.
Работает если контрол не связан с Enum итп.
А-а-а! Так вот в чем фишка... А я думал "unbound" - значит не связанный с DataSource.
Связал с Enum-ом, и ничего не работало...
Хотя это все-равно не снимает еще один вопрос:
Цитата:
... метод Combobox1.Text() возвращает всё время пустую строку.
Старый 12.01.2004, 16:17   #5  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
PHP код:
getText(int номер строки
Старый 12.01.2004, 16:46   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Только как его узнать, этот номер строки.....
.item() всегда возвращает 1, независимо от выбранного пункта.
Это в методе modified() проверялось. Или не там надо было?
Старый 12.01.2004, 17:23   #7  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
selection()
Старый 12.01.2004, 19:16   #8  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
Спасибо
Спасибо, люди, для меня вопрос исчерпан.
Старый 13.01.2004, 17:45   #9  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Re: Спасибо
Цитата:
Изначально опубликовано Atani
Спасибо, люди, для меня вопрос исчерпан.
А вот у меня вопрос: при изменении ComboBox как получить доступ к первоначальному значению?
т.е. я в методе modified() хочу проанализировать предыдущее значение контрола!
Старый 13.01.2004, 19:32   #10  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
в init() формы запоминайте первоначальное значение и с ним сравнивайте
Старый 14.01.2004, 05:42   #11  
Artild is offline
Artild
Участник
 
38 / 10 (1) +
Регистрация: 24.01.2003
Адрес: Новосибирск
а есть в Аксапте возможность в ComboBoxе, который связанс Enum, не отображать часть элементов Enumа???
Старый 14.01.2004, 06:19   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
только в том случае, если в элементах enum указаны security или функциональные ключи И для текущего пользователя эти ключи выключены.

Если же у вас некоторые enum отсутствуют исходя из логики программы (а не из соображений security), то необходимо создавать новый enum в AOT.
Старый 14.01.2004, 09:30   #13  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
Или же создавать такой вот отвязанный от всего combo, и наполнять его вручную допустимыми значениями функцией .Add()

Резюмируя про AppendNew. С помощью этого свойства можно создать поле ввода типа ComboBox, но с возможностью ввода значения, отличного от перечисленных в выпадающем списке. Например, на регистрационной форме предлагается ввести город проживания, при этом выдаётся список известных (авторам :-)) городов и существует возможность ввести в этом же поле свой город, если он не найден в списке.

Создаётся ComboBox, не привязанный ни к enum, ни к datasource, со свойством AppendNew = Yes. В методе ComboBox.Modified() прописывается результат в текстовое поле базы данных. Например: Towns.TownName = ComboBox.getText(ComboBox.Selection());

Да, предварительно в методе init() наполнить контрол значениями из базы или из enum'а. Вот только не знаю пока, как динамически пробежаться по значениям enum'а...
Старый 14.01.2004, 10:08   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Atani
Или же создавать такой вот отвязанный от всего combo, и наполнять его вручную допустимыми значениями функцией .Add()
постарайтесь все же не программировать.
вам же потом легче будет.

и обновлять, и разбираться, и использовать свой же код.
Старый 14.01.2004, 10:15   #15  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано mazzy

постарайтесь все же не программировать.
вам же потом легче будет.
В ситуации, когда "родительский" список может изменяться, придется выбирать между двух зол - модифицировать все дочерние списки(их тоже может быть много), либо изначально программным способом фильтровать один большой список, но тратить дополнительные ресурсы на переход к новым версиям.
Старый 14.01.2004, 10:29   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Антон, извини конечно... щас буду резать правду-матку прямо в лицо

хм... вот это и есть подход программиста, который не знает предметной области, поэтому и делает универсальные вещи, перекладывая все что можно на дальнейшие настройки.

Что хочу сказать... если поменялся родитель, а потомки не изменились...
Это значит, что теперь потомки НЕ наследуют от родителя!
Это очень серьезное логическое изменение!
При настолько серьезных изменениях придется изменять очень многое.
поэтому предусматривать универсальную обработку таких случаев бесполезно! Все равно такой случай универсально не обрабоаешь.

Бог с ним с этим случаем. Но когда программисты делают универсальные обработки разных сущностей или универсальные формы для разных таблиц или универсальные лукапы или универсальные деревья... это и есть тот случай, когда программист решает свои программистские задачи, а не задачи внедрения.

Пример в Аксапте - hrmvirtualnetwork, markuptrans. Пример "правильной" на мой взгляд универсальности - журналы, колонки в финансовых отчетах, типы заказов, типы складских строк.

Пример спорной универсальности - зарплата и налоговый учет с их счетчиками. Сделано красиво с программистской точки зрения, но для пользователей тяжеловато и не очевидно.

все вышеизложенное - сугубо ИМХО. Извините, если кого задел.
Старый 14.01.2004, 10:54   #17  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано mazzy
Что хочу сказать... если поменялся родитель, а потомки не изменились...
Это значит, что теперь потомки НЕ наследуют от родителя!
Это очень серьезное логическое изменение!
Не будем уходить далеко от конкретной ситуации. Есть набор констант BaseEnum, которые бы неплохо было отображать в разных формах в разном составе. Но значения этих констант во всей логике должны оставаться неизменными. Например, я хочу чтобы в одних формах в комбобоксе "Тип чего-то там" был с двумя элементами, в других формах с тремя, т.к. остальные элементы В ЭТИХ ФОРМАХ никогда не используются.
Вполне возможный случай: в BaseEnum будут добавляться новые элементы.
Если мы будем фильтровать програмно в наших формах некоторые константы(например по постфиксу в имени элемента, т.к. никаких дополнительных свойств в элементах BaseEnum-а я не заметил), то при добавлении нового элемента он будет легко и непринужденно обработан.
Если же мы будем создавать для разных типов форм разные списки, с теми же константами, исключая лишь некоторые элементы, то как раз и возникают все "родственные" заморочки - при добавлении нового элемента в базовый BaseEnum, нам нужно исходя из соотв. правил обновить наши списки(в какие-то добавить, в какие-то нет). Таких дополнительных списков может быть достаточно много, чтобы задуматься о программировании(которое есть зло (с)mazzy).
Старый 14.01.2004, 11:05   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Хорошо, вернемся к...

Цитата:
Изначально опубликовано Антон Солдатов
Есть набор констант BaseEnum, которые бы неплохо было отображать в разных формах в разном составе. Но значения этих констант во всей логике должны оставаться неизменными.
Вполне возможный случай: в BaseEnum будут добавляться новые элементы.
Если мы будем фильтровать програмно в наших формах некоторые константы(например по постфиксу в имени элемента, т.к. никаких дополнительных свойств в элементах BaseEnum-а я не заметил), то при добавлении нового элемента он будет легко и непринужденно обработан.
Программой!
А как же человек?

Человеку будет выдан совершенно разный набор строк, а для программиста "значения этих констант во всей логике должны оставаться неизменными".

Вот так и получаются, ИМХО, ситуации, когда "сюда смотри, сюда не смотри, здесь рыбу заворачивали"

Человек в разных формах видит разный набор констант. Значит для человека это разные константы! С какой стати внутри программы эти разные наборы должны быть представлены одним enum'ом? Только потому, что программисту так легче программировать? Это и есть решение задач программиста, а не решение задач внедрения. (Причем, замечу, на редкость извратное и противоречащее ядру. Т.е. программисту при таком подходе придется постоянно бороться с ядром, вметос того, чтобы получать от него помощь)

Поскольку для человека это разные наборы, а для программы - один набор, неизбежно начнутся проблемы взаимонепонимания человека и компьютера.

Поэтому считаю, что программное вмешательство в enum - очень плохой подход. Со всех точек зрения.
Старый 14.01.2004, 11:22   #19  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано mazzy
Человек в разных формах видит разный набор констант. Значит для человека это разные константы! С какой стати внутри программы эти разные наборы должны быть представлены одним enum'ом?
для человека это будет все тот же набор, но без некоторых элементов. Например: в форме А, мы можем выбрать для Типа нашей штуки варианты {1,2,3}. В форме Б при создании этой же штуки мы можем выбрать варианты {4,5,6}. А в отчете по всем, созданным штукам, мы хотим видеть все штуки с вариантами {1,2,3,4,5,6}.
[Подобной штукой например может быть "строка в журнале" и полем "тип счета".]
Для пользователя очевидно, что во всех формах(фактически это может быть и одна форма, только со включенными/выключенными полями) все те же штуки, только разных типов.. Непонимания не должно возникнуть.

Цитата:
Изначально опубликовано mazzy

Поэтому считаю, что программное вмешательство в enum - очень плохой подход. Со всех точек зрения.
програмное вмешательство будет не в baseenum(ни в коем разе!), а в дизайн формы, т.е. исключительно в презентационную логику.
Старый 14.01.2004, 11:26   #20  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Не согласен.
Часто нужно скрыть конкретные значения у enum. В 3.0 кстати нельзя закрыть их security key.
Посмотрите как реализован выбор к обработке в документах заказов/закупки. Там скрываются ненужные значения enum-ов для разных документов (скомплектовано например). Здесь это решается ограничением на максимальный код enum-а. Иногда этого бывает недостаточно - тогда и приходится програмно добавлять в комбобокс, а потом обрабатывать при выборе.
__________________
С уважением, Игорь Ласийчук.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Самоблокировка ComboBox контролла Delfins DAX: Программирование 2 17.01.2008 00:17
PatrickChua: Change the combobox options in RunbaseBatch class Blog bot DAX Blogs 0 28.10.2006 18:14
Fred Shen: Change the combobox options in RunbaseBatch class Blog bot DAX Blogs 0 28.10.2006 16:40
Странный ComboBox DenNik DAX: Программирование 1 22.09.2005 15:31
Как поместить данные из БД в ComboBox? Yuri Safronov DAX: Программирование 4 29.08.2002 13:50

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.