Цитата:
Сообщение от
trud
Что-то на моей практике никто не требовал " = поле должно показывать текущий фильтр при входе на форму и при изменении критерия стандартными средствами (тот же Ctrl+F3)". Это выглядит усложнением
наверное. но на проектах часто добавляют установку специальных фильтров на форму. или какое нибудь принудительное восстановление из запомненных.
кроме того, на проектах любят делать кнопки, которые устанавливают query принудительно.
Цитата:
Сообщение от
trud
Т.е. стандартно я делаю так
1.Для фильтров создаю временную таблицу. Это имхо позволяет удобно общаться со значениями фильтров и дает нормальный переход к основной таблице.
значения или критерий? (критерий может содержать несколько значений и запятыми, всякими .. и прочими метасимволы)
другими словами, инжектить содержимое формы Ctrl+F3 в пользовательскую форму?
Цитата:
Сообщение от
trud
2. В classDeclaration формы добавляется Range или в твоем случае ссылка на QBDS. На init формы или датасорса инициализация этого Range(с признаком locked)
3. В executeQuery основной таблицы простановка в этот Range значения из полей временной таблицы(ну или в твоем случае дизейблинг датасорса)
4. На modified всех полей временной таблицы стоит executeQuery основной таблицы
да, подход в целом стандартный и понятный (кроме временной таблицы).
но имеем стандартные недостатки - фильтры могут содержать значения, не совпадающие с текущим запросом. т.е. фильтры показывают одно, а Ctrl+F3 - другое.
Цитата:
Сообщение от
trud
Тут может быть проблема что queryRun().Query() будет пустой при первом вызове, т.е. если нужно ставить какие-то значения при открытии, это не будет работать.
угу.
добавлено:
а что насчет добавления/убирания таблиц в query? см. пример в исходном сообщении
я к чему:
у меня ощущение, что жутко не хватает класса, который реализовал бы функционал окна Ctrl+F3.
может быть есть такой класс? может кто-то уже делал?