Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

Как отследить передвижение по записям в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
4-56963
V-A-V
2003-09-19 10:23
2003.11.17
Сохранение проиаттаченых файлов из потовых сообщений формата MSG


1-56751
Aleksandr
2003-11-06 14:29
2003.11.17
Кому и когда надо делать Canvas.Lock?


8-56776
esidenko
2003-07-21 17:09
2003.11.17
Кто-нибудь работал с видеоформатом


1-56717
Fox Mulder
2003-11-06 04:04
2003.11.17
Кнопки мыши


1-56692
ilka
2003-11-07 16:38
2003.11.17
c VB на Delphi





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