|  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 нажатие кнопочки бессмысленно и даже вредно. Есще раз спасибо. 
				__________________ ----------------------------------------- Искренне Ваш, ДК. | 
|  |