15.07.2014, 12:44 | #1 |
Участник
|
Вытащить DialgField из Dialog
Динамически создал Dialog, запихал во внутрь несколько DialogFields с типом NoYesCombo. Как после нажатия на кнопку вытащить значения?
Пробовал пробежаться по Count, но нигде не нашел. |
|
15.07.2014, 12:47 | #2 |
Участник
|
когда поля создавали, можно их в переменные сохранить и потом использовать. подойдет?
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
15.07.2014, 12:56 | #3 |
Участник
|
Несовсем. При создании DF, создаю строку и еще +тип. Потом на диалоге меняют тип, как хотят. Нужно после нажатии на кнопку, пробежаться по всем DF и потом запустить форму. Сейчас главное найти как пробежаться и где найти Count.
|
|
15.07.2014, 13:11 | #4 |
Участник
|
Покажите код, которым создаются DialgFields.
|
|
16.07.2014, 03:58 | #5 |
Участник
|
select firstonly common where common.RecId == _recId;
If (Common.RecId>0) { DF= _dialog.addField(typeid(NoYesCombo_RU), _LabelName); DF.value(NoYes::No); } |
|
16.07.2014, 08:24 | #6 |
Участник
|
Ну так переменная DF уже содержит ваш контрол. Зачем вам его заново получать? Пользуйтесь им.
Если таких DF несколько, то можно их в список сохранить... |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
16.07.2014, 08:39 | #7 |
Участник
|
никогда. НИКОГДА! НЕ проверяйте recID на > 0!!!!
только на равенство или неравенство нулю. поскольку recid в последних версиях могут содержать и отрицательные значения. Правильный код: If (Common.RecId != 0) короткий код, который на некоторых билдах работал некорретно из-за ошибок в ядре: If (Common.RecId) |
|
|
За это сообщение автора поблагодарили: yuriy_64 (1). |
16.07.2014, 09:28 | #8 |
Участник
|
А примерчик? А то я, похоже, начинаю тупить.
|
|
16.07.2014, 09:44 | #9 |
Участник
|
X++: NoYes value; value = DF.Value(); |
|
16.07.2014, 09:46 | #10 |
Участник
|
У меня DF может быть штук 5. Как по ним бегать?
|
|
16.07.2014, 09:47 | #11 |
Участник
|
Вернее пробегать в цикле. И как определить кол-во этих DF&
|
|
16.07.2014, 10:00 | #12 |
Участник
|
Сохраните их в список.
Как вы их отличать собираетесь? По _LabelName? По _recId? Допустим по _LabelName: X++: Map mapDF = new Map(Types::String, Types::Class); X++: DF = _dialog.addField(typeid(NoYesCombo_RU), _LabelName); mapDF.insert(_LabelName, DF); // добавляем очередной контрол в список Обход списка: X++: MapEnumerator m; X++: m = mapDF.getEnumerator();
while (m.moveNext())
{
LabelName = m.currentKey();
DF = m.currentValue();
} |
|
16.07.2014, 10:17 | #13 |
Axapta
|
За исключением случаев, когда recId используется для аггрегации. Тогда можно. Например
X++: select count(Recid) from myTable; if (myTable.Recid>0) ... |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
16.07.2014, 10:26 | #14 |
Участник
|
Спасибо, вроде как работает. А почему нужно создавать второй список? Я уже заметил, что ни Items, ничего подобного при создании диалога нет. Столько времени потерял. Ядолгое время работал на Дельфи. Там как то логичнее. Еще раз спасибо.
|
|
16.07.2014, 10:34 | #15 |
Участник
|
Цитата:
Собственный список обходить проще, потому-что там только нужные элементы. На диалоге же в общем случае могут присутствовать другие контролы, которые будут только мешаться. |
|
16.07.2014, 11:37 | #16 |
Участник
|
|
|
16.07.2014, 13:59 | #17 |
Дмитрий Ерин
|
Если интересуют не столько контролы, сколько их значения, то можно обойтись без хранения своего списка:
X++: MapEnumerator me; anytype value; ; me = Map::create(_dialog.packValues()).getEnumerator(); while (me.moveNext()) { [value] = me.currentValue(); info(strfmt("%1", value)); }
__________________
|
|
16.07.2014, 14:17 | #18 |
Участник
|
У меня такое ощущение, что ТС не знает о существовании макросов и не знает как их применять в особенности для RunBase-классов.
Я про #CurrentVersion и #CurrentList. И почему-то никто про это не вспомнил, все принялись изобретать велосипед.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (-2). |
16.07.2014, 15:20 | #19 |
Участник
|
Цитата:
Макросы же, о которых вы вспомнили, вообще при сериализации уже полученных данных используются а не для взаимодействия с элементами управления. |
|
|
За это сообщение автора поблагодарили: Ruff (1). |
|
|