Shadi
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору All, привет! Работаю с 6 гридом и пытаюсь динамически строить фильтр. В примерах есть следующее: Цитата: with tvCustomers.DataController.Filter.Root do begin Clear; case AFiltering of ufNone: Clear; ufTwoField: begin BoolOperatorKind := fboAnd; AddItem(tvCustomersCUSTOMER, foEqual, True, 'True'); AddItem(tvCustomersPRODUCTID, foEqual, cExpressQuantumGridID, 'ExpressQuantumGrid'); end; ufBetween: begin BoolOperatorKind := fboAnd; ADate := GetDate(dtFirstOfYear); AddItem(tvCustomersPURCHASEDATE, foGreaterEqual, (ADate), DateToStr((ADate))); ADate := GetDate(dtLastOfYear); AddItem(tvCustomersPURCHASEDATE, foLessEqual, (ADate), DateToStr((ADate))); end; ufUserFilter: SetOnlyGridsFilter(tvCustomers.DataController.Filter.Root); ufGroup: begin BoolOperatorKind := fboAnd; SetOnlyGridsFilter(AddItemList(fboOr)); V := VarArrayCreate([0,1], varInteger); V[0] := cVisaID; V[1] := cAmExID; AddItem( tvCustomersPAYMENTTYPE, foInList, V, 'Visa, American Express'); end; ufList: begin BoolOperatorKind := fboOr; AddItem(tvCustomersPAYMENTTYPE, foEqual, cCashID, 'Cash'); AddItem( tvCustomersPAYMENTTYPE, foEqual, cAmExID, 'American Express'); end; end; end; tvCustomers.DataController.Filter.Active := True; finally FLock := False; end; end; | Но это полный гемморой!!! У грида есть проперти Grid.DataController.Filter.FilterText := <условие одной стокой> В настройках града установлено DataController.Filter.Active := True; Стал пробовать и на одном гриде все так ладненько стало работать.. Просто подставляю строку условий и сразу идет срабатывание фильтра. Сделал копи данного грида и перенес на другую форму. Пробую там делать тоже самое и в ответ тишина Пришлось делать все так: Цитата: AFilterControl := TcxFilterControl.Create(Self); AFilterControl.LinkComponent := GridDB; if Length(trim(filter_)) > 0 then begin AFilterControl.LoadFromFile('filter.flt'); AFilterControl.ApplyFilter; end else begin AFilterControl.Clear; AFilterControl.ApplyFilter; end; finally // wrap up AFilterControl.Free; end; // try/finally | Но предварительно сохраняю filter.flt в блоб поле... Может кто знает как надо делать чтобы заработала строка: Grid.DataController.Filter.FilterText := <условие одной стокой> Заранее спасибо! |