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

Вниз

Как отследить передвижение по записям в DBGrid   Найти похожие ветки 

 
Vick   (2003-10-29 12:42) [0]

Доброго всем дня!!
Есть такая ситуация: при перемещении курсора от записи к записи в DBGrid нужно выполнять какие-либо определенные действия. Вешаю выполнение этих действий на событие MyDataSet.AfterScroll - работает отлично, но возникает одна фигня. Когда я пытаюсь включить фильтр (runtime - фильтрация происходит динамически, в зависимости от того, какое поле выберешь) либо выключит его, то происходит значительное замедление работы фильтрации в связи с тем, что отрабатывает AfterScroll. Может есть какая-либо альтернатива этому событию, чтобы она не срабатывала на обновление ДатаСета, а только на перемещение по записям???


 
Vlad   (2003-10-29 12:46) [1]

Ставь флаг в AfterScroll, когда не нужно чтоб это событие срабатывало, ставь флаг=false, а в AfterScroll пропиши строчку:
if not flag then exit;


 
bushmen   (2003-10-29 12:46) [2]

А если сделать отслеживание не по DbGrid, а по ADOQuery (или что ты используешь) - OnMoveComplete


 
Sandman25   (2003-10-29 12:46) [3]

with DataSet do
begin
AfterScroll := nil;
try
Filtered := false;
Filter := ...
Filtered := True;
finally
AfterScroll := MyAfterScroll;
end;
end;


 
AlexGUEST   (2003-10-29 13:03) [4]

А если отслеживать на TDataSource.OnDateChange?


 
Vick   (2003-10-29 13:09) [5]

Ребят, есть одна большая фигня - это ClientDataSet!!!!


 
Vlad   (2003-10-29 13:13) [6]

>Vick © (29.10.03 13:09) [5]
И что ? В чем разница ?
Варианты [1], [3] разве не подходят ?


 
Vick   (2003-10-29 13:18) [7]

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


 
Vlad   (2003-10-29 13:23) [8]

>Vick © (29.10.03 13:18) [7]
Код можно ?


 
Vick   (2003-10-29 13:32) [9]

код отключения фильтра

procedure TCoolWindowPopupM.DelFilterItemClick(Sender: TObject);
begin
if CurData <> nil then
CurData.Filtered := false;
end;


код AfterScroll

procedure Tw_Rashod_Nakl.cdsDOC_TABLESAfterScroll(DataSet: TDataSet);
begin
////Выполняю разные процедуры (например подсчет остатка на сладе товара, на котором стоит курсор)
end;


Фильтр и AfterScroll находятся в разных формах, т.к. форма с фильтром вызывется во всех отчетах, как параметры ей передается грид и датасет. Как только происходит CurData.Filtered := false, сразу срабатывает AfterScroll.


 
AlexGUEST   (2003-10-29 13:34) [10]

TDataSource.OnDateChange срабатывает при редактировании поля, при передвижении со строки на строку и при перемещении между полями.
Не подходит?


 
Sandman25   (2003-10-29 15:11) [11]

> Как только происходит CurData.Filtered := false, сразу срабатывает AfterScroll.

Естественно. Именно поэтому см. [3] Sandman25 © (29.10.03 12:46)



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

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

Наверх




Память: 0.46 MB
Время: 0.01 c
1-56752
Pattern
2003-11-05 13:44
2003.11.17
ScrollBar окна


3-56466
ИМХО
2003-10-15 09:55
2003.11.17
Сортировка TDBGrid по щелчку


6-56804
BlackSun
2003-09-21 19:11
2003.11.17
Ras+определение скорости коннекта


4-56969
npAKTuk
2003-09-23 15:05
2003.11.17
отлов состояния мышки


1-56740
Aleksandr
2003-11-06 16:50
2003.11.17
Как отправить потоку сообщение?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский