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

» Вопросы по Ehlib

Автор: eddoc
Дата сообщения: 21.06.2010 23:26
В 4.х версиях (слышал, что и вплоть до последних, сам не проверял) происходят утечки памяти из-за бага, который выглядит примерно так
[more]Блок памяти был выделен и не освобожден. Размер: 20

This block was allocated by thread 0xCEC, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][@GetMem][2654]
404AA7 [sys\system.pas][System][TObject.NewInstance][8807]
404E6E [sys\system.pas][System][@ClassCreate][9472]
56891E [DBGridEh.pas][DBGridEh][TColumnsEhList.Create][21502]
478493 [Controls.pas][Controls][TControl.Perform][5021]
52D42A [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.FillFindColumnsList][341]
52D4F5 [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.cbFindInChange][357]
44F5F6 [StdCtrls.pas][StdCtrls][TCustomEdit.Change][2158]
511D6A [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBEditEh.Change][2009]
517786 [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBComboBoxEh.Change][5985]
44F91B [StdCtrls.pas][StdCtrls][TCustomEdit.CMTextChanged][2253]

Блок в настоящее время используется для объекта класса: TColumnsEhList

Выделенный номер стал: 935159
//skipped[/more]

Возникает из-за того, что в русскоязычной dfm-ке "потерялась" ссылка на обработчик OnDestroy формы. Лечится так (спасибо NextMan с скруля)
[more]После строк
object DBGridEhFindDlg: TDBGridEhFindDlg
Left = 236
Top = 110
...
...
...
Position = poScreenCenter
OnCreate = FormCreate

следует вставить строчку

OnDestroy = FormDestroy[/more]


Однако, после некоторой правки исходников вылезла уже другая утечка
[more]Блок памяти был выделен и не освобожден. Размер: 20

This block was allocated by thread 0x994, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][System.@GetMem][2654]
405BF5 [sys\system.pas][System][System.@NewAnsiString][12429]
40628D [sys\system.pas][System][System.@LStrSetLength][13786]
42EE7F [common\Classes.pas][Classes][Classes.TReader.ReadString][7110]
42E7CA [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6900]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42D5EA [common\Classes.pas][Classes][Classes.TReader.ReadCollection][6422]
42E860 [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6915]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42DD0E [common\Classes.pas][Classes][Classes.TReader.ReadDataInner][6607]
48090A [Controls.pas][Controls][Controls.TWinControl.SetParent][9787]

Блок в настоящее время используется для объекта класса: AnsiString

Выделенный номер стал: 590207[/more]

Никто не встречался с решением?

добавлено: посоветовали сделать ребилд проекта - сделал. Пока ошибок больше не было. Посмотрю, отпишусь.
Автор: vm2004ua
Дата сообщения: 22.07.2010 10:09
Как установить высоту STFilter в одну строку, если DBGridEh Rowlines=3
Автор: snike555
Дата сообщения: 30.07.2010 12:47
Кто-нибудь знает разработкой EhLib в текущий момент кто-нибудь занимается, а то пишу письма на ящик Дмитрию и в службу поддержки и никто не отвечает.
Автор: snike555
Дата сообщения: 05.08.2010 15:41
Как на dblClick узнать пользователь кликает по имеющейся строке или в свободную область?
Автор: icemanea
Дата сообщения: 08.08.2010 23:33
Кто-нибудь привязывал DBGridEh к этим компонентам:
http://www.devart.com/unidac/ (использую для связи с FireBird)
Имеется в виду аналог DataDriver, чтобы сортировка и фильтры работали без дополнительных геморроев?
Автор: snike555
Дата сообщения: 09.08.2010 07:33
Почему-то не фильтрует в MemTableEh если указана только одна звезда
или звезда стоит в начале.

Например

Код: MemTableEh1.Filter = 'имя_поля = "Т*"'; // Ищёт
MemTableEh1.Filter = 'имя_поля = "*"'; // Не ищёт хотя записи есть
MemTableEh1.Filter = 'имя_поля = "*Т"'; // Не ищёт хотя такие записи есть
Автор: snike555
Дата сообщения: 09.08.2010 14:03
Есть тут официальные бэта-тестеры или разработчики EhLib?
Автор: snike555
Дата сообщения: 10.08.2010 09:55
Использую DataGrouping в гриде, как раскрыть все группы? как сделать FullExpand
Автор: alexsob
Дата сообщения: 26.08.2010 08:18
snike555
В пятой версии в DBGridEh.pas процедура TColumnEh.SetCheckboxState:
если поле числовое, то независимо от значений в KeyList для чекбоксов проставляются 1 или 0.

