Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.012 c
15-1166079260
Loginov Dmitry
2006-12-14 09:54
2007.01.07
Поиск компоненты для формирования путевых отчетов


15-1166346627
ferr
2006-12-17 12:10
2007.01.07
Регулярные выражения.


2-1166371759
sinus
2006-12-17 19:09
2007.01.07
рисование иконки в Statusbar


15-1165336072
vrem
2006-12-05 19:27
2007.01.07
Тарелку - ставить или не ставить?


15-1165746996
Смаг
2006-12-10 13:36
2007.01.07
Путин





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский