|
09.01.2004, 12:58 | #1 |
Участник
|
Собственно все в сабже.
Суть такова - нужно что-то делать только при установленном на форме фильтре.
__________________
----------------------------------------- Искренне Ваш, ДК. |
|
09.01.2004, 14:25 | #2 |
Участник
|
хм... на самом деле, скорее всего вопрос требоует уточнения.
есть фильтры установленные программистом, а есть фильтры установленные пользователем. Я не знаю, как программно их различить. А вообще говоря, надо у формы получить query, а дельше работать с query. получить query в форме можно Query q = element.datasource(1).query(). А дальше использовать класс Query (см. ветку System Documentation \ Classes \ Query) В Query в цикле перебрать datasources. (KERNDOC://Classes/Query/dataSourceCount, KERNDOC://Classes/Query/dataSourceNo) В datasource узнать количество range при помощи rangeCount (KERNDOC://Classes/QueryBuildDataSource/rangeCount) и т.д. Но вот как узнать, какие range были поставлены пользователем, а какие были изначально назначены для формы программистом? Тут видимо придется сравнивать текущий query и исходный query из DictForm... А чего хочешь то в конечном итоге? Может проще вопрос решается? |
|
09.01.2004, 14:29 | #3 |
Участник
|
О кстати, подумал вот о чем.
Быстро сравнить текущий query с оригинальным query можно при помощи. element.datasource(1).query().equal(<исходный-query>) вопрос теперь сводится к тому, как получить исходный query, заданный в AOT. Видимо, надо попробовать через dict-классы. |
|
09.01.2004, 15:00 | #4 |
Участник
|
Дядя Коля... Классный вопрос. Давно уже не получал такой удовольствия от поиска ответа.
вот что нужно поставить например внутри метода active в датасорсе формы. Код: if( this.query().equal(this.queryRun().query()) ) info("Пользователь фильтр не ставил"); else info("Пользователь установил фильтр"); |
|
09.01.2004, 16:12 | #5 |
Administrator
|
Да, все так
this.query() - query установленный при инициализации this.queryRun(). Записи отбираются при помощи this.queryRun(). Пользовательские фильтры в this.query() не попадают, они пишуться только в this.queryRun(). Осталось только получить структуру this.queryRun(), а это делается с помощью this.queryRun().query().
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
09.01.2004, 17:41 | #6 |
Участник
|
Ха! Сергей! У меня таких вопросов...... ))) рад, что доставил удовольствие))
На самом деле нужно было: Есть определенная форма с датасорсом InventTable Поле для установки значеий и кнопочка. Та вот кнопочка должна работать только если пользователь установил фильтр (не важно какой), т.к. для всей InventTable нажатие кнопочки бессмысленно и даже вредно. Есще раз спасибо.
__________________
----------------------------------------- Искренне Ваш, ДК. |
|