vladk1973
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору AndrewMB Вот и глянул Жаль, конечно, что такое вот творится в таком профессиональном пакете, но что ж тут поделаешь Ошибка в модуле DbUtilsEh.pas При поиске через диалог вызывается функция по умолчанию Код: function LocateDatasetTextEh(AGrid: TCustomDBGridEh; const FieldName, Text: String; AOptions: TLocateTextOptionsEh; Direction: TLocateTextDirectionEh; Matching: TLocateTextMatchingEh; TreeFindRange: TLocateTextTreeFindRangeEh): Boolean; | Причем FieldName (поле, в котором производится поиск) передается корректно Но в самом теле функции нигде не используется, а поле для поиска берется Код: FCurInListColIndex := AGrid.SelectedIndex; | То есть та колонка, в которой вызывался диалог поиска,мдя Переделать, конечно можно, плевое дело, но честное слово - я не хочу вновь перекомпиливать BPL-ки свои. Думаю ты и сам это запросто сделаешь, если тебе надо. ЗЫ. Получается что это та же самая проблема в той же функции, про которую ты и писал. Вот так вот. Решение проблемы лежит тут Цитата: Date: 2006-08-12 19:44 Subject: Выгребаем очередные баги из EhLib Security: Public На это раз словили мы их в стандартном окне поиска EhLib, удивительно как автор проверял его работоспособность... 1. После поиска через диалог, в случае если до поисковой колонки имеются скрытые колонки, после успешного поиска текущей становилась другая колонка. Лечим это правкой модуля DbUtilsEh, функция LocateDatasetTextEh, строку AGrid.SelectedIndex := AGrid.VisibleColumns[FCurInListColIndex].Index; заменяем на AGrid.SelectedIndex := FCurInListColIndex; 2. Какую бы колонку для поиска мы не назначили поиск все равно производится в колонке, которая была текущей до открытия окна поиска. Лечим это правкой модуля DbUtilsEh, функция LocateDatasetTextEh, строку FCurInListColIndex := AGrid.SelectedIndex; заменяем на if FieldName = '' then FCurInListColIndex := AGrid.SelectedIndex else FCurInListColIndex := AGrid.FieldColumns[FieldName].Index; 3. В самом модуле диалога поиска есть много кода, который давно не используется (атавизм) приводящий ко всему прочему к утечкам памяти. Выкладываю модуль, в котором закомментировал все атавизмы и тем самым убрал утечки памяти. PS: Исправления действительны для версии 4.0 и 4.1 |
| Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 05:25 31-10-2006 | Исправлено: vladk1973, 05:40 31-10-2006 |
|