Страница 2 из 2
Re: Динамическое поле со списком
Добавлено: 10 Сентябрь 2013, 10:23
Yufil
У меня в одном из последних проектов на форме два поля - Организации и Представители, точнее, две пары - отправители и получатели документа. У одной организации может быть куча представителей. Один представитель может представлять кучу организаций (или подразделений в одной организации). Поэтому составляется таблица перекрёстных ссылок и частот встречаемости по ранее введённым документам. Если введён представитель и он представляет ровно одну организацию, она и выбирается. Если введена организация и у неё ровно один представитель, он выбирается. В противном случае при выборе организации в дроплисте представителей список в порядке убывания частот, аналогично при выборе представителя. Там как раз по Event:Selected делается - встал на комбобокс - загрузился новый список....
Ну и кнопочка рядом на случай необходимости выбора новой организации или представителя.
Re: Динамическое поле со списком
Добавлено: 10 Сентябрь 2013, 10:35
kreator
Согласен с таким режимом работы. Единственное, как отработать Record Validation. Помнится была такая проблема, что при нажатии OK происходит выбор значения из комбобокса, а если его там нет...
Re: Динамическое поле со списком
Добавлено: 23 Февраль 2014, 23:22
Андрей
Решил, переделать динамическое поле не через Filtr, а по отбору по ключу.
Итак есть 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
Что-то не работает.... подскажите в чем ошибка ?
Re: Динамическое поле со списком
Добавлено: 24 Февраль 2014, 10:19
kreator
Надо, наверно, запускать ApplyOrder(). А в нём уже менять сам Order.
Re: Динамическое поле со списком
Добавлено: 24 Февраль 2014, 13:13
Андрей
А куда его правильно ставить... ?
Код: Выделить всё
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)
Добавил так - не работает
Re: Динамическое поле со списком
Добавлено: 24 Февраль 2014, 15:54
kreator
Полностью не видно текста, к сожалению. Я бы попробовал так бы. 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 аналогичным способом наложил бы фильтр.
Re: Динамическое поле со списком
Добавлено: 24 Февраль 2014, 17:00
Yufil
По-моему, как раз тот случай, когда проще ручками считать БД в очередь, а не трахаться с хитрыми шаблонами...
Re: Динамическое поле со списком
Добавлено: 09 Март 2014, 23:38
Андрей
Оказывается, что все работает, надо было только 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