Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Ehlib

Автор: TuMOXA123
Дата сообщения: 07.04.2006 22:41
Ну так и поставь перед константой на которую ругается Gridseh::

Кому-нибудь удалось прикрутить FIBDataDriverEh ? Добавляю его в пакет Drivers - эффект нулевой. Компилируется, но ни на закладке, ни в списке компонентов его нет
Автор: fixer84
Дата сообщения: 08.04.2006 08:07
AnGo

Цитата:
Но проблему я уже решил.

Как решил? А то не нашел ExecuteFindDialog. (версия 3.6)

Автор: AnGo
Дата сообщения: 09.04.2006 06:53
fixer84
Для ВСВ 6

TColumnFieldsArrEh ColumnFields;
ExecuteDBGridEhFindDialog( (Dbgrideh::TCustomDBGridEh*)DBGridEh1, "","NAME_TO",ColumnFields,true);

Версия грида 3.5b

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


Добавлено:

Как победить в BDS2006 следующую фичу (или баг?):
Эта зараза по умолчанию размещает директорию с прожектами в директории для активного юзера. Пробовал добавлять альтернативное размещение через настройки, но блин, по прежнему лезет в документы.
Обыскался весь реестр, погрепал все файлы - нет такой строки!
Везде ссылки на BDSPROJECT - стоят мои, она, что при загрузке откуда-то считывает путь?
И еще. Как только добавил альтернативный путь для BDSPROJECT - сразу же появилась ошибка, что не может записать файлы в директории с проектами. Все права на директорию - имеются. Откомпилировать ничего не удается
Автор: russko
Дата сообщения: 25.05.2006 17:18
Такая проблема: вроде простенький код

DBGridEh1.Options:= DBGridEh1.Options-[goEditing];

А тут мне и выдает: Incompatible types: 'DBGridEh.TDBGridOption' and 'DBGrid.TDBGridOption'
В чем проблема никак не пойму ((
Автор: DroN_S
Дата сообщения: 25.05.2006 20:03
russko

Цитата:
DBGridEh1.Options:= DBGridEh1.Options-[goEditing];

что за goEditing ???
должно быть dgEditing!!!!!!!
Автор: russko
Дата сообщения: 26.05.2006 08:55
Согласен ) опечатка вышла
Конечно:
DBGridEh1.Options:= DBGridEh1.Options-[dgEditing];
Но сути не меняет, всё равно выдает:
Incompatible types: 'DBGridEh.TDBGridOption' and 'DBGrid.TDBGridOption'
Автор: DroN_S
Дата сообщения: 26.05.2006 09:57
russko
у меня всё нормально, только что проверил, усё нормально...
какую версию EhLib используешь?
Автор: russko
Дата сообщения: 26.05.2006 10:41
Использую версию 4.0
Автор: DroN_S
Дата сообщения: 26.05.2006 15:57
russko
попробуй создать новый проект, кинуть грид на форму, подключить к нему DataSources и написать код на отмену редактирования... если будет всё нормально, значит у тебя косяк в приложении (том проекте) если же нет и будет таже ошибка, то значит у тебя коряво встал компонент... попробуй его перустановить...
Автор: Darken
Дата сообщения: 26.06.2006 00:42
Попробуй убрать из uses все что связанно с DB, и скомпилировать проект заново, чтобы делфя сама расставила модули в нужном порядке. Просто ву тебя в uses модуль ehlib'a идет впереди стандартного модуля с grid'aми или наоборот.
Автор: Nicka_Grey
Дата сообщения: 12.07.2006 09:14
Нужно добавить к функциональности сабжа выделение строк при Shift+Mouse Left Button Click при дефолтовых утсановках самого грида.
Вроде как нужно отрабатывать OnMouseDown, но вот дальше что никак не получается...
Может кто что подскажет?
Автор: Nicka_Grey
Дата сообщения: 18.07.2006 17:18
Всем спасибо. Уже сам разобрался
Автор: vserd
Дата сообщения: 15.09.2006 11:41
Народ, а не подскажете как в EHLIB нажать на нулевую заголовочную ячейку (та что находится в самом верху, перед первым столбцом, и над маркером теущей строки)
и как туда можно вывести символ (текст)?

Сам себе и отвечаю :)