Мой вариант процедуры:
procedure TColumnEh.SetCheckboxState(const Value: TCheckBoxState);
var S: String;
Pos: Integer;
begin
if not Assigned(Field) then Exit;
if Value = cbGrayed then
//Field.Clear
UpdateDataValues('', Null, False)
else
if (Field.DataType = ftBoolean) then
if Value = cbChecked
then UpdateDataValues('', True, False)
else UpdateDataValues('', False, False)
else if (Field.DataType in [ftInteger, ftSmallint, ftFloat, ftBCD, ftCurrency {$IFDEF EH_LIB_6}, ftFMTBcd{$ENDIF} ]) and
(KeyList.Count=0) { так будет интереснее } then
if Value = cbChecked
then UpdateDataValues('', 1, False)
else UpdateDataValues('', 0, False)
else
begin
if Value = cbChecked then
if KeyList.Count > 0 then S := KeyList[0] else S := ''
else
if KeyList.Count > 1 then S := KeyList[1] else S := '';
Pos := 1;
//Field.Text := ExtractFieldName(S, Pos);
S := ExtractFieldName(S, Pos);
UpdateDataValues(S, S, True);
end;
end;
Автор: snike555
Дата сообщения: 27.08.2010 10:45
alexsob
ну так это плохо), не надо так), автор молчит
Автор: alexsob
Дата сообщения: 30.08.2010 05:02
snike555
Да многие говорят, что автор большой молчун. Понятно, что EhLib - побочный для него продукт. Интересно, сделав его платным, много ли выручил? А то был бы бесплатным, всем миром баги бы вычистили да причесали.
Я уже кучу ошибок в 5.2.84 нашел, в основном - в форме диалога задания фильтра.
Правлю вот потихоньку, да что толку - выйдет новая версия и все по-новому.
Автор: snike555
Дата сообщения: 23.09.2010 12:37
Когда уже наконец будет объявлена официальная поддержка XE?
Автор: volser
Дата сообщения: 23.09.2010 16:39
snike555
Продукт уже не развивается. Возможно кто то сам сделает поддержку и выложит.
Автор: snike555
Дата сообщения: 24.09.2010 20:27
volser
вообще то бэты 5.3 редко, но пока выходят, подождем, ещё не все компоненты к сожалению заявили о официальной поддержке ХЕ
Автор: vetal71
Дата сообщения: 20.10.2010 20:04
как сделать локальную сортировку для TAdsQuery, TAdsTable ? Никак не получается
Автор: Grande
Дата сообщения: 22.10.2010 09:03
Существует ли возможность создания многострочных ячеек в DBGridEh?
Спасибо.
Автор: Samotek
Дата сообщения: 22.10.2010 09:35
Grande
Существует.
Автор: Grande
Дата сообщения: 22.10.2010 09:36
Samotek
Хороший ответ
А как это сделать?
Автор: Samotek
Дата сообщения: 22.10.2010 09:38
Grande
мышкой
Автор: Grande
Дата сообщения: 22.10.2010 09:47

Цитата:
Samotek

Вот спасибо, что бы я без Вас делал!


Уважаемые знатоки, может, кто подскажет, как реализуется сабж?
Спасибо.
Автор: Samotek
Дата сообщения: 22.10.2010 10:27
Grande
Чего ты нервничаешь? Он всегда многострочный, что увидеть несколько строк раздвинь мышкой на индикаторе. Ну в крайнем случае попробуй в свойствах грида отыскать что-то похожее на RowSizingAllowed. Думаю это будет совсем не трудно...

Добавлено:
Grande
Да! Забыл добавить: Поставь его в True, иначе не получится!
Автор: Grande
Дата сообщения: 22.10.2010 10:57
Samotek
Да делал я так - ничего не получилось
Единственное, чего удалось достичь - это выставить свойство RowLines в 2. Но в этом случае ВСЕ ячейки имеют двойную высоту. А мне очень бы хотелось, чтобы высота ячейки менялась автоматически, в зависимости от длины строки (ежели строка не умещается по длинне, то перносится на вторую строку).
Есть еще свойство Column.WordWrap, но оно не работает
Автор: Samotek
Дата сообщения: 22.10.2010 11:43
Grande
Да у тебя какя версия-то? на 4 все работает. "Автоматического" вроде точно нет. Может в 5, не знаю.
Автор: alexsob
Дата сообщения: 25.10.2010 05:34
Grande
Из документации:
TDBGridEh может работать в режиме, когда он автоматически выставляет высоту каждой строки в зависимости от количества текста в ячейке или размера графического изображения (Если включен режим DrawGraphicData). Режим автоматического подсчета высоты начинает работать после установки значения dghAutoFitRowHeight в свойстве грида OptionsEh. Этот режим работает только когда грид подключен к DataSet’у типа TMemTableEh и TMemTableEh не находится в режиме TreeView.
Автор: Grande
Дата сообщения: 25.10.2010 06:48
alexsob
Это мысль... Сейчас потестирую. Спасибо

