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

Вниз

Как отловить момент, когда в DBGrid-е перешли на другую запись?   Найти похожие ветки 

 
Bless ©   (2006-07-03 12:58) [0]

Очевидный ответ - написать обработчик события ADODataSet1.AfterScroll.

Но тут имеется один неприятный момент:
если мы находясь посредине грида (не обязательно посредине, лишь бы не на первой(последней) записи), нажимая стрелочки (именно стрелочки, а не home, end), попали на первую (последнюю) запись, то последующее нажатие клавиши вверх (вниз) сгенерирует еще одно событие AfterScroll, хотя мы так и остаемся на первой (последней) записи.

И хотя такое поведение вполне объяснимо, эти два AfterScroll-а с точки зрения моей логики лишние.
Как бы мне отследить, что хотя AfterScroll возник, на другую запись мы не перешли?


 
Ega23 ©   (2006-07-03 13:11) [1]

Посмотри в сторону TDataSource.OnDataChange


 
Плохиш ©   (2006-07-03 13:15) [2]


> Посмотри в сторону TDataSource.OnDataChange

Он тоже два раза вызывается.


 
Плохиш ©   (2006-07-03 13:19) [3]


> Как бы мне отследить, что хотя AfterScroll возник, на другую
> запись мы не перешли?

Проверяй Bof и Eof у DataSet


 
sniknik ©   (2006-07-03 13:20) [4]

> Как бы мне отследить, что хотя AfterScroll возник, на другую запись мы не перешли?
проверяй BOF, EOF. по идее первый переход не взведет этот флаг, а во втором он будет установлен.


 
Bless ©   (2006-07-03 14:08) [5]

проверяй BOF, EOF. по идее первый переход не взведет этот флаг, а во втором он будет установлен.

Но ведь на первую запись и по Ctrl+Home могли переместиться, а в этом случае bof= true сразу.
Я хочу сказать, не всякому bof = true соответствует фальшивый AfterScroll.


 
Плохиш ©   (2006-07-03 15:16) [6]


> Bless ©   (03.07.06 14:08) [5]

Можно узнать, что за обработка проводиться, что для неё критично количество вызовов событий OnAfterScroll?


 
Bless ©   (2006-07-03 17:23) [7]

Плохиш ©   (03.07.06 15:16) [6]>

Есть два грида. В нижнем гриде отображаются некоторые данные, соответствующие текущей строке в верхнем гриде. Короче говоря, master-detail.
Но я не хочу переоткрывать датасет, соответствующий нижнему гриду всякий раз, как изменилась запись в первом датасете, чтоб не гонять ненужные запросы по сети в случае простого скроллирования по верхнему гриду в поисках нужной записи.
Нижний датасет открываю только по даблклику (или Enter-у).
И закрываю, когда на верхнем гриде ушли с текущей записи (OnAfterScroll).
Все нормально. Вот только если человек даблкликнул на первой строчке в верхнем гриде (нижний грид заполнился), а потом (пусть нечаянно) нажал кнопочку "вверх", то AfterScroll закроет нижний грид, хотя запись в верхнем гриде осталась той же.

Это не проблема и  я ее уже решил. Просто хотелось услышать чужие мнения по этому поводу. Всегда есть вероятность, что тривиальный ответ лежит на поверхности, а я его не вижу :)
Короче, я надеялся, а вдруг будет ответ в духе "RTFM, набери слово .... и нажми F1"


 
evvcom ©   (2006-07-03 17:35) [8]

> [7] Bless ©   (03.07.06 17:23)

Надеюсь в нижний грид/датасет ключевой параметр передаешь? Ну и сравнивай его с полем в верхнем гриде/датасете и делай вывод, переоткрывать или нет. Не вижу проблемы.


 
Bless ©   (2006-07-03 19:47) [9]


> evvcom ©   (03.07.06 17:35) [8]
> Не вижу проблемы.



> Bless ©   (03.07.06 17:23) [7]
> Это не проблема и  я ее уже решил.


 
имя   (2006-07-03 21:31) [10]

Удалено модератором


 
ЮЮ ©   (2006-07-04 02:49) [11]


> Медвед   (03.07.06 21:31) [10]

Для закрытия, естественно (см.[7]). Это понятно и ежу  :)


 
Johnmen ©   (2006-07-04 11:49) [12]

>Bless ©

Я бы запоминал значение ключевого поля в BeforeScroll, а в AfterScroll сравнивал с текущим и при несовпадении давил бы деталь (если она активна).


 
имя   (2006-07-04 15:00) [13]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
15-1155559772
rimm
2006-08-14 16:49
2006.09.10
Потоки и поточные преложения...


15-1155117731
Аноним
2006-08-09 14:02
2006.09.10
Есть ли в Windows возможность использовать несколько мышей?


2-1156214930
Ref
2006-08-22 06:48
2006.09.10
Отчет


15-1155627978
umbra
2006-08-15 11:46
2006.09.10
вопрос про статическую библиотеку и С


9-1115392165
OSokin
2005-05-06 19:09
2006.09.10
А не устраивать ли нам небольшие конкурсы по кодингу? (ч.4)