Поддержка Ehlib

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
WildFrag
Сообщения: 22
Зарегистрирован: Пн 29 апр 2013 11:41

Поддержка Ehlib

Сообщение WildFrag » Ср 18 дек 2013 11:51

Столкнулся я с задачей поддержки Ehlib грида. Там есть функции локальной сортировки и фильтрации которые просто обожают мои пользователи. С сортировкой проблем нет, а вот с фильтрацией есть вопрос и хочется уточнить как проще всего решить данную проблему.
Смысл в том что при клике на заголовке Ehlib строит по датасету список значений полей и делает визуальный фильтр как в Экселе с возможностью выбора нескольких значений. Вот у меня и возник вопрос как проще всего заполнить значениями этот фильтр. Понятно что я могу сделать букмарк, отключить у датасета все обработчики и в цикле пробежаться по всему датасету, но может есть способ красивее, Anydac ну или FireDac делает это через обращение к внутреннему источнику данных что-то типа

Код: Выделить всё

procedure TADDatasetFeaturesEh.FillSTFilterListDataValues(AGrid: TCustomDBGridEh;
  AColumn: TColumnEh; AItems: TStrings);
Var
  oDS: TADAdaptedDataSet;
  oField: TField;
  oData: TStringList;
  i: Integer;
  oCol: TADDatSColumn;
begin
  oDS := AGrid.DataSource.DataSet as TADAdaptedDataSet;
  if bFilterWithValues and (AColumn.STFilter.ListSource = nil) and (not oDS.IsEmpty) then begin
    oField := oDS.FindField(AColumn.FieldName);
    if oField <> nil then begin
      oCol := oDS.GetFieldColumn(oField);
      if oCol <> nil then begin
        oData := TStringList.Create;
        oData.CaseSensitive := True;
        oData.Sorted := True;
        oData.Duplicates := dupIgnore;
        try
          for i := 0 to oDS.Table.Rows.Count - 1 do
            oData.Add(VarToStr(oDS.Table.Rows[i].ValueI[oCol.Index]));
          oData.Sort;
          AItems.AddObject('-', PopupListboxItemEhLine);
          AItems.AddStrings(oData);
        finally
          oData.Free;
        end;
      end;
    end;
  end;
end;
Возможен такой подход в unidac или сканирование датасета единственный путь?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Поддержка Ehlib

Сообщение AndreyZ » Ср 18 дек 2013 13:24

На данный момент, такой функциональности нет в UniDAC. Вы можете оставить свое предложение на нашей UserVoice странице: http://devart.uservoice.com/forums/1046 ... components . Если Ваше предложение наберет много голосов от других пользователей, мы реализуем его.

marcodor
Сообщения: 10
Зарегистрирован: Пт 06 дек 2013 10:14

Re: Поддержка Ehlib

Сообщение marcodor » Чт 19 дек 2013 11:41

WildFrag,

Я делал интеграцию с библиотеками UniDac и всеми вариантами IbDac, MyDac, PgDac итп.
Просто подключите аттаченный файл к проэкту и все, никакого дополнительного кода не надо.
Поддерживается сортировка локально/серверная по одному или несколкими полями и филтряция локально/серверная.

Кстати, автор библиотеки ЕhLib обещал включить штатно эту функциональность в следующем билде.

Удачи!
Вложения
EhLibDAC.zip
UniDAC & EhLib Integration
(869 байт) 408 скачиваний

WildFrag
Сообщения: 22
Зарегистрирован: Пн 29 апр 2013 11:41

Re: Поддержка Ehlib

Сообщение WildFrag » Чт 19 дек 2013 11:48

Я так понял это код для Ehlib версии 6?

marcodor
Сообщения: 10
Зарегистрирован: Пт 06 дек 2013 10:14

Re: Поддержка Ehlib

Сообщение marcodor » Чт 19 дек 2013 12:55

Да, тестировал в 6.х, xe5. Но интерфейс подключения фичий не менялся как я помню давно. Должно работать и со старыми версиями.

WildFrag
Сообщения: 22
Зарегистрирован: Пн 29 апр 2013 11:41

Re: Поддержка Ehlib

Сообщение WildFrag » Чт 19 дек 2013 13:06

А я как раз заглянул внутрь, вообще ничего общего :)
В принципе не трагедия, я сам для пятерки написал, но все равно спасибо.

Ответить