Код:
procedure TfrmSpBrowser.DBGridEh1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var
Grid : TDBGridEh;
Coord: TGridCoord;
begin
// пример как можно
Grid:=TDBGridEh(Sender);
Coord := Grid.MouseCoord(X, Y);
IF (Button = mbLeft) and (Coord.X = 0) AND (Coord.Y =0 )
Then {Showmessage('Получилось')};
end;
Автор: vladk1973
Дата сообщения: 27.09.2006 02:42
Hi all
Кто -нибудь юзал фильтры ?
Stfilter.Visible := True;
Stfilter.Local := True;


Цитата:
Adjusting grid for filtering data:
TDBGridEh allows to show special row (under title) where user enter expressions in cells for filtering records in dataset. (Expression in the cell can look like: "1", ">=1", ">1 AND <=5", "%TestStr%"). Set STFilter.Visible to True to show this special row. AT Run time, when cursor reside in the filter cell they can press ENTER to apply filter. Grid will parse expression in every not empty filter cell and call TDBGridEh.ApplyFilter, call OnApplyFilter event or pass action to special object, if it registered.

For normally parsinging, the expression in cell have to has next format:

[Operator1] Operand1 [)] [AND|OR Operator2 Operand2 [)] ]

Where OperatorX is one of [ = | <> | != | > | < | >= | <= | ~ | !~ | in ( ]
OperandX is a numeric, date or string value or for the operator 'IN' it is a list of values divided by comma.

For instance:
'1'
'>=1'
'>1 AND <=5'
'~ TestStr%'
'!~ TestStr_'
'in (1,2,3,4,5,6) and >100'
'in (Str1,Str2,Str3)'

У меня грид отображает TClientDataSet
так вот при задании фильтра на текстовом столбце, например '%АБВ%' и нажатии enter вылетает ошибка "Type mismatch in expression." Копал ли кто такую проблему ?
Ehlib 4.1
Delphi 6
Автор: ShadowMen
Дата сообщения: 07.10.2006 20:58
Какая версия EhLiba на текущий момент?
Часто на форуме встречаю упоминание о версии 4.20
На офф сайте писано про версию 4.1
Суппорт молчит... Может автор уже забил на проект?
Автор: perceptron
Дата сообщения: 11.10.2006 09:11
а EhLib он целиком и полностью платный или всё-таки для граждан USSR остался FREE with source ?
Автор: vserd
Дата сообщения: 11.10.2006 09:26
perceptron
Если я правильно путаю:
-- 3.6 и меньше бесплатный с исходниками
-- 4.х бесплатен для индивидуального использования, без исходников, платен для коммерческого использования, с исходниками.
Автор: vladk1973
Дата сообщения: 11.10.2006 11:28
Бесплатные версии платных компонент раздают сами знаете где
У меня сейчас рабочая версия 4.1.4 со всеми исходниками стоит
И вот, что там написано:

Цитата:
ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ НА БИБЛИОТЕКУ EhLib

Эта лицензия действительна только для граждан
стран бывшего СССР и организаций, зарегистрированных
на территории стран бывшего СССР. Лицензия для
остальных пользователей содержится в файле
License.txt

Это лицензионное соглашение распространяется только
на библиотеку версии 4.X и выше. Лицензия на библиотеку
версии ниже 4.0 не изменяется, т.е. граждане стран
бывшего СССР, а также организации, зарегистрированные
в них, имеют право использовать EhLib версии 1.X-3.X
бесплатно.


Авторские права на библиотеку EhLib (Программное
Обеспечение) принадлежат Дмитрию В. Большакову.


Для граждан стран бывшего СССР и организаций,
зарегистрированных на территории стран бывшего СССР
EhLib является условно бесплатным продуктом Т.е.

I.
Граждане стран бывшего СССР и организаций,
зарегистрированных на территории стран бывшего СССР
имеют право использовать библиотеку EhLib версии 4.X
и выше бесплатно в одном из следующих случаев:

1. Вы используете библиотеку для написания
программ, которые вы распространяете беспалтно,
за эти программу вы не получаете никаких прибылей
или зарплат.

2. Либо Вы являетесь зарегистрированным членом группы
поддержки библиотеки EhLib.
Как стать членом группы поддержки библиотеки EhLib
смотрите на:
    
    http://www.ehlib.com/RUS/ehlib_team.htm

II.
В остальных случаях библиотека EhLib является платной.
Как приобрести библиотеку смотрите по следующему
адресу:
http://www.ehlib.com/RUS/license_rus.htm


ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ РАСПРОСТРАНЯЕТСЯ ПО
ПРИНЦИПУ "КАК ЕСТЬ". БЕЗ ГАРАНТИЙ СОХРАНЕНИЯ
КОММЕРЧЕСКОЙ ЦЕННОСТИ ИЛИ ЛЮБЫХ ДРУГИХ ГАРАНТИЙ.
ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ
РИСК. АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ПОТЕРЮ ДАННЫХ,
ПОВРЕЖДЕНИЕ, КОММЕРЧЕСКИЕ ИЛИ ЛЮБЫЕ ДРУГИЕ УБЫТКИ
ВО ВРЕМЯ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ПРИМЕНЕНИЯ
ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Если у вас есть какие либо вопросы относительно этого
соглашения, пожалуйста, обращайтесь по следующему
адресу электронной почты:

support@ehlib.com
Автор: MrZeRo
Дата сообщения: 12.10.2006 11:48
vladk1973
А символ '*' вместо '%' пробовал?
Автор: vladk1973
Дата сообщения: 13.10.2006 02:51
MrZeRo

Цитата:
У меня грид отображает TClientDataSet
так вот при задании филтра на текстовом столбце, например '%АБВ%' и нажатии enter вылетает ошибка "Type mismatch in expression." Копал ли кто такую проблему ?



Цитата:
А символ '*' вместо '%' пробовал?

Я копался в данной проблеме достаточно глубоко и могу сказать, что дело не в компонентах Ehlib, а в реализации TClientDataSet, а точнее того объекта midas, вокруг которого обёрнут TCLientDataSet
Поэтому этот топик не при чем.


Добавлено:
Обнаружен такой глюк в компоненте, а может фича. Много времени убил на поиск проблемы.
Рассказываю по порядку
Попытался использовать


Цитата:
Increment search
TDBGridEh allows users to accomplish special "increment" search in grid column. When user enter in increment search mode he can type chars and grid will try to locate text in the current column. Use dghIncSearch and dghPreferIncSearch values (OptionsEh property) to manipulate increment search in the grid. dghIncSearch value allows to do increment search in grid. At run time you can use next key for increment searching:
Ctrl+F - to begin increment searching.
Ctrl+Enter - to search next matching.
Ctrl+Shift+Enter - to search prior matching.
If dghIncSearch in OptionsEh and column is read only then grid will set increment search mode automatically on first key press and will return to normal mode after 1.5 sec. dghPreferIncSearch value determine that the grid will set increment search mode automatically on first key press instead of cell editing.

При нажатии на первую кнопку (начало increment-поиска) в read-only колонке курсор вдруг начал перескакивать на следующую колонку в гриде, что соответственно делало невозможным продолжение поиска. Путем тщательного научного тыка обнаружил, что это трабла происходит, если поиск производится, например, в колонке №4, а колонка №1- невидима (Visible:=False). Соответственно, если невидимы две колонки перед той, в которой производится поиск, то курсор после нажатия первой кнопки перескочит на две колонки вправо и т.д.
Вывод: Если используете Incremental Search, то невидимых колонок в гриде быть не должно


Автор: AndrewMB
Дата сообщения: 28.10.2006 12:53
vladk1973
У меня аналогичная ситуация.
На одном из форумов нашел такое решение:
в модуле DbUtilsEh, функция Locate DatasetTextEh, строку
AGrid.Selectedlndex := AGrid.VisibleColumns[FCurInListColIndex].Index;
необходимо заменить на
AGrid.Selectedlndex := FCurlnListColIndex;
У меня работает, хотя насколько это правильно я не анализировал за отсутствием времени.
Однако есть еще одна проблема. Если в окне поиска выбрать другое поле для поиска, то поиск все равно выполняется только по активному полю на момент открытия окна. Т.е. нужно закрыть окно поика, выбрать поле в котором нужно что-то найти и опять вызвать окно поиска. Как с этим бороться? Поле необходимо выбирать в самом окне поиска. У меня версия 4.1, в 3.6 работает правильно.
Автор: vladk1973
Дата сообщения: 30.10.2006 14:31

Цитата:
У меня аналогичная ситуация


Я прочитал, но вникать в код компонента сейчас нет времени.
Ясно что ошибка там. Будет время - гляну, мне и самому интересно
Автор: vladk1973
Дата сообщения: 31.10.2006 04:25
AndrewMB

Вот и глянул
Жаль, конечно, что такое вот творится в таком профессиональном пакете, но что ж тут поделаешь

Ошибка в модуле DbUtilsEh.pas
При поиске через диалог вызывается функция по умолчанию

Код:
function LocateDatasetTextEh(AGrid: TCustomDBGridEh;
const FieldName, Text: String; AOptions: TLocateTextOptionsEh;
Direction: TLocateTextDirectionEh; Matching: TLocateTextMatchingEh;
TreeFindRange: TLocateTextTreeFindRangeEh): Boolean;
Автор: AndrewMB
Дата сообщения: 31.10.2006 09:08
vladk1973
Спасибо что разобрался, буду исправлять.
Автор: Just_Perf
Дата сообщения: 07.11.2006 09:04
подскажите решение
есть adoquery+datasetdriver+memtable+datasource+dbgrideh
в фильтре показывает значения колонок, но не фильтрует
также не подсчтывает кол-во по колонкам
что не так?
Автор: vladk1973
Дата сообщения: 07.11.2006 09:13
Just_Perf

Обязан показывать
Свойство Footer заполни у объектов TDBGridColumnEx
Свойство SumList не забудь у грида
SortLocal поставь в True
Автор: Just_Perf
Дата сообщения: 07.11.2006 12:28
vladk1973
footer заполнил - все заработало! спасибо!

но вопрос по фильрации все еще актуален...
Автор: vladk1973
Дата сообщения: 08.11.2006 02:27
Just_Perf

Цитата:
но вопрос по фильрации все еще актуален...


Цитата:
в фильтре показывает значения колонок

Не пойму чего то, расскажи подробнее про фильтрацию, что где ставишь?
Автор: Just_Perf
Дата сообщения: 08.11.2006 11:24
vladk1973

почитал в сетях про фильтрацию. вроде разобрался. как я понял, ehlib не позволяет делать многоуровневую фильтрацию (т.е. а-ля excel - сначала фильтр по одной колонке, потом сузить фильтром по другой и т.д.). фильтрацию по одной сделал с помощью доп.кода на событие applyfilter (установка значения фильтра и последующее его применение), но списки значений фильтра по иным колонкам остаются изначальными. поэтому решил динамически набирать условие фильтра в свойство SetFilterText MemTable (колонка1=условие1 and колонка2=условие2).
осталасть проблемка по обновлению информации в footer - пока не дернусь курсором куда-нибудь итоговые значения не пересчитываются...
Автор: vladk1973
Дата сообщения: 08.11.2006 12:34
Just_Perf

Цитата:
ока не дернусь курсором
А ты передергивай свойство SumList.Active, по моему помогает

Страницы: 1234567891011121314151617181920212223

Предыдущая тема: Конвертация char в ASCII код; c


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.