|
11.07.2006, 11:50 | #1 |
Гость
|
ComboBox
Добрый день!
Подскажите пожалуйства вот в такой ситуации... Есть динамический ComboBox, которы в зависимость о условий меняет свое содержимое. Замену делаю вот так : int _count=1; PersonGroupDestination.clear(); while select where tt.Department ==<условие> { <ComboBoxAutoDeclarationName>.insert(tt.UserName,_count); _count++; } <ComboBoxAutoDeclarationName>.update(); Вопрос: почему новые данные не появляются, т.е. как обновить Combo??? Вопрос еще один как можно ратать с данным контролом без AutoDeclaration??? |
|
11.07.2006, 12:04 | #2 |
NavAx
|
Вопрос: зачем вы используете ComboBox для таких задач?
|
|
11.07.2006, 12:28 | #3 |
Гость
|
На мой взгляд для пользователя так будет удобней или у вас есть другое мнение. А вы что предлагаете использовать?
|
|
11.07.2006, 12:33 | #4 |
NavAx
|
Для этих задач лучше использовать лукап форму, поищите на форуме, обсуждалось не раз. Есть еще вариант: посмотрите, как выбирается договор в форме заказов в зависимости от группы договоров и кода клиента. Обратите внимение на настройку relations таблицы SalesTable.
|
|
11.07.2006, 12:37 | #5 |
Участник
|
Цитата:
Сообщение от sergeyoskol
Вопрос еще один как можно ратать с данным контролом без
AutoDeclaration??? FormComboBoxControl Depth; init() Depth = element.control(control:epth); Взято с первой попавшейся на глаза формы CACHierPrompt |
|
11.07.2006, 12:43 | #6 |
Участник
|
Цитата:
Сообщение от sergeyoskol
Добрый день!
Вопрос: почему новые данные не появляются, т.е. как обновить Combo??? Вопрос еще один как можно ратать с данным контролом без AutoDeclaration??? 2) Можно через перечисление control::[ControlName], как вам написали выше, но ИМХО лучше отказаться от этого способа и работать через AutoDeclaration |
|
11.07.2006, 12:51 | #7 |
Гость
|
Встречный вопрос в чем "минус" использования AutoDeclaration? Например, просиходит высвобождение памяти после того как форма закроется? Или нет?
А так же, но уже сугобо для себя, как всетаки динамически обновить ComboBox?? |
|
11.07.2006, 22:58 | #8 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от sergeyoskol
Встречный вопрос в чем "минус" использования AutoDeclaration? Например, просиходит высвобождение памяти после того как форма закроется? Или нет?
и вс работа с контролами шла через синтаксис control:: Цитата:
Сообщение от sergeyoskol
А так же, но уже сугобо для себя, как всетаки динамически обновить ComboBox??
X++: combobox.delete(combobox.getText(idx)); combobox.insert(newText, idx); Но все вышеописанное в вашем случае имеет чисто академический интерес. Забейте на все это и используйте лукапы |
|
11.07.2006, 23:02 | #9 |
Участник
|
Цитата:
Сообщение от db
Нет никаких минусов. Простов в "древних" версиях свойства AutoDeclaration не было
и вс работа с контролами шла через синтаксис control:: Часто происходят глюки - какой-нить из ранее объявленных контролов теряется. То есть компиляция проходит успешно, но переменная = null. Приходится сбрасывать у него свойсвто в No, затем обратно в Yes - и он сразу находится. А так, очень просто и главное, намного удобнее перечня control:: |
|
11.07.2006, 23:05 | #10 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от kashperuk
Единственный "минус", если конечно его так можно назвать - это странное поведение контролов, у которых AutoDeclaration = True, после добавления на форму еще одного контрола и установки у него этого свойства.
Часто происходят глюки - какой-нить из ранее объявленных контролов теряется. То есть компиляция проходит успешно, но переменная = null. Приходится сбрасывать у него свойсвто в No, затем обратно в Yes - и он сразу находится. А так, очень просто и главное, намного удобнее перечня control:: |
|
11.07.2006, 13:04 | #11 |
NavAx
|
Вот так:
PHP код:
|
|
11.07.2006, 14:18 | #12 |
Гость
|
Не работает
ComboBoxAutoDeclarationName.selection(0) - эта команда просто задает какой элемент будет выбран, а где же обновление ??? |
|
11.07.2006, 14:19 | #13 |
NavAx
|
обновление в данном случае есть пара действий:ъ
1. Clear() 2. Add("element") Проверено, работает! |
|
11.07.2006, 15:04 | #14 |
Гость
|
спасибо за содействие
|
|
11.07.2006, 23:11 | #15 |
Участник
|
Знал бы как толком воспроизвести, исправил бы, или хотя бы понял толком, почему происходит.
А происходит приблизительно так - на какую-нить форму, типа SalesEditLines, где много обращений к контролам на форме (см. метод run(), к примеру), добавляем галку, к примеру, в конец группы Parameters - и ставим ей autodeclaration = true. Вот после этого запускаем какую нить обработку заказа, и иногда (опять же, такое получалось у меня не всегда), начинает постоянно (именно постоянно) вылетать ошибка времени выполнения, что мол нет метода visible() , к примеру у объекта null Дебаггером смотрю - контрол пустой (null) таки. Соответственно, сама природа ошибки понятна. А лечилось так как написал. З.Ы. Но может дело вообще не в колчиестве полей на форме, а в сложной классовой обработке их |
|