Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];
ВнизКак отследить перемещение к предыдущей записи набора данных? Найти похожие ветки
← →
dimon777 © (2006-12-19 15:28) [0]Необходимо при перемещении к предыдущей записи набора данных выполнять некоторое действие. Пытаюсь работать с событием Table.AfterScroll. Как в этом случае распознать когда пользователь перемещается к предыдущей записи ("вверх" по набору данных), а когда к следующей ("вниз")?
← →
Desdechado © (2006-12-19 15:34) [1]в before scroll запоминать текущую, в afterscroll сравнивать запомненное с новой
хотя странная задача...
← →
dimon777 © (2006-12-19 15:55) [2]Странная, конечно, кто ж спорит :)
Это связано с глюком со свойством DBGridEh.Columns.HideDuplicates:=True в версии EhLib4.1. При перемещении "вверх" по набору данных появляются горизонтальные линии на столбце, которых не должно быть. Вот я и пишу в событии Table.AfterScroll
DBGridEh1.Columns[2].HideDuplicates:=False;
DBGridEh1.Columns[2].HideDuplicates:=True;
Извращение, конечно, но помогает. Можешь посоветовать что-то получше?
← →
Anatoly Podgoretsky © (2006-12-19 16:04) [3]> dimon777 (19.12.2006 15:55:02) [2]
Зачем для этого определять направление?
← →
dimon777 © (2006-12-19 16:12) [4]При перемещении сверху вниз этого глюка нет, он появляется только если перемещаться снизу вверх. Зачем же нагружать лишними событиями?
← →
Anatoly Podgoretsky © (2006-12-19 16:16) [5]> dimon777 (19.12.2006 16:12:04) [4]
Ну мучайся, кроме того обработка событий и анализ это не бесплатно.
← →
dimon777 © (2006-12-19 16:37) [6]>Anatoly Podgoretsky © (19.12.06 16:16) [5]
Само собой. Grid при обработке этих событий иногда "мерцает" т.е. иногда заметно как он прорисовывает горизонтальные линии на этом столбце, а потом убирает. Зачем же ему мерцать еще и при перемещении "вверх" по набору данных?
Конечно эффективней было бы глянуть в Ehlibовские исходники и исправить то, почему этот глюк появился в 4.1, ведь в 3.6 его не было. Но мне не удалось понять его причину... Пусть Большаков сам разбирается.
← →
Anatoly Podgoretsky © (2006-12-19 16:40) [7]> dimon777 (19.12.2006 16:37:06) [6]
Может вместо того, чтобы чесать левое ухо правой рукой заняться первопричиной, оно правильнее.
← →
dimon777 © (2006-12-19 17:04) [8]> Anatoly Podgoretsky © (19.12.06 16:40) [7]
Для меня исходники EhLib слишком сложная вещь.
Ну открыл я DBGridEh.pas версий 3.6 и 4.1. Поиск по F3 "HideDuplicates" выявил следующие отличия:
1) function HaveHideDuplicates: Boolean; в версии 4.1 объявлена в разделе protected TCustomDBGridEh = class, а в версии 3.6 в procedure TCustomDBGridEh.Scroll(Distance: Integer);
2) В 4.1 procedure TCustomDBGridEh.Scroll(Distance: Integer);
заремлено
(*if (FooterRowCount > 0) then
begin
ClipRegion := BoxRect(0, TopDataOffset, ColCount - 1, RowCount - FooterRowCount - 2);
ClipRegion.Right := ClientWidth;
WindowsScrollWindowEx(Handle, 0, -RowHeight * Distance, NewRect, ClipRegion,
0, {nil,} SW_Invalidate);
end else*)
WindowsScrollWindowEx(Handle, 0, -RowHeight * Distance, NewRect, NewRect,
0, {nil,} SW_Invalidate);
3)В этой же процедуре в версии 4.1 NewRect := BoxRect(0, TopDataOffset, ColCount - 1, RowCount-1);
а в 3.6 NewRect := BoxRect(0, TopDataOffset, ColCount - 1, 1000);
Мне вобщем это ни о чём не говорит.
Как вообще понять как происходит отрисовка Gridа? В какой последовательности происходят все события?
Отладчик не "вываливается" в модули DBGridEh, если идти по F7 -Trace into
← →
Anatoly Podgoretsky © (2006-12-19 17:13) [9]> dimon777 (19.12.2006 17:04:08) [8]
Если ты обнаружил глюк то надо сообщить об этом авторам.
← →
dimon777 © (2006-12-19 17:22) [10]>Anatoly Podgoretsky © (19.12.06 17:13) [9]
Сообщил, еще где-то в октябре.
У EhLib редко выходят обновления.
У Дмитрия Большакова, как пишут на форуме EhLib, ребёнок недавно родился (Что, конечно, здорово, и мои поздравления ему), но забот ему сейчас тем более хватает. Когда это руки дойдут до исправления.
Вот и пытаюсь пока самостоятельно как-то исправить ситуацию.
← →
MsGuns © (2006-12-19 17:36) [11]А без Ух! либа никак нельзя, эге ж ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c