Динамическое поле со списком
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: Динамическое поле со списком
У меня в одном из последних проектов на форме два поля - Организации и Представители, точнее, две пары - отправители и получатели документа. У одной организации может быть куча представителей. Один представитель может представлять кучу организаций (или подразделений в одной организации). Поэтому составляется таблица перекрёстных ссылок и частот встречаемости по ранее введённым документам. Если введён представитель и он представляет ровно одну организацию, она и выбирается. Если введена организация и у неё ровно один представитель, он выбирается. В противном случае при выборе организации в дроплисте представителей список в порядке убывания частот, аналогично при выборе представителя. Там как раз по Event:Selected делается - встал на комбобокс - загрузился новый список....
Ну и кнопочка рядом на случай необходимости выбора новой организации или представителя.
Ну и кнопочка рядом на случай необходимости выбора новой организации или представителя.
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Динамическое поле со списком
Согласен с таким режимом работы. Единственное, как отработать Record Validation. Помнится была такая проблема, что при нажатии OK происходит выбор значения из комбобокса, а если его там нет...
We are hard at work… for you. 

Re: Динамическое поле со списком
Решил, переделать динамическое поле не через Filtr, а по отбору по ключу.
Итак есть 2 поля, в зависимости от того, какое заполнено Dat:IdBlg или Dat:IdDom, при переходе селектора на поле со списком вызывается роутинка,которая должна менять ключ и устанавливать новый отбор
Что-то не работает.... подскажите в чем ошибка ?
Итак есть 2 поля, в зависимости от того, какое заполнено Dat:IdBlg или Dat:IdDom, при переходе селектора на поле со списком вызывается роутинка,которая должна менять ключ и устанавливать новый отбор
Код: Выделить всё
Filtre Routine
if FormWindow{Prop:AcceptAll}=False
If Dat:IdBlg
FDCB5.AddSortOrder(Spr:IdBlg_Key)
FDCB5.AddRange(Spr:IdBlg,Dat:IdBlg)
ElsIf Dat:IdDom
FDCB5.AddSortOrder(Spr:IdDom_Key)
FDCB5.AddRange(Spr:IdDom,Dat:IdDom)
END
FDCB5.ApplyRange
FDCB5.Reset(True)
end
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Динамическое поле со списком
Надо, наверно, запускать ApplyOrder(). А в нём уже менять сам Order.
We are hard at work… for you. 

Re: Динамическое поле со списком
А куда его правильно ставить... ?
Добавил так - не работает
Код: Выделить всё
if FormWindow{Prop:AcceptAll}=False
If Dat:IdBlg
FDCB5.AddSortOrder(Spr:IdBlg_Key)
FDCB5.ApplyOrder
FDCB5.AddRange(Spr:IdBlg,Dat:IdBlg)
ElsIf Dat:IdDom
FDCB5.AddSortOrder(Spr:IdDom_Key)
FDCB5.ApplyOrder
FDCB5.AddRange(Spr:IdDom,Dat:IdDom)
END
FDCB5.ApplyRange
FDCB5.Reset(True)
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Динамическое поле со списком
Полностью не видно текста, к сожалению. Я бы попробовал так бы. AddSortOrder и AddRange, вообще не причём, они и так должны вызываться в методе ThisWindow.Init, причём один раз. А при изменении DAT:IdBig и DAT:IdDom я бы написал так:
FDCB5.ApplyFilter
FDCB5.ApplyOrder
FDCB5.ResetQueue(1)
В методе ApplyOrder после Parent Call поставил бы проверку:
If Dat:IdBlg
FDCB5::View:FileDropCombo{prop:Order} = 'Spr:IdBig'
ElsIf Dat:IdDom
FDCB5::View:FileDropCombo{prop:Order} = 'Spr:IdDom'
end
В методе ApplyFilter аналогичным способом наложил бы фильтр.
FDCB5.ApplyFilter
FDCB5.ApplyOrder
FDCB5.ResetQueue(1)
В методе ApplyOrder после Parent Call поставил бы проверку:
If Dat:IdBlg
FDCB5::View:FileDropCombo{prop:Order} = 'Spr:IdBig'
ElsIf Dat:IdDom
FDCB5::View:FileDropCombo{prop:Order} = 'Spr:IdDom'
end
В методе ApplyFilter аналогичным способом наложил бы фильтр.
We are hard at work… for you. 

Re: Динамическое поле со списком
По-моему, как раз тот случай, когда проще ручками считать БД в очередь, а не трахаться с хитрыми шаблонами...
Re: Динамическое поле со списком
Оказывается, что все работает, надо было только FDCB5.ResetQueue(True) вместо FDCB5.Reset(True) поставить
Вот работающий фрагмент:
Вот работающий фрагмент:
Код: Выделить всё
Filtre Routine
if FormWindow{Prop:AcceptAll}=False
If Dat:IdBlg
FDCB5.AddSortOrder(Spr:IdBlg_Key)
FDCB5.AddRange(Spr:IdBlg,Dat:IdBlg)
ElsIf Dat:IdDom
FDCB5.AddSortOrder(Spr:IdDom_Key)
FDCB5.AddRange(Spr:IdDom,Dat:IdDom)
END
FDCB5.ResetQueue(True)
end