|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.09.2011, 17:33 | #1 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
Непонятные вызовы AfterScroll вTIBDataset
Приветствую коллег!
Есть Датасет, в котором определены поли. пара которых является fkLookup. В этом датасете, по обработчику AfterScroll, я выполняю некоторые операции. На TIBDataset ссылается TDataSource, на который, в свою очередь, ссылаются TDBGrid и TDBNavigator. При открытии таблицы происходит многократная генерация событий вызывающих обработчик Afterscroll. Я так понимаю, что это связано с тем, что у меня определены поля fkLookup. Может и ошибаюсь. Мне надо, чтоб обработчик AfterScroll вызывался только на фактическую смену курсора в DBGrid. Кто может сказать, где искать решение? |
02.09.2011, 18:02 | #2 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
Некоторые эксперименты опровергли часть подозрений, но внесли новые непонятки.
У IBDataset Определены обработчики BeforeClose и AfterOpen. В BeforeClose я запоминаю позицию зациси для Locate после переоткрытия В AfterOpen Я делаю Locate. Так вот. Если вызываю Locate, Обработчик AfterScroll вызывается 5 раз на Набор Данных, состоящий всего из одной записи. Если не вызывать Locate в AfterOpen , то вне зависимости от числа записей в НД AfterScroll вызывается всего один раз. Но где еще можно вызывать Locate, чтоб не было такого многократного вызова AftelScroll? А может есть лучший способ, чем Locate? |
02.09.2011, 20:27 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.09.2011, 22:02 | #4 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
Спасибо!
Хорошая идея (нечто аналогичное, ранее было опробовано с меньшей результативностью), но все равно вызывается 2 раза. Хотя уже не 5. Убрав Код:
|
02.09.2011, 22:54 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
03.09.2011, 01:49 | #6 | |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
Цитата:
И даже больше, собственно правильный код будет таким Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AfterScroll | MigelCNB | Общие вопросы Delphi | 2 | 26.10.2010 13:18 |
непонятные слова | kupall | Общие вопросы Delphi | 1 | 02.06.2010 22:33 |
Ошибка на событие AfterScroll!!! | $T@LKER | БД в Delphi | 0 | 29.04.2010 19:37 |
Системные вызовы... | bek@rt | Win Api | 2 | 03.05.2007 02:48 |