Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.07;
Скачать: CL | DM;

Вниз

Как отследить перемещение к предыдущей записи набора данных?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1163146202
inkvizitor
2006-11-10 11:10
2007.01.07
Массив из Мемо


15-1166001006
ocean
2006-12-13 12:10
2007.01.07
100 худших фильмов


2-1166528411
niko
2006-12-19 14:40
2007.01.07
Выгрузка dll


2-1166517310
vitv
2006-12-19 11:35
2007.01.07
Создание круглой кнопки


2-1166377775
Святослав
2006-12-17 20:49
2007.01.07
drag and drop