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

Вниз

Событие при прокрутке DBGrid...   Найти похожие ветки 

 
Asail   (2005-12-11 17:14) [0]

Здрасте!
Есть dbGridEh, какое событие можно использовать для отслеживания перемещения в таблице между записями.
Важно, чтобы событие генерировалось только при перемещении с помощью грида, а не внутри кода (т.е. TTable.Next, TTable.Last и т.д.)
Спасибо!!!


 
sniknik ©   (2005-12-11 17:30) [1]

дополнительный флаг вводи, на разделение. т.к. событие не дублируется.

procedure TForm.TableAfterScroll(DataSet: TDataSet);
begin
 if isNoAuto then begin
    ...
 end;
end;

isNoAuto:= false;
TTable.Next;
isNoAuto:= true;

хотя... dbGridEh... кто его знает, может в нем и ввели. не пользуюсь, так что что в нем "лишнего" навводили точно сказать не могу.


 
Asail   (2005-12-11 18:11) [2]

А другого варианта нет?
Очень неохота бегать по всей проге и выискивать, куда ставить флаг.
Да и помнить про этот флаг надо, когда буду изменять чего.
Некрасиво как-то...
Но, за совет - спасибо!


 
sniknik ©   (2005-12-11 18:35) [3]

> А другого варианта нет?
есть, но наверное посложнее будет...
сделать наследника от грида и вести там это событие, в самом гриде олавливать действия приводяшие к смене записи (нажатия на клавиши, события от скролбара, //может чегото еще) проверять действительно ли это событие привело к скроллированию(к примеру нажатие клавиши вниз на последней записи(eof) не приведут к скролу) и вызывать свое самодельное событие если оно попределено. (в общем ничего невозможного, но потруднее... ;)


 
Desdechado ©   (2005-12-11 19:57) [4]

можно и без флага обойтись
например, при внутрикодовом перемещении делать DisableControls, а в обработчике проверять его
хотя, по сути, тот же флаг...


 
sniknik ©   (2005-12-11 21:04) [5]

если сделать DisableControls то отключатся контролы,  тот же грид. а событие скролинга у таблици...
т.е. ничем не поможет. все одно будут происходить.


 
Desdechado ©   (2005-12-11 21:30) [6]

Имелось ввиду, что в обработчике события проверять, отключено или нет отображение. Если отключено, то это внутрикодовое перемещение по записям, если нет - то визуальное.
А отключать отображение только на время внутрикодовых движений по записям, а потом включать. Вот.

Только блымать сильно будет :(


 
sniknik ©   (2005-12-11 22:43) [7]

> Имелось ввиду, что в обработчике события проверять, отключено или нет отображение.
аааа... проверку в событии на ControlsDisabled делать вместо флага...

> Только блымать сильно будет :(
да нет, наоборот, в таком виде хорошая идея, на большинство операций (поиск/сортировка/цикл по таблице/...) и так контролы отключаеш. постаратся только не делать "мелких" переходов в один нехт. а для остального даже правильнее контролы отключать. хороший стиль выработается.


 
ЮЮ ©   (2005-12-12 08:02) [8]

Отключение контролов не отключит вызова обработчика DataSet-а. В тех же случаях, когда ксть желание отключить обаботчик в тексте кода, лучше делать так:

Table.AfterScroll := nil;
try
 // теперь манипуляции с Table не вызовут обработчик AfterScroll
finally
 Table.AfterScroll :=  TableOnAfterScroll;
end;


 
Anatoly Podgoretsky ©   (2005-12-12 08:39) [9]

Да надо просто постановку сменить, что то не так


 
msguns ©   (2005-12-12 09:38) [10]

Судя по всему проблема в том, что периодически надо "ножками" "бегать" по НД (перебор записей с подсчетом, "закладки", поиски и т.д.) и в этом случае
отключать обработку AfterXXXX.
ИМХО, решается так, как уже было сказано ввкерху - с помощью Disable/EnableControls датасету



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

Форум: "Базы";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
15-1137795529
Ермак
2006-01-21 01:18
2006.02.12
А.С. Панарин "Интеллигенция и стратегия развития России"


9-1125143823
DR0N
2005-08-27 15:57
2006.02.12
Лампочки...


15-1137657018
Kostik
2006-01-19 10:50
2006.02.12
Delphi 8


3-1134573689
CarlCorey
2005-12-14 18:21
2006.02.12
пороблемы с MySQL


15-1138013180
DmitriyR
2006-01-23 13:46
2006.02.12
Дали задание написать простой E-Mail сервер





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