Главная страница
    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
6-56799
Morg
2003-09-20 11:51
2003.11.17
Ошибка с Stream


6-56784
Юстос
2003-09-23 12:45
2003.11.17
Как написать DNS сервер


14-56837
Bovdur
2003-10-27 14:50
2003.11.17
размер ехе-шника.


1-56593
KSergey
2003-11-05 15:02
2003.11.17
Про грид и InplaceEdit


1-56555
Poof-poof
2003-11-08 01:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский