Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: EhLib и UniDAC

Вижу что EhLib дружит с FIB, IBX и FireDAC. Первый умер, от третьего меня отговаривают в сторону UniDAC.
Но как с ним дружит EhLIB ?
Ответ: Написать драйвер ehlib можно без особых проблем практически к любому датасету, за 15 минут я сделал к SDAC
Вопрос: Выпадающий список в ehlib

Доброе утро! Delphi 2010, база данных - firebird 2.5, компоненты доступа - ZEOS 7.1.4-stable, Отображение данных - Ehlib 5.6. Необходимо, чтобы выводились данные и в последнем поле был выпадающий список. Делаю так:

// Вывод информации. Связка из двух таблиц
DM.qryTrenSostav.Close;
DM.qryTrenSostav.SQL.Text := 'execute procedure TRENSOSTAV_SEL (:tren_id)';
DM.qryTrenSostav.ParamByName('tren_id').Value := TrenId;
DM.qryTrenSostav.Open;

// Заполняю выпадающий список в DBGridEh
DM.qrySpr.Close;
DM.qrySpr.SQL.Text := 'select * from SPR_SEL (:tp)';
DM.qrySpr.ParamByName('tp').Value := 'set';
DM.qrySpr.Open;

DM.qrySpr.First;
  while not DM.dsSpr.DataSet.Eof do
    begin
      MAIN.DBGridEh2.Columns[10].PickList.Add(DM.dsSpr.DataSet.FieldByName('status').AsString);
      MAIN.DBGridEh2.Columns[10].KeyList.Add(IntToStr(DM.dsSpr.DataSet.FieldByName('id').AsInteger));
      DM.qrySpr.Next;
  end;


Ситуация такая, что поле в grid остается пустое, но в выпадающем списке присутствует информация. Подскажите, как сделать так, чтобы была и информация в grid и можно было выбрать её в выпадающем списке. Если не запускать заполнение списка, то информация отображается, а получается когда отрабатывает заполнение выпадающего, то стирается инфа из данного поля. Если не понятно написано, то в Columns[10] выводится информация, но необходимо, чтобы был в этом же поле и выпадающий список, чтобы можно было менять информацию прям в сетке.
Ответ: Мне кажется Вам надо начать чуть больше с азов, работа с лукапами в Дельфи это основа, а Вы как раз используете расширенную функциональность грида Ehlib. Почитайте в интернете, посмотрите примеры.
Вопрос: Ошибка EhLib Install

Всем привет.
Есть старенький проект на RAD Studio 2010. Назовем ProjectX. В придачу к нему переработанная библиотека EhLib. Т.е. взяли обычную EhLib когда-то и перекроили под свои дела. EhLib использует множество модулей из ProjectX. Сам же ProjectX пользуется контролами EhLib. Пытаюсь перенести всё это на новый комп. Компилируется всё на ура, но при попытке инсталляции пакета EhLib вылетает ошибка

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Приветствуются любые соображения и советы. Поделитесь кто чем может, пожалуйста.
Ответ: Для начала проверьте права доступа на все ресурсы куда ставиться библиотека при ее компиляции. Так же проверьте права на "C:\Users\Public\Documents\RAD Studio\7.0\Bpl"
Вопрос: Постепенное отображение дерева в Ehlib

Есть список 44 000 записей - это справочник ОКДП. Структура древовидная. В лоб сказать Ehlib - построй дерево - приводит к задумчивости его минуты на 3.

Есть мысль сделать так:

1. Грузить сначала только корневые записи
2. При нажатии на крестик подгружать в MemTable только подчиненные записи
3. И так далее

Но не могу найти какого то события ответственного за открытие узла.

Скажите, как лучше осуществить задуманное, а именно итерационную подгрузку данных в древовидной структуре ?

Хотелось бы обойтись Ehlib пока.
Ответ: кстати, а почему бы и не использовать EnableControls/DisableControls у датасета во время развертывания?
Вопрос: Ehlib, StFilter использование вып.списка

Хочу нестандартно применить выпадающий список в StFilter (Ehlib 5.х)
Грид связан с MemTableEh.
Хочу программно заполнить вып. списки своими значениями, а потом просто заюзать выбранные пользователем значения (не для фильтрации ДС).
Например это удобно для целей импорта данных из превью-грида в целевой датасет.
Типа так: ПревьюКолонка1 -> ЦелеваяКолонка4
Почитал руководство. :)

Способ 1:
Пытаюсь переопределить Событие грида:
procedure TfrmImport.grFillSTFilterListValues(Sender: TCustomDBGridEh;
  Column: TColumnEh; Items: TStrings; var Processed: Boolean);
begin
//Items.Clear;
Items.AddObject('Привет1', TObject(1));
Items.AddObject('Привет2', TObject(2));
Items.AddObject('Привет3', TObject(3));
Processed := True;
end;
При попытке открыть список, дает AV. Как быть ?

Способ 2:
Назначение StFilter.ListSource с источником моих значений у каждой колонки грида.
Появляются не нужные значения "Пустые, Непустые...". Появляются комбобоксы напротив моих значений.
Пример удаления лишних опций описан в руководстве (пока не пробовал). Как погасить чекбоксы ?

Как проще решить задачу ?
Ответ: LSV,
как то давно тоже мучался с этой проблемой, не долго правда, сходу так же ничего не вышло, бросил идею.
Вопрос: XE8 Ehlib

Кто устанавливал Ehlib 8.0.0.14 помогите разобраться выдает ошибку
Ответ:
Вопрос: Как обратиться только к записям, после применения STFilter в EhLib?

Как обратиться только к записям, после применения STFilter в EhLib?

нужно подсчитывать Min Max Avg для оставшихся после "мгновенной" фильтрации строк, а в какой момент и как по ним цикл организовать не понятно.

пробовал повесить вызов своего обработчика на OnFillSTFilterListValues, но он срабатывает сразу даже при вводе первого символа из выражения ">50"
это первая проблема

а вторая - что за сущность, отвечающая за оставшийся список видимых строк?
по "чему" цикл расчета статиститки организовывать?
Ответ: постоянный мембер,

спасибо за наводку.

Однако в списке SumList у EhLib нет Min, Max, поэтому надо как-то на это событие навесить свою процедуру подсчета статистических агрегатов

делаю так:

procedure TForm1.dbg1SumListRecalcAll(Sender: TObject);
begin
     UpdateStats;
end;

procedure TForm1.UpdateStats;
var
    MyMinEffic: Double;
    i,c: Integer;
begin

     dbg1.DataSource.DataSet.EnableControls;
     
      if dbg1.DataSource.DataSet.FindFirst
       then
        repeat
         begin
           me1.Lines.Add(IntToStr(i)+','+MemTableEh1.FieldValues['Test_ID']);     // для начала хотя бы посмотреть какие строки она берет в расчет, поэтому пытаюсь вывести в мемо контрол
           inc(i);
         end;
        until dbg1.DataSource.DataSet.FindNext;
       dbg1.DataSource.DataSet.Filtered := false;
end;


Запускаю, открывает грид 20 строк, но при применении STFilter дельфа постоянно вылетает! ;(
Если заблокировать этот цикл, то все нормально фильтрует (ессно, без показа в футере агрегатов)
Такое ощущение что циклится и переполняется стэк.
Вопрос: Есть ли аналог DefaultDrawColumnCell (от EhLib) у cxGrid'a?

Добрый день!

Подскажите, пожалуйста?
Требуется в зависимости от данных менять цвета ячеек и шрифта в них. Это понятно как, и куча примеров в сети.
Но так же требуется дорисовывать в выведенные гридом ячейки: иногда иконки, иногда прямоугольнички, иногда треугольнички в углу (мы так информировали о событии, пользатели привыкли).
С DefaultDrawColumnCell на Ehlib этот момент прям устраивал. Есть ли подобная процедура у DevExpress?
Или либо полностью он рисует, либо ты сам (но тоже полностью)?

Спасибо!
Ответ: Можно всё что угодно, хоть буквы по отдельности
Вопрос: Подскажите кто как работает с Memtable Ehlib связкой Unidac или Ibdac?

Привет всем
Подскажите кто как работает с Memtable Ehlib связкой Unidac или Ibdac?
Если можно маленьки пример.
Особенно интересует работа с транзакциями.
Я сейчас работаю так примерно
VeiwIBdataset.open;
VeiwMemtable.open;  + Привязано к DbgridEh

При нажатие изменить открываю форму
EditIBdataset.close;
EditIBdataset.sql:='select * from table where id=:pid';
EditIBdataset.ParamByName('pid').value:=VeiwMemtable.fieldbyname('ID').value;
EditIBdataset.open;

Из формы при нажатие сохранить
EditIBdataset.post;
try
  вызываю сторед процудуру для сохранение которая возвращают ИД
  коммит
except
  ролбак
end
VeiwIBdataset.close;
VeiwIBdataset.open;
VeiwMemtable.close;
VeiwMemtable.open;  + Привязано к DbgridEh
VeiwMemtable.locate(id)  =ИД --

Примерно так работаю..
Может есть более оптимальный вариант?
Заранее благодарен
Ответ: Там дерева вообще небыло, был MemTable и подцепленный к нему через драйвер ADO запрос на MSSQL. Т.е индексы в данном случае вообще не причем. Причем я сначала все списывал на тормозной запрос, но потом убедившись что запрос выполняется доли секунды начал искать где проседает, и просадка была на копировании результата полученного в TADOQuery в MemTable.
Вопрос: Редактирование компонентов EhLib

Здравствуйте, товарищи.
В наличии имеется полная версия компонентов EhLib. Но мне не нравится поведение одной формы, а именно формы предварительного просмотра при печати, вызываемая при помощи PrintDBGridEh1.Preview.
Форма эта хранится в модуле PrvFrmEh. Для начала элементарно хочу убрать кнопки сворачивания-разворачивания, установив свойство BorderIcons, что успешно и делаю, сохраняю модуль.
Естественно, при компиляции моего проекта кнопки на форме как были, так и остались. Очевидно я делаю что-то не так
Признаю, что я плохо понимаю принцип работы и установки сторонних компонентов. Отсюда и вытекает моя неспособность отредактировать их под свои нужды. Как правильно это сделать?
Ответ:
Сообщение от sours1000
Я хочу полезный конкретный совет, а не язвительный эго-высер
а я хотел бы что бы включили голову и поняли что если не понять как устроены компоненты и как они работают, то редактирование может привести к ошибкам

Сообщение от sours1000
В Tools->Options->Library для Library Path: и Debug DCU Path: добавил путь Studio\18.0\Components\EhLib\Lib и поднял его вверх.
если вы этого не знали - рано вам еще исходники править