Показать сообщение отдельно
  #1  
Старый 06.11.2009, 16:06
Eugene86 Eugene86 вне форума
Прохожий
 
Регистрация: 29.08.2009
Сообщения: 31
Репутация: 10
По умолчанию Ehlib - фильтр без нажатия enter

Написал процедуру фильтрации данных в DBGridEh для компонентов AnyDAC.
В конце unit'a написал
DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True;
Но сортировка всё равно происходит только после нажатия Enter.

Код:
procedure TFormMain.DBGridEhPurchaseApplyFilter(Sender: TObject);
var s : string;
cond:string;
i:integer;
begin
cond:='';
s:='';
TADDataSet(TDBGridEh(Sender).DataSource.DataSet).filtered:=false;
 with TDBGridEh(Sender) do begin
    if (not DataSource.DataSet.Active) or (DataSource.DataSet.RecordCount = 0) then exit;
     for i := 0 to TDBGridEh(Sender).Columns.Count - 1 do
    begin
      cond :=TDBGridEh(Sender).Columns[i].STFilter.ExpressionStr;
      if cond <> '' then begin
           s :=s+ '['+TDBGridEh(Sender).Columns[i].FieldName + '] LIKE ''%'+ cond + '%'' AND ';
      end;
    end; Delete(s, Length(s) - 3, 4);
       TADDataSet(DataSource.DataSet).Filter:=s;
   end;      //with
TADDataSet(TDBGridEh(Sender).DataSource.DataSet).filtered:=true;
end;

initialization
DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter:=true;
Версия EhLib 3.6
Ответить с цитированием