Samotek
В 4-ой работаю.
Автор: YuriyRR
Дата сообщения: 27.10.2010 02:04
Как можно изменить цвет бордера в этит контролах во флат? Черный не устраивает совершенно.
Автор: Lefa
Дата сообщения: 09.11.2010 00:01
Получилось вставить 5.2 в XE... китайцы помогли
Автор: AlterAleks
Дата сообщения: 10.11.2010 17:17
Есть проблемка.
EhLib 5.3. БД - Access. Под Delphi 7-кой.
Когда использую связку TADODataDriverEh + TMemTableEh + TDataSource + TDBGridEh - напрочь не работает фильтр и сортировка - хотя все записи прокручиваются и фильтр формируется при его вызове со всеми последними наворотами. При связке TADOQuery + TDataSource + TDBGridEh и фильтр, и сортировка работают без вопросов, но без НАВОРОТОВ, то бишь без возможности выбирать галочками необходимые значения для фильтра - без TMemTableEh автоматически их не загнать в выпадающий список SubTitleFilter.
Много чего перепробовал - НИКАК. А БЕЗ MEmTableEH - все ОК.
Есть одно подозрение, что кое-что не зарегистрировано - возможно и ошибаюсь на данный счет. Может кто сталкивался с такой ситуацией?
Помогите, пожалуйста.

Где-то порылась таки "собака", аль все дело в "бобине"
Автор: ZBEP
Дата сообщения: 20.11.2010 07:34
Блин вот делаю и ржу (необходимо просто реализовать в гриде авто-установку высоты каждой строки, в зависимости от длины текста в ячейке, который если не влезает по ширине должен переноситься на следующую строку, тем самым увеличивая высоту строки).
Смешно то, что реализуя одно - перестает работать что-то другое.

Если использовать:
DBGridEd1 + ADOConnection1 + ADOQuery1 + DataSource1 + SQLDataDriverEh1 + MemTableEh1
то все выглядит как надо, но изменения вносимые в DBGridEd не сохраняются в базе данных.

Если использовать без MemTableEh1, т.е.
DBGridEd1 + ADOConnection1 + ADOQuery1 + DataSource1
то все нормально сохраняется, но нет переноса строк и авто-высоты строк.

Если использовать код автора, ник которого я не помню:

Код: procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var
ARect:TRect;
AText:string;
RowNumber,NewHeight:integer;
wTxt:integer;
wRect:integer;
nLine:integer;
begin
AText:=Column.Field.AsString;
wTxt :=DBGridEh1.Canvas.TextWidth(AText);
wRect:=(Rect.Right-Rect.Left)-2;
nLine:=Trunc(wTxt/wRect)+0; //Тут вместо 1 выставил 0
if nLine>0 then //что бы не было лишнего отступа внизу каждой строки
begin
RowNumber:=DBGridEh1.DataSource.DataSet.RecNo;
NewHeight:=nLine*TCrackCustomGridEh(Sender).DefaultRowHeight+7;
if NewHeight>TCrackCustomGridEh(Sender).RowHeights[RowNumber] then
begin
TCrackCustomGridEh(Sender).RowHeights[RowNumber]:= NewHeight;
end;
ARect:=Rect;
ARect.Bottom:=ARect.Top+TCrackCustomGridEh(Sender).RowHeights[RowNumber];
WriteTextEH(DBGridEh1.Canvas,ARect,True,1,1,AText,taLeftJustify,tlTop,True,False,0,0,False);
end;
end;
Автор: w3s9w6
Дата сообщения: 25.11.2010 18:53
как в версии 5.2.84 отключить "комбобокс" в STFilter c сортировкой и фильтрами, в свойствах не нашёл...

Страницы: 1234567891011121314151617181920212223

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